Settings

School years

Here you can maintain the list of school years.

When a new schoolyear is created, all children which already exist in the system will automatically be upgraded in their class level for the newly created school year.

[Important]Important

The reference schoolyear for the upgrading is the one that has been created at last as it is supposed to be the most recent schoolyear. It can be recognized as it has the highest "id".

In order to use this functionality, the class levels and their order must be defined in the list of class levels. If a class is marked as a final class the child will not be upgraded in its class level and will not appear in the list of children for the newly created school year – it has finished the school.

Class levels

This list is necessary for the automatic upgrading of the class level of the children when creating a new schoolyear. After the class level marked as “final” no upgrading takes place – which means the child has finished the school.

Class names

This list defines the possible class names that you can select when editing the data of a child.

Service categories

Before you can create any course or service, you must have created "service categories". Service categories have the following sense:

  • They predefine accounting information (for the invoice item generation during an invoicing run): account credit, cost center and cost carrier.

  • They help you to classify your services and courses for an easier overview in lists

    [Important]Important

    If you do not define any account credit, cost center or cost carrier in an individual course or service, the system will derive the values from the corresponding service category during the invoicing run.

Preferences

Here some basic data for the PA-Administration application can be maintained, as e.g. the school year to use when a user logs into the system or any predefined cancelation fees for services.

Table 5.2. List of preferences for the PA-Administration module
Parameter Description
Default schoolyear after login When a user enters into the system he will automatically see all data corresponding to this schoolyear.
Generate debitor number When a new data record for parents is being created or imported, the system automatically checks for the highest debitor number in the database until now and generates an increased number that will be automatically be preset for the new record.
Service cancelation period (days) Preset default value when a new service or course is being created.
Service cancelation fee Preset default value when a new service or course is being created.
Publish courses / services Courses and services can be published via a XML interface (like a RSS feed). But inly curses and services in the state "published" will be published. If this flag is not set, then the XML interface will deliver an empty list, independently from the state of the course or service.
Publish for schoolyear The schoolyear of which the courses should be published.
School address (for geocoding) Enter here the address of the school (e.g. Elise-Aulinger-Str. 21; 81739 München; Deutschland). The system will automatically calculate via geocoding the latitude and longitude of the schools address. The system will use that information to calculate the shortest distance to the school (routing through streets - not the direct line) when creating parents or editing a parents address.

Pricing rules

Some services may not have a fixed pricing, but a pricing that must be individually calculated for each participant. An example is the schoolbus price, depending on the distance from the school. For these services you can define princing rules which allow you to define logically complex rules yourself.

In order to do so you need to have some know how a script language called "Liquid" which enables you to:

  • use variables

  • Do some basic programming logics

You need to read the following small manual carefully in order to design your own pricing rules.

[Tip]Tip

You can find a complete overview on the usage of "Liquid" for designers under

http://wiki.github.com/tobi/liquid/liquid-for-designers

Creation of a new pricing rule

The following fields are necessary to define a pricing rule:

  • Name: Define a descriptive name for the rule

  • Description: Here you can describe the logic in words in order to get a better understanding of how the rule must calculate a price.

  • Pricing rule: Here you must enter the pricing rule in liquid format, mixing it with variables and any processing instructions.

The following variables can be used for the pricing rules. They can be introduced into your rule with curly double brackets like {{header}}:

Table 5.3. available variables for designing pricing rules
Object variable name Description
Parents zip The zip code of the parents address
distance The distance to the school via streets in meters
Child < will be added on request >
Service < will be added on request >
Service registration < will be added on request >

An example for the "bus price by distance" could look like:

{% capture ziplong %}{{zip}}#####{% endcapture %}
{% capture zipshort %}{{ziplong|truncate:5}}{% endcapture %}
{% case zipshort %}
  {% when '81...' or '80...' %}
    0
  {% else %}
    {% if distance < 5000 %} 
      5
    {% elsif distance < 10000 %}
      10
    {% elsif distance < 15000 %}
      15
    {% elsif distance < 20000 %}
      20
    {% elsif distance < 25000 %}
      25
    {% else %}
      300
    {% endif %}
{% endcase %} 

In the above example we assign to the variable "ziplong" the value of "zip" and add some hashes to make the string longer.

Then we assign to the variable "zipshort" the value of "ziplong", but truncating it to 5 characters. This means that "80345#####" gets converted to "80...".

