AENA Configuration
Introduction
On Spanish airports Resolut POS is connected to the software of Savia to export each sale instantly when the receipt is created.
In general, the software should be compliant with the following rules:
- Create a text file for each sale, refund or aborted transaction
- Use different sequences for sales, refunds, and aborted sales
- Create a total file each day
- Be able to handle Aena specific discounts triggered by a QR code
- Be able to handle Aena specific vouchers triggered by a QR code
- Be able to handle airline vouchers and export the correct carrier info
- Automatic close a shift when it is still open in de evening
- Be able to recreate any file (sales, refund, aborted sales and total) from the POS
- Print specific information on the receipts
- Create XML exports with monthly and yearly totals
- The software may not be changed after certification
To apply for the certification and rules there are limitations:
- It is not possible to open multiple shifts simultaneously, i.e., it is not possible to have 2 cashiers working on two different drawers. But it is possible to have multiple cashiers working on the same shift.
- It is not allowed to have more than 3 different discounts on a single receipt, this is enforced by the software.
- It is not possible to use the discount engine together with the Aena discount engine, only manual and single discount can be configured.
- When a product group is not configured in the product group mapping it cannot be sold, this is enforced by the software.
- It is not allowed to have sales and refunds on a single receipt, this is enforced by the software. By the limitation of the current user interface is will not be possible to refund multiple items on a single receipt.
- The software cannot be updated without visiting Madrid for a new certification.
To configure the software correctly for existing or new locations is further explained in this document.
Architecture
Most of the Aena logic is built into a single plugin AenaInterfacePosPlugin.dll which can be added to the database Plugins table and plugins folder.
The Aena/Savia software must be installed and the folder C:\savia\ventas must be created.
For each sale instantly a text file is created in the ventas folder and uploaded by the software of Savia to their server.
A separate application AenaTicketResender.exe can be used to re-create the text files, this should always be processed on the original point of sale and only be used upon request of Aena.
Both the POS and ticket storage database requires additional tables:
AenaConfiguration | Contractual information per location (shop/airport) needed for the export. |
---|---|
AenaProductgroupMapping | Mapping of product groups vs Aena groups. |
AenaPaymentLine AenaSalesLine AenaSalesTransaction AenaTransaction AenaVatLine | Transactional information. |
AenaConceptCanons | Table needed on ticket storage only |
When a sale, refund of aborted sales is created the information is written in the Aena transactional tables, and the information is queued to be updated in the ticket storage. The POS and ticket storage have the same data, but the storage contains data from all point of sales/locations.
Those extra tables are needed to guarantee an identical re-creation of any text file, even when product groups or mappings change in the configuration.
On the application server monthly and yearly the export is created with the data from the ticket storage.
Resolut setup
Resolut POS version 4.0.7970.0 – Release Spain Aena Branch
AenaInterfacePosPlugin.dll 1.0.1 – PosModule4 Branch
Aena locations require the specific release of Resolut POS 4 mentioned above and is maintained in a specific release (GIT) branch. This version must be installed after a fresh Resolut 4 install.
For a fresh installation, additional tables should be added to the Resolut POS database by the AenaTableCreation.sql script. Further the file Aena Group Mapping.sql must be executed to insert the correct mappings in the AenaProductGroupMapping table.
In the table AenaConfigurations an entry should be added for that store with the Aena contract information, see an example below. The configurations are both needed in the POS database and ticket storage where the ticket storage must have record for all locations.
The data for each configuration (record) must be identical in all databases.
The AenaConfigurationId (first column) must be configurated in parameter Aena.AenaConfigurationId, i.e., value 3.
Auto update
Do not connect Aena installations to any auto update channel, as this would violate the certification.
Sending Aena data to server (update malaga)
We noticed that the current Malaga installation did not synchronize the Aena data to the server, and this should be done during the update. Sending existing Aena data does not apply for new installations.
Update Ticket Storage
Before executing this update both point of sales at Malaga must be stopped (not running), this procedure can only be started when the shop is closed.
Requirements:
- AenaUpdate.zip extracted to an installation (temp) folder, for example C:\aenaupdate
- VNC to the Malaga point of sales
- SQL Enterprise manager query window to database TicketStorageESProd.
- The user must have enough right to create tables.
Duration: ca. 5 minutes
- Be sure that both point of sales at Malaga are signed off before closing the application
- Close the application and verify that Resolut.exe is not running in the task manager.
- Be sure the point of sales will not be started during the process and after this process
- Run the script AenaTablesCreation.sql from the installation folder.
- Run the script TicketStorage_AenaAccessRights.sql from the installation folder.
- Run the script AenaConceptCanons_data.sql from the installation folder.
Steps for update Malaga POS
Both Malaga point of sales must be stopped, this should be already done in the Tickets Storage update process.
Requirements:
- POS.NET 1.14.1 installer
- AenaUpdate.zip extracted to an installation (temp) folder, for example C:\aenaupdate
The actions below can be started before the tickets storage process is started or completed:
-
Be sure that both point of sales at Malaga are signed off before closing the application
-
Close the application and verify that Resolut.exe is not running in the task manager.
-
De-install POS.NET 1.12 and install 1.14.1
-
Set the screen resolution to 1024x768
-
Install Resolut 4 default installation on both point of sales with the latest Resolut 2.5 to 4 update zip and run the updater tool.
DO NOT START RESOLUT.EXE ! -
Copy all files from the Installer/pos folder to the c:/pos folder, this is the specific release for Spain
DO NOT START RESOLUT.EXE ! -
Create the folder /POS/Invoices and copy all files from the Installer/Invoices to this folder
-
Copy the Aena plugin from the Installer/Plugin folder to the c:/pos/plugins folder
-
Copy the file [ClientName]InvoiceLogo.png to the /POS/Media folder
-
Run the MalagaAeanUpdate.sql on the POS database to update the parameters.
-
Run the MalagaConfigurationCorrection.sql on the POS database to correct the configuration and data
Important: The actions below should only be started when the Ticket Storage process was completed.
-
Run the AenaUpdateUploader.exe from the installer/AenaUpload folder on POS 2 first, this POS has just a few Aena records
-
Follow the instructions in “Aena Uploader tool” paragraph.
-
After the upload is completed, Resolut can be started, and the database will be patched.
-
Verify that there are no errors other than described in the upgrade document.
-
Repeat the same step for POS 1, the upload could take
When both point of sales are update the Installer folder can be removed.
Aena uploader tool
Remark: the Aena upload tool is used once for Malaga.
Start the application and verify the server (1) and database (2) are correct, default is local and Posnet and should be correct for a production point of sale.
Click connect (3) followed by upload (4).
The tool shows how many transactions will be uploaded, click ok. During the upload the form may get unresponsive and even show “application not responding”, ignore this message.
The tool will complete with a message “all data uploaded” or with an error message, for example when the connection between POS and database gets disconnected. When the tool is restarted, it will continue from the last transaction.
Press the close button to close the application and the application can be deleted as it is not used anymore for other installations.
New POS installation
Requirements:
- Default Resolut 4 installer not older than 7970, or installer + 7970 update ZIP
- AenaUpdate.zip extracted to an installation (temp) folder, for example C:\aenaupdate
Installation:
- Install the SAVIA export application and create C:\savia\ventas folder. This is documented in an external document.
- Install Resolut 4 installer and update with ZIP 7970.
- Copy all files from the Installer/pos folder to the c:/pos folder, this is the specific release for Spain
- Create the folder /POS/Invoices and copy all files from the Installer/Invoices to this folder
- Copy the Aena plugin from the Installer/Plugin folder to the c:/pos/plugins folder
- Copy the file [ClientName]InvoiceLogo.png to the /POS/Media folder
- Run the script AenaTablesCreation.sql from the installation folder.
- Run the script TicketStorage_AenaAccessRights.sql from the installation folder.
- Run the script AenaConceptCanons_data.sql from the installation folder.
- Run the script Aena Group Mapping.sql from the installation folder.
- Configure or add a configuration on the POS and ticket storage as described in “Aena configurations”
- Important: Open and edit the first two statements in the MalagaAeanUpdate.sql on the POS database to update the parameters.
- Optionally edit the invoice configuration in MalagaAeanUpdate.sql depending on the airport/shop location.
- Execute MalagaAeanUpdate.sql to update the parameters.
- Finish the default configuration the POS for the store (shop id, pos id, etc)
- Start Resolut
New Resolut 4 parameters
AllowMixedSaleRefunds | Must be set to 0, but this is also enforced by the POS. |
---|---|
Aena.AutoEndOfDayUserId | This is the user id (employee id) in case the software performs an automatic end of day. The user must exist in the employees table. |
MaximumItemPrice | 99999 (euro), or lower, no decimals |
MaxReceiptAmount | 9999999 (euro) or lower, no decimals |
Aena.AenaConfigurationId | 1 (must correspondent with an existing record) |
Aena.DiscountsConfig | See section Aena.DiscountsConfig parameter |
Aena.CloseDayTime | 2330 is advised |
Ticket storage parameters:
AenaExport.ClientId | ID of the client (mandatory) |
---|---|
AenaExport.UnitSalesAmnt | Amount fee for each sold piece of item belonging to such category (required only if such items will be sold) |
AenaExport.VarSalesPerc | Percentual fee for each sold piece of item belonging to such category (required only if such items will be sold) |
We do not know the values to be set in those parameters.
Aena Configurations
For each airport/shop a different configuration applies that is configured in the AenaConfigurations table both on the point of sale as in the ticket storage.
The data for each configuration (record) must be identical in all databases.
Configure the AenaConfigurationId in the parameter Aena.AenaConfigurationId.
Qty button
The Qty button cannot be used as it could break the discount rules in the export files. Also the parameter EasyQty may not be set.
Invoice printing
It is required to print a receipt to a laser printer, below the setup of parameters which can be found in MalagaAeanUpdate.sql.
When the parameter TopButtons.UseInvoiceCopy is set to 1, a button will appear at the toolbuttons when a sales receipt is printed to print the sale as invoice.
The name of the laserprinter can be defined in the configuration screen for a list with configured printers, or when printing an invoice the first time. The name can be also configured in the parameter LaserprinterName.
INSERT PARAMETERS VALUES (0,0,0, ‘Invoice.LogoFilename','[ClientName]InvoiceLogo.png','')
INSERT PARAMETERS VALUES (0,0,0, 'Invoice.CompanyAddress','Malaga Airport\ AEROPUERTO DE MÁLAGA T3\nZona de embarque puertas C (al lado de la tienda Relay)\nVAT: XXB1234XXXX','')
INSERT PARAMETERS VALUES (0,0,0, 'Invoice.FooterText','[Text Here]")
INSERT PARAMETERS VALUES (0,0,0, 'Invoice.CompanyContact','','')
INSERT PARAMETERS VALUES (0,0,0, 'Invoice.Layout',)
INSERT PARAMETERS VALUES (0,0,0, 'Invoice.CompanyName',)
INSERT PARAMETERS VALUES (0,0,0, 'Invoice.InvoiceText','INVOICE / FACTURA','')
INSERT PARAMETERS VALUES (0,0,0, 'Invoice.DateText','Date / fecha','')
Aena.DiscountsConfig parameter
This JSON must be saved in the parameter table for the parameter Aena.DiscountsConfig.
We do not know if the values are subject to change and how Aena communicates actions. In AeanFly7 and Aeanyfly8 vouchers there are item number of free gifts specified. For the certification we created product to those promotions, this should be set to the correct values.
It is strongly advised to test Aena discounts on a test environment before changing the settings in production.
{“Discounts”:[{“Type”:1,“Value1”:10.0,“Value2”:0.0,“ItemId1”:0,“ItemId2”:0,“Codes”:[“AENAFLY1”]},{“Type”:2,“Value1”:2.0,“Value2”:0.0,“ItemId1”:0,“ItemId2”:0,“Codes”:[“AENAFLY2”]},{“Type”:3,“Value1”:10.0,“Value2”:15.0,“ItemId1”:0,“ItemId2”:0,“Codes”:[“AENAFLY3”]},{“Type”:4,“Value1”:1.0,“Value2”:0.0,“ItemId1”:0,“ItemId2”:0,“Codes”:[“AENAFLY4”]},{“Type”:5,“Value1”:10.0,“Value2”:2.0,“ItemId1”:0,“ItemId2”:0,“Codes”:[“AENAFLY5”]},{“Type”:6,“Value1”:10.0,“Value2”:0.0,“ItemId1”:0,“ItemId2”:0,“Codes”:[“AENAFLY6”]},{“Type”:7,“Value1”:20.0,“Value2”:0.0,“ItemId1”:2460030,“CompanyId1”:31,“ItemId2”:0,“Codes”:[“AENAFLY7”]},{“Type”:8,“Value1”:20.0,“Value2”:30.0,“ItemId1”:2440082,“CompanyId1”:31,“ItemId2”:2440155,“CompanyId2”:31,“Codes”:[“AENAFLY8”]}]} |
---|
Export of XML files
Aena requires to create XML files per month and year with totals per location for all Aena connected point of sales. Those XML files are certified with test values, those values should be configured with correct values.
The installation and configuration of the Export XML application will be added later below.