Difference between revisions of "AdminDoc2.1"

Jump to: navigation, search
(Example)
(Pricing)
 
(32 intermediate revisions by 2 users not shown)
Line 7: Line 7:
 
Currency pattern is built with the currency symbol defined by the user
 
Currency pattern is built with the currency symbol defined by the user
  
{| class=wikitable border="1" cellpadding="5" cellspacing="0
+
{| {{prettytable}}
!rowspan="2" style="background:#ffdead;" |Pattern||rowspan="2" align="center style="background:#ffdead;"|Symbol
+
!rowspan="2" |Pattern||rowspan="2" align="center"|Symbol
!colspan="2" align="center style="background:#ffdead;"|Separator||rowspan="2" align="center style="background:#ffdead;"|Example||rowspan="2" style="background:#ffdead;"|Some countries
+
!colspan="2" align="center"|Separator||rowspan="2" align="center"|Example||rowspan="2"|Some countries
 
|-
 
|-
!style="background:#ffdead;"|Decimal||style="background:#ffdead;"|Thousand
+
!|Decimal|||Thousand
 
|-
 
|-
 
|$#,##0.00;$-#,##0.00||before||comma||dot||$-1,234.56||Defaut, USA, England, Yen
 
|$#,##0.00;$-#,##0.00||before||comma||dot||$-1,234.56||Defaut, USA, England, Yen
Line 123: Line 123:
  
 
  to round with 10 hundredths : roundCeil(X,60)
 
  to round with 10 hundredths : roundCeil(X,60)
 
  
 
==Flight hour computation formula==
 
==Flight hour computation formula==
{| {{prettytable}}
+
Authorized variables:
!Variable name!!description
+
*[[CommonFormula#.25DURATION|%DURATION]]
|-
+
*[[CommonFormula#.25COUNTER_DEPARTURE|%COUNTER_DEPARTURE]]
|%DURATION||flight time input into the form
+
*[[CommonFormula#.25COUNTER_ARRIVAL|%COUNTER_ARRIVAL]]
|-
+
|%COUNTER_DEPARTURE||counter departure input into the form
+
|-
+
|%COUNTER_ARRIVAL||counter arrival input into the form
+
|}
+
  
{| {{prettytable}}
+
Authorized functions:
!Function!!description!!Example
+
*[[CommonFormula#max.28a.2Cb.29|max(a,b)]]
|-
+
*[[CommonFormula#min.28a.29|min(a,b)]]
|max(a,b)||return the maximum between a and b
+
*[[CommonFormula#abs.28a.2Cb.29|abs(a)]]
|-
+
*[[CommonFormula#roundCeil.28a.2Cb.29|roundCeil(a,b)]]
|min(a,b)||return the minimum between a and b
+
|-
+
|abs(a)||return the absolute value of a
+
|-
+
|roundCeil(a,b)||return the a value round top to b||roundCeil(106,5) return 110
+
|}
+
  
 
==Flight hour computation examples==
 
==Flight hour computation examples==
Line 190: Line 178:
 
=Pricing management=
 
=Pricing management=
 
==Pricing management formula==
 
==Pricing management formula==
The formula knows following variables:
+
*[[CommonFormula#conditional_processing|conditional processing]]
{| {{prettytable}}
+
*[[CommonFormula#conditional_processing_with_operator_OR.2FAND|conditional processing with operator OR/AND]]
!Variable name!!Description!!Category
+
|-
+
|%DURATION||Calculated duration recorded for the flight||Pricing
+
|-
+
|%COUNTER_DEPARTURE||counter departure recorded for the flight||Pricing
+
|-
+
|%COUNTER_ARRIVAL||counter arrival recorded for the flight||Pricing
+
|-
+
|%NOW_DATE||date of the input flight||Pricing / Sale Pricing
+
|-
+
|%START_DATE||date of the begin of the flight||Pricing / Sale Pricing
+
|-
+
|%USER_TZ||User timezone||Pricing / Sale Pricing
+
|-
+
|%ENTITY_TZ||Entity timezone/Club default timezone||Pricing / Sale Pricing
+
|-
+
|%PILOT||The pilot id||Pricing
+
|-
+
|%USER_ID||The user id||Sale Pricing
+
|-
+
|%QTY||Quantity||Sale Pricing
+
|-
+
|%ACCOUNT1||Debit account id||Pricing
+
|-
+
|%ACCOUNT2||Credit account id||Pricing
+
|}
+
  
{| {{prettytable}}
+
===Pricing===
!Function!!Description!!Example
+
Authorized variables:
|-
+
*[[CommonFormula#.25DURATION|%DURATION]]
|max(a,b)||return the maximum between a and b
+
*[[CommonFormula#.25COUNTER_DEPARTURE|%COUNTER_DEPARTURE]]
|-
+
*[[CommonFormula#.25COUNTER_ARRIVAL|%COUNTER_ARRIVAL]]
|min(a,b)||return the minimum between a and b
+
*[[CommonFormula#.25PILOT|%PILOT]]
|-
+
*[[CommonFormula#.25NOW_DATE|%NOW_DATE]]
|abs(a)||return the absolute value of a
+
*[[CommonFormula#.25START_DATE|%START_DATE]]
|-
+
*[[CommonFormula#.25ACCOUNTING_START_DATE|%ACCOUNTING_START_DATE]]
|roundCeil(a,b)||return the a value round top to b||roundCeil(106,5) return 110
+
*[[CommonFormula#.25USER_TZ|%USER_TZ]]
|-
+
*[[CommonFormula#.25ENTITY_TZ|%ENTITY_TZ]]
|formatDate('pattern',%SOME_DATE)||return the formatted %SOME_DATE||formatDate('%w',%START_DATE) returns the day of week of START_DATE
+
*[[CommonFormula#.25ACCOUNT1|%ACCOUNT1]]
|-
+
*[[CommonFormula#.25ACCOUNT2|%ACCOUNT2]]
|addTime(%SOME_DATE, %SOME_TZ)||Returns %SOME_DATE with added time depending of %SOME_TZ||addTime(%NOW_DATE, %USER_TZ) returns the current date converted to user timezone by adding timezone time difference
+
|-
+
|subTime(%SOME_DATE, %SOME_TZ)||Returns %SOME_DATE with substracted time depeding of %SOME_TZ||subTime(%NOW_DATE, 'Europe/Paris') returns the current date converted to France timezone by substracting timezone time difference
+
|-
+
|sumFlightTime(%PILOT, 'year', 'month', 'day', 'hour', 'minute', 'position' )||Returns the total flight time of a pilot since a starting date. Position at 0 is first pilot, position at 1 is second pilot||sumFlightTime(%PILOT, 2008, 01, 01, 00, 00, 0 ) returns the total flight time of first pilot since 2008-01-01 00:00:00
+
|-
+
|getFlowSumBetweenAccount('accound id 1', 'account id 2', 'start date', 'end date')||Returns the balance difference betweent account 1 and account 2 from a start date to an end date||getFlowSumBetweenAccount(%ACCOUNT1, %ACCOUNT2, '2008-01-01', %NOW_DATE)
+
|}
+
  
===Allowed operators / Conditional operator===
+
Authorized functions:
{| {{prettytable}}
+
*[[CommonFormula#max.28a.2Cb.29|max(a,b)]]
!Operator!!Example!!Result
+
*[[CommonFormula#min.28a.29|min(a,b)]]
|-
+
*[[CommonFormula#abs.28a.2Cb.29|abs(a)]]
|(condition) ? true : false||($DR1 > 100) ? 1 : 0||If variable $DR1 is superior to 100, 1 is returned else 0 is returned
+
*[[CommonFormula#roundCeil.28a.2Cb.29|roundCeil(a,b)]]
|-
+
*[[CommonFormula#sumFlightTime.28.25PILOT.2C_.27year.27.2C_.27month.27.2C_.27day.27.2C_.27hour.27.2C_.27minute.27.2C_.27position.27_.29|sumFlightTime(%PILOT, 'year', 'month', 'day', 'hour', 'minute', 'position' )]]
|OR||( formatDate('%w', %NOW_DATE) == 0 OR formatDate('%w', %NOW_DATE) == 6) ? 100 : 200||Returns 100 if we are on saturday or sunday else it returns 200
+
*[[CommonFormula#formatDate.28.27pattern.27.2C.25SOME_DATE.29|formatDate('pattern',%SOME_DATE)]]
|-
+
*[[CommonFormula#addTime.28.25SOME_DATE.2C_.25SOME_TZ.29|addTime(%SOME_DATE, %SOME_TZ)]]
|AND||( formatDate('%w', %NOW_DATE) > 0 AND formatDate('%w', %NOW_DATE) < 6) ? 100 : 200||Returns 100 if we are not on saturday or sunday else it returns 200
+
*[[CommonFormula#subTime.28.25SOME_DATE.2C_.25SOME_TZ.29|subTime(%SOME_DATE, %SOME_TZ)]]
|}
+
*[[CommonFormula#getBalance.28a.29|getBalance(a,b)]]
 +
*[[CommonFormula#getFlowSumBetweenAccount.28.27accound_id_1.27.2C_.27account_id_2.27.2C_.27start_date.27.2C_.27end_date.27.29|getFlowSumBetweenAccount('accound id 1', 'account id 2', 'start date', 'end date')]]
 +
 
 +
===Sale pricing===
 +
Authorized variables:
 +
*[[CommonFormula#.25NOW_DATE|%NOW_DATE]]
 +
*[[CommonFormula#.25START_DATE|%START_DATE]]
 +
*[[CommonFormula#.25USER_TZ|%USER_TZ]]
 +
*[[CommonFormula#.25ENTITY_TZ|%ENTITY_TZ]]
 +
*[[CommonFormula#.25USER_ID|%USER_ID]]
 +
*[[CommonFormula#.25QTY|%QTY]]
 +
 
 +
Authorized functions:
 +
*[[CommonFormula#max.28a.2Cb.29|max(a,b)]]
 +
*[[CommonFormula#min.28a.29|min(a,b)]]
 +
*[[CommonFormula#abs.28a.2Cb.29|abs(a)]]
 +
*[[CommonFormula#roundCeil.28a.2Cb.29|roundCeil(a,b)]]
 +
*[[CommonFormula#formatDate.28.27pattern.27.2C.25SOME_DATE.29|formatDate('pattern',%SOME_DATE)]]
 +
*[[CommonFormula#addTime.28.25SOME_DATE.2C_.25SOME_TZ.29|addTime(%SOME_DATE, %SOME_TZ)]]
 +
*[[CommonFormula#subTime.28.25SOME_DATE.2C_.25SOME_TZ.29|subTime(%SOME_DATE, %SOME_TZ)]]
 +
*[[CommonFormula#getBalance.28a.29|getBalance(a,b)]]
 +
*[[CommonFormula#convertTimezone.28.25SOME_DATE.2C_.25SOME_TZ1.2C_.25SOME_TZ2.29|convertTimezone]]
 +
*[[CommonFormula#changeTime.28.25SOME_DATE.2C_.27year.27.2C_.27month.27.2C_.27day.27.29|changeTime]]
  
 
==Allowed timezone==
 
==Allowed timezone==
 
[[allowed_timezone|See here]]
 
[[allowed_timezone|See here]]
===formatDate possible pattern===
 
*  <code>%a  </code>  abbreviated weekday name (Sun, Mon, Tue)
 
*  <code>%A  </code>  full weekday name (Sunday, Monday, Tuesday)
 
*  <code>%b  </code>  abbreviated month name (Jan, Feb, Mar)
 
*  <code>%B  </code>  full month name (January, February, March)
 
*  <code>%C  </code>  century number (the year divided by 100 and truncated to an integer, range 00 to 99)
 
*  <code>%d  </code>  day of month (range 00 to 31)
 
*  <code>%D  </code>  same as "%m/%d/%y"
 
*  <code>%e  </code>  day of month, single digit (range 0 to 31)
 
*  <code>%E  </code>  number of days since unspecified epoch (integer, Date_Calc::dateToDays())
 
*  <code>%H  </code>  hour as decimal number (00 to 23)
 
*  <code>%I  </code>  hour as decimal number on 12-hour clock (01 to 12)
 
*  <code>%j  </code>  day of year (range 001 to 366)
 
*  <code>%m  </code>  month as decimal number (range 01 to 12)
 
*  <code>%M  </code>  minute as a decimal number (00 to 59)
 
*  <code>%n  </code>  newline character (\n)
 
*  <code>%O  </code>  dst-corrected timezone offset expressed as "+/-HH:MM"
 
*  <code>%o  </code>  raw timezone offset expressed as "+/-HH:MM"
 
*  <code>%p  </code>  either 'am' or 'pm' depending on the time
 
*  <code>%P  </code>  either 'AM' or 'PM' depending on the time
 
*  <code>%r  </code>  time in am/pm notation, same as "%I:%M:%S %p"
 
*  <code>%R  </code>  time in 24-hour notation, same as "%H:%M"
 
*  <code>%s  </code>  seconds including the decimal representation smaller than one second
 
*  <code>%S  </code>  seconds as a decimal number (00 to 59)
 
*  <code>%t  </code>  tab character (\t)
 
*  <code>%T  </code>  current time, same as "%H:%M:%S"
 
*  <code>%w  </code>  weekday as decimal (0 = Sunday)
 
*  <code>%U  </code>  week number of current year, first sunday as first week
 
*  <code>%y  </code>  year as decimal (range 00 to 99)
 
*  <code>%Y  </code>  year as decimal including century (range 0000 to 9999)
 
*  <code>%%  </code>  literal '%'
 
  
 
==Pricing management example==
 
==Pricing management example==
Line 317: Line 262:
 
In order to make them work after inputting a flight, you have to set on which flight type and/or aircraft type you want the check to be triggered. For flight type, go to admin menu: flights/flight types then go to section '''Required qualifications (if alone onboard) for a given flight type''' and check the recent experience. For aircraft type, go to admin menu: fleet/aircraft types then go to section '''Aircraft types'''. In qualification column, click onto the image that gonna lead you to a new page then check the recent experience.
 
In order to make them work after inputting a flight, you have to set on which flight type and/or aircraft type you want the check to be triggered. For flight type, go to admin menu: flights/flight types then go to section '''Required qualifications (if alone onboard) for a given flight type''' and check the recent experience. For aircraft type, go to admin menu: fleet/aircraft types then go to section '''Aircraft types'''. In qualification column, click onto the image that gonna lead you to a new page then check the recent experience.
  
==Formula==
+
==Qualification formula==
The formula knows following variables:
+
Authorized variables:
{| {{prettytable}}
+
*[[CommonFormula#.25PILOT|%PILOT]]
!Variable name!!description
+
|-
+
|%PILOT||Pilot id
+
|}
+
 
+
{| {{prettytable}}
+
!Function!!description!!Example
+
|-
+
|sumFlightHour(%PILOT,position,day,aircraftType1,aircraftType2,etc)||return the flight hours for %PILOT
+
|-
+
|sumLandingNumber(%PILOT,position,day,aircraftType1,aircraftType2,etc)||return the landing number
+
|}
+
 
+
position : 0 for first pilot, 1 for second pilot.
+
 
+
Example 1 : if first pilot has done more than 5 landing in the last 30 days on aircraft type 1.
+
  sumLandingNumber(%PILOT,0,30,1) > 5
+
Example 2 : if second pilot has done more thant 5 landing in the last 15 days on any aircraft type.
+
  sumLandingNumber(%PILOT,1,15) > 5
+
  
==Example==
+
Authorized functions:
 +
*[[CommonFormula#sumFlightHour.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumFlightHour('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')]]
 +
*[[CommonFormula#sumLandingNumber.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumLandingNumber('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')]]
  
=Accountancy=
+
=Accounting=
 
[[Account|Accountancy tips and tricks]]
 
[[Account|Accountancy tips and tricks]]
==Formula==
+
==Accounting formula==
 
* Sales variables
 
* Sales variables
{| {{prettytable}}
+
::Authorized variables:
!Variable name!!description
+
::*[[CommonFormula#.25QTY|%QTY]]
|-
+
 
|%QTY||stock item
+
|}
+
 
* Account Export variables
 
* Account Export variables
{| {{prettytable}}
+
::Authorized variables:
!Variable name!!description
+
::*[[CommonFormula#.25MEMBER_NUM|%MEMBER_NUM]]
|-
+
::*[[CommonFormula#.25LASTNAME|%LASTNAME]]
|%MEMBER_NUM||account owner member id
+
::*[[CommonFormula#.25FIRSTNAME|%FIRSTNAME]]
|-
+
::*[[CommonFormula#.25ACCOUNT_TYPE|%ACCOUNT_TYPE]]
|%LASTNAME||account owner last name
+
::*[[CommonFormula#.25AUTO_INCREMENT|%AUTO_INCREMENT]]
|-
+
::*[[CommonFormula#.25AUTHENTICATION_LOGIN|%AUTHENTICATION_LOGIN]]
|%FIRSTNAME||account owner first name
+
|-
+
|%ACCOUNT_TYPE||account type
+
|-
+
|%AUTO_INCREMENT||auto incremental value
+
|-
+
|%AUTHENTICATION_LOGIN||account owner login
+
|}
+
  
{| {{prettytable}}
+
::Authorized functions:
!Function!!description!!Example
+
::*[[CommonFormula#.25substr.28string.2Ca.2Cb.29|substr(string,a,b)]]
|-
+
|substr(string,a,b)||return the portion of string specified by a which represents the starting point (0 being "from the first character") and b which represents the number of character to get .||substr(%LASTNAME, 0, 5)
+
|}
+
  
==Example==
+
==Accounting example==
  
 
===Price item===
 
===Price item===
Line 384: Line 299:
 
===655 + 2nd letter of login + 3rd letter of login===
 
===655 + 2nd letter of login + 3rd letter of login===
 
   655+substr(%AUTHENTICATION_LOGIN, 1, 2)
 
   655+substr(%AUTHENTICATION_LOGIN, 1, 2)
 +
=Alert email=
 +
The goal is to send a warning email to members whose theirs accounts is below the required threshold.
 +
 +
*Go to Settings/Parameters
 +
*Then scroll down to Account management form
 +
**Set the balance threshold
 +
**Choose the frequency recall of the email
 +
**Set the content of the warning email
 +
 +
Authorized variables for email content:
 +
*[[CommonFormula#.25PILOT|%PILOT]]
 +
*[[CommonFormula#.25LASTNAME|%LASTNAME]]
 +
*[[CommonFormula#.25FIRSTNAME|%FIRSTNAME]]
 +
*[[CommonFormula#.25NOWDATE|%NOWDATE]]
 +
*[[CommonFormula#.25USER_TZ|%USER_TZ]]
 +
*[[CommonFormula#.25ENTITY_TZ|%ENTITY_TZ]]
 +
 +
Authorized functions for email content:
 +
*formatDate
 +
*addTime
 +
*subTime
 +
*[[CommonFormula#getBalance.28a.29|getBalance(a)]]
 +
*[[CommonFormula#getAccount.28a.2C_.25PILOT.29|getAccount(a, %PILOT)]]
  
 
=Aircraft Type=
 
=Aircraft Type=
Line 392: Line 330:
 
*Go to Fleet/Aircraft types
 
*Go to Fleet/Aircraft types
 
*then action "modify" for a choosen aircraft type
 
*then action "modify" for a choosen aircraft type
*At the bottom of the page (bellow "Tank" title):
+
*At the bottom of the page (below "Tank" title):
 
**Fill the "Tank" text area with the choosen name (ex: "main tank")
 
**Fill the "Tank" text area with the choosen name (ex: "main tank")
 
**Choose a fuel type and an unit
 
**Choose a fuel type and an unit

Latest revision as of 17:16, 21 January 2011

This page is dedicated to receive admin doc of release 2.1.

Contents

Parameters

Menu "club/parameters"

Account management

Currency pattern

Currency pattern is built with the currency symbol defined by the user

Pattern Symbol Separator Example Some countries
Decimal Thousand
$#,##0.00;$-#,##0.00 before comma dot $-1,234.56 Defaut, USA, England, Yen
#,##0.00$;-#,##0.00$ after comma dot -1,234.56$ Algeria, Maroc
€#.##0,00;€-#.##0,00 before dot comma €-1.234,56 Italy, Belgium
#.##0,00€;-#.##0,00€ after dot comma -1.234,56€ German, Spain, Portuguese
# ##0,00€;-# ##0,00€ after comma space -1 234,56€ French, Russia
Fr#'##0.00;Fr-#'##0.00 before dot quote Fr-1'234.56 Swiss
# ##0€00;-# ##0€00 decimal replaced by symbol space -1 234€56
#,##0$00;-#,##0$00 decimal replaced by symbol comma -1,234$56

If you don't find yours, do not hesitate to advise us!

Create users

To add an user you need first:

  • To create groups (Users/Group) if needed
  • Then you go to Users/Users list and you select "ADD AN USER"

If you see in the user list that some users are displayed on a red background, it means that the field Birthdate/Sex/Nationality are not filled.

Rights list

  • Booking
    • Book alone : allows for user to book an aircraft without an instructor
    • Book anyone : allows for user to book an aircraft for another one (solo booking and/or double one, depending of rights of this third-party. Useful function for the secretary.)
    • Book instructor : allows for user to book an aircraft with an instructor
    • Book unavailable instructor : allows for user to book an aircraft with an instructor even if this one is not available at the time gap (an alert message prevents the user. Useful function for instructors and secretary).
    • Override booking by type : ?
    • Alert : enable booking functionalities like the option "receive any made booking by mail"


  • Common user
    • No auto logout : disables the auto-logout session of ~3 minutes (Useful function for guest/visitor account)
    • Update own personal data : If user can edit some of his personal data (birthdate, nationality, sexe ...)
    • Update own qualifications : allows for user to update himself his qualifications (For instructors. For pilots if the flying club doesn't want to manage those)
    • Manage own qualifications limit : enables update of fields Identifier code, Grant date, Time limit depending if the qualification has those field on/off
    • Aircraft availability management : allows to freeze an aircraft for maintenance or whatsover. It's done by booking the aircraft, an option will be avaible while doing that.
    • Instructor availability management : allows to manage any instructor availability.


  • Common admin
    • Parameter management : allows to edit various parameters for OF like disabling/enabling flight, booking, accounting, etc ...
    • Profile management : Explicit title, let this right to at least one profile (i.e : admin)
    • User management : Explicit title
    • Pool management : Explicit title, user pool
    • Aircraft management : Explicit title
    • Reports : allows to export some reports : member list, flight list, account list, etc ...
    • Statistics management : allows to create home-made reports by writing SQL query.
    • View statistics : allows to view home-made reports
    • Logs management : allows to view logging archive
    • Key management : if option is enabled, allows to manage key


  • Flight management
    • Input flight for oneself : Explicit title
    • Flight filing for others : Explicit title
    • Check and modify flights : allows to view flight logs of anyone, appoint flights, check missing flight
    • View aircraft log book :


  • Account management
    • Account management : With others rights, allows to manager accounts (club, aircraft, member, etc)
    • Input own payments : Explicit title
    • Payment filing for others : Explicit title
    • Modify payment or transfer date : Explicit title
    • Input fueling repayment : Explicit title (seems not working at the moment)
    • Check payments : allows to validate payments
    • Get cash : Explicit title
    • Manage own transfer : Explicit title
    • Transfer from anyone to anyone : Explicit title
    • Flight hours pricing : Explicit title
    • Input pricing values : Explicit title


  • Stocks manager : Coming soon
  • Sales manager : Coming soon
  • Purchases manager : allows to use purchase manager

Create instructors

  • You check the instructor box ("Type of user" in the user form) to choosen users and you don't forget to specify the "Instructors Initials"

Create aircrafts

  • You need first to create aircrafts type as needed (in Fleet/Aircraft types)
  • Then you go to Fleet/Aircraft and you select "ADD AN AIRCRAFT"

Flight hours computation

In all formula, due to difference with interpretation of decimal separator in various personnal computer, all values must to write without decimal separator, use X/Y to obtain correct value

Do not forget that time is given in sexacentimal. So to convert in hours you have to divide by 600.

1 minute = 10 sexacentimals
5 minutes = 50 sexacentimals
1 hour = 60 minutes = 600 sexacentimals
1 hundredth of hour = 6 sexacentimals
10 hundredth of hour (=1 tenth of hour) = 60 sexacentimals

Example: for 100,10 €/h

10010*%DURATION/60000
to round at 5 minutes : roundCeil(X,50)
to round with 10 hundredths : roundCeil(X,60)

Flight hour computation formula

Authorized variables:

Authorized functions:

Flight hour computation examples

Difference of the hours

%DURATION

Difference of the counters

%COUNTER_ARRIVAL - %COUNTER_DEPARTURE

Round difference of the hours at (top) 5 minutes

roundCeil(%DURATION, 50)

Round difference of the hours at (bottom) 5 minutes

roundCeil(%DURATION - 40, 50)

Round difference of the hours at (nearest) 5 minutes

roundCeil(%DURATION - 20, 50)

Difference of the counters plus 5 minutes

%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 50

Round difference of the counters at 10 hundreth

roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 60)

Greater between difference of the hours and difference of the counters

max(%DURATION, %COUNTER_ARRIVAL - %COUNTER_DEPARTURE)

Greater between difference of the hours and round difference of the counters at 5 minutes

max(%DURATION,roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))

Difference of the counters rounded to the nearest 5 minutes

roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE - 25, 50)

Example of results

input value output value
10 10
11 10
12 10
13 15
14 15
15 15

Pricing management

Pricing management formula

Pricing

Authorized variables:

Authorized functions:

Sale pricing

Authorized variables:

Authorized functions:

Allowed timezone

See here

Pricing management example

  • An aircraft with a cost of 94 € per flight hours, will have:
94*%DURATION/600
  • An aircraft with a cost of 110 € per "counter" hours, will have:
110*(%COUNTER_ARRIVAL-%COUNTER_DEPARTURE)/600
  • When it's week-end, the cost (100 €) per flight hours is cut to half, the formula will be:
(formatDate('%w', %START_DATE) == 0 OR formatDate('%w', %START_DATE) == 6) ? 50*%DURATION/600 : 100*%DURATION/600

Qualification

You may define your own qualifications (licence, medical, etc.)

For doing that, you got several parameters available:

Time limitation

For qualifications with a time limitation (pilots will have a date to set for this kind of qualification)

Identifier code management

Add a field for entering the id of the qualification attached to the pilot

Obtaining date management

Add a date field for the obtention date of the qualification

Reserved to instructors

Qualifications reserved to instructors

Blocking qualification

Qualifications will be blocking for flight (not for reservation)

Recent experience: "experience formula"

You may create qualifications checking recent experience like hours or landing number.

Like other qualifications, these ones are managed in the qualification manager (admin menu: users/qualification)

Formula checking recent experience have to be set in the "experience formula" column.

In order to make them work after inputting a flight, you have to set on which flight type and/or aircraft type you want the check to be triggered. For flight type, go to admin menu: flights/flight types then go to section Required qualifications (if alone onboard) for a given flight type and check the recent experience. For aircraft type, go to admin menu: fleet/aircraft types then go to section Aircraft types. In qualification column, click onto the image that gonna lead you to a new page then check the recent experience.

Qualification formula

Authorized variables:

Authorized functions:

Accounting

Accountancy tips and tricks

Accounting formula

  • Sales variables
Authorized variables:
  • Account Export variables
Authorized variables:
Authorized functions:

Accounting example

Price item

 160/100*%QTY

"THING" + unique value for each account

 THING+%AUTO_INCREMENT

711 + 3 first letters of login + unique value

 711+substr(%AUTHENTICATION_LOGIN, 0, 3)+%AUTO_INCREMENT

655 + 2nd letter of login + 3rd letter of login

 655+substr(%AUTHENTICATION_LOGIN, 1, 2)

Alert email

The goal is to send a warning email to members whose theirs accounts is below the required threshold.

  • Go to Settings/Parameters
  • Then scroll down to Account management form
    • Set the balance threshold
    • Choose the frequency recall of the email
    • Set the content of the warning email

Authorized variables for email content:

Authorized functions for email content:

Aircraft Type

Tank

  • Goal: allow to an admin to create as many tanks (by aircraft type) as he needs.
  • Use: for each flight, the pilot would be able to say which quantity has been added for each tank created by the admin, before and/or after the flight.

How to create a tank

  • Go to Fleet/Aircraft types
  • then action "modify" for a choosen aircraft type
  • At the bottom of the page (below "Tank" title):
    • Fill the "Tank" text area with the choosen name (ex: "main tank")
    • Choose a fuel type and an unit
    • Clic on the "Add" button

Reports

Admin are allowed to create their own database SQL extract and to see them on their browser or to save them in an XML file via the "REPORTS" menu.

Get the list of members whom had subscribed this year

SELECT first_name,last_name FROM authentication
RIGHT JOIN member ON member.id=authentication.id WHERE year(member.subscription)=$year
ORDER BY last_name,first_name

User import

You can import member via a CSV file (see details in the concerned page). Here below some particularities with the import file :

  • About sex : use M for male and F for female. Others characters and no value mean undefined sex.
  • About dates : allowed formats are YYYY-MM-DD and DD-MM-YYYY. D represents the day as a two-digits number, M represents the month as a two-digits number and Y represents the year as a four-digits number. In case you specify a bad format, the import will end at the current line where the error was found, leaving a red message. The current member and the following won't be imported.
  • About nationality, use code id. To get code id of your nationality, check here.