If a zip code starts with "80" or "81" (which means that "zipshort" must be "80..." or "81...", then the price is 0.

Otherwise the price depends on the "distance" in meters.

[Note]Note

Commas must be written with a point - like e.g. 10.05 would be a valid number. If the result of a pricing rule is not a number, then the system converts the value to 0 when calculating a price.

Import children and parents

In order to avoid the time consuming manual entering of your data, it is possible to import the data of parents and children in a very safe way. If any error occurs, no data will be created or changed in the database.

[Note]Note

The data import is processed in the background after the initial upload, as it can take some minutes to import all data - depending on the amount of data.

Refresh once in a while the list of imports to check if the import has finished.

Define the import

With this functionality, children and parents can be uploaded together in a mass upload and the system can link them automatically together via a “match field”. The “match field” is a column which must exist in both CSV files and which has the same value for parents and children rows. Just indicate the name of the column that will serve as the match field.

Also mass updates of entries already existing in the database can be done via this functionality, but then some rules must be respected.

The upload of the data is specific for the currently selected schoolyear as some parents and children data depends on the schoolyear (e.g. membership of parent or the class level of a child).

The system will upload the files and at first do a test run to check for any errors.

  • If no errors are found, then the data will be automatically imported into the database.

  • If any errors are found, no data will be imported at all and the found errors can be seen in the Errors field of the stored upload information, so that they can be fixed by the user in the CSV files.

During the import, the following data are eventually generated automatically:

  • If no membership information is given, then the parents will automatically be created with the flag "member" set.

  • If in the preferences menu of the PA-administration module it is defined that the system should generate a debitor number for new parents, then the system automatically creates a new debitor number for the newly imported parents. The automatic numbering starts following to the highest number existing already either in the database or in the list of parents that will be imported.

Overwrite existing data by a mass import

You can also overwrite existing data by a mass import of parents and children.

[Important]Important

Fields that are left blank in the import file will not overwrite any value in the database records

The following table explains in which priority and how data records are matched with values from the CSV file, so that the system can find the corresponding existing data record in the database for overwriting the parents and the children:

Table 5.4. List of rules to identify already existing records
Element Match priority Identifying field(s) Matching algorithm
Parents 1 id At first, the system checks if the CSV file with the parents data contains a column "id". In this case the system searches for existing records with the given ID and overwrites them. If the record with the given ID cannot be found, an error is given back.
Parents 2 debitor_no If the column "id" is not given, but a column "debitor_no" exists in the CSV file with the children data, then the system uses this number to identify already existing records and overwrites them.
Parents 3 email_father If no successful match was possible until now, at next the "email_father" field will be used to match, if this field has a value in the CSV import file.
Parents 4 email_mother If no successful match was possible until now, at next the "email_mother" field will be used to match, if this field has a value in the CSV import file.
Children 1 id At first, the system checks if the CSV file with the children data contains a column "id". In this case the system searches for existing records with the given ID and overwrites them. If the record with the given ID cannot be found, an error is given back.
Children 2 name, surname, dateofbirth If no record could be found via the "id", either because no "id" was given in the CSV file or because it could not be found in the database, then the system tries to match a child record via the fields "name, surname, dateofbirth".

The structure of the CSV import files

The CSV files must comply with the following rules:

  • The columns must be separated by the column separator sign

  • The first line of each CSV file must contain the column names (as headers). The order of the columns is not important as the header line indicates which kind of data is stored in which column.

  • The column names must correspond to valid column lines as described here later on – otherwise they will be ignored during the upload

  • If a column exists with the name ID and if there is a value present in a line, then the system will search for existing database entries with this ID and give an error if they are not found. This way mass updates of data can be done when they have been exported as CSV files before from the parents or children table which contain the database IDs of each entry

[Tip]Tip

If you do a CSV export of the parents and the children (e.g. in the demo client if you do not have any own data yet), you will get exactly the format that you need.

This also a good way to do mass updates of data with the help of a spreadsheet program outside the system and then import them again.

The format definition for special field types is the following:

Table 5.5. format for field types
Field type Format
boolean "WAHR","TRUE","YES","JA","SI","1",1,true,"wahr","true","yes","ja","si", "FALSCH","FALSE","NO","NEIN","0",0,false,"falsch","false","no","nein"
date DD.MM.YYYY

Column names for the parents CSV file

The CSV file with the parents data must consist of the following column headers and column value formats. The order is not important and only those columns must be provided that you need.

Table 5.6. Column names and data formats for the parents CSV file
Column name Description Data type / max. length / format
id Id of the data record in the database. integer
debitor_no Debitor number as in an accounting system. Must be unique if provided. string, 30
namefather Name of the father. string, 50
surnamefather Surname of the father. string, 50
email_father Email of the father. string, 50
namemother Name of the mother. string, 50
surnamemother Surname of the mother. string, 50
email_mother Email of the mother string, 50
street Street string, 100
houseno Number of the house string, 25
city City string, 50
zip ZIP code of the city string, 8
country Country ISO 3166 code string, 2
language Language code. Must be one of the currently available system languages "de", "en", "es" string, 2
telephone Telephone at home string, 25
jobroom Room at the job string, 10
jobtelephone Telephone at the job string, 20
publishaddress May the address be published in the pupils list ? boolean
publishaddressinclass May the address be published in the list of children of the schoolclass ? boolean
paymentmethod_id The paymentmethod. Can be given as the id or as the text of the paymentmethod. In any case it must be a valid entry of the table for paymentmethods. Integer / string, 50
maxinstalment Payment with a maximum instalment amount (instalments must be handled by the accounting software) boolean
accountnumber Accountnumber for the invoicing in the accounting software string, 50
accountholder Name of the account holder string, 50
bankcode Bank code string, 50
bankname Name of the bank string, 50
bankcity City of the bank string, 50
bankswift SWIFT Code of the bank string, 50
bankiban IBAN / BIC of the bank string, 50
agbread Did the parents read the general conditions of the parents association ? boolean
comment Any comment string, 65535
pamember If the parents are members of the parents association boolean
pasupportingmember If the parents are supporting members of the parents association boolean
< any free name for a match column> A special column that will be used to match the parents with children. You can also use any of the other columns for that purpose. string (any length, as it will not be stored in the database)

Column names for the children CSV file

The CSV file with the children data must consist of the following column headers and column value formats. The order is not important and only those columns must be provided that you need.

Table 5.7. Column names and data formats for the children CSV file
Column name Description Data type / max. length / format
id Id of the data record in the database. integer
name Name of the child. string, 50
surname Surname of the child. string, 50
language ISO 639-1 language code string, 2
dateofbirth Date of birth date
classlevel Class level of the child (for the currently selected schoolyear string, 30
classname Class name of the child (or language section) (for the currently selected schoolyear) string, 30
comment Any comment text string, 65535
< any free name for a match column> A special column that will be used to match the parents with children. You can also use any of the other columns for that purpose. string (any length, as it will not be stored in the database)