soap-axess-crm

Axess CRM

Usage no npm install needed!

<script type="module">
  import soapAxessCrm from 'https://cdn.skypack.dev/soap-axess-crm';
</script>

README

Axess CRM Client Library

Production vs configuration data

Axess splits data into two categories. Configuration data is all static data like definitions of the cashdesks, types of tickets and age categories. Those change seldom and are modified manually by the employees or Axess staff themselves. Production data is the dynamic data that gets automatically generated, like sales or access logs.

To download production data, use the method Importer#loadTransactions to get all transactions. The method will retrieve the sales data in batches and run a callback you supply. You will also receive an internal ID of the callback which you should store (and increment by one) for the next time you want to fetch data. This ensures that transactions are not loaded twice and you have no gaps.

To download configuration data, use the method Importer#getFullTable to download the content of an entire table. This method returns the full dataset.

Like so: SOAP_URL=url USERNAME=username PASSWORD='password' DESTINATION_NAME=samo yarn run ts-node-dev ./src/tasks/getFullTable.ts

Example scripts

  • tasks/getFullTable.ts: copies a set of Axess configuration tables to a local Excel file. Use this to get an overview over the Axess data.

Writing Prices

The scripts for the three actions described below are all located in price_updater.ts.

Creating sheets

Before you are able to write any data, you need to create a RabattBlattGuelt (TABRabattBlattGueltDef) for each day of the season. The required information for creating a RabattBlattGuelt is the following:

  • NRABATTBLATTNR: from TABRabattBlattDef.
  • NRABATTBLATTGUELTNR: any unique ID. Convention here: 43700 less than the number of days since 1899-11-30.
  • NNRKREISART: from TABRabattBlattDef.
  • DTGILTVON and DTGILTBIS: validity start and end date. Usually the same.
  • SZNAME: any name. Convention: date as dd.mm.yyyy.
  • SZBESCH: description. Convention: company name.

Creating prices

To write prices, you need to write one entry per day and product-and-person-type combination to RabattBlattGueltZuord (TABRabattBlattGueltZuord). The required information for writing is the following:

  • NRABATTBLATTNR: from TABRabattBlattDef, select by name.
  • NRABATTBLATTGUELTNR: from TABRabattBlattGueltDef, see 'Creating sheets'. Defines the validity date of this price.
  • NLFDNR: any unique ID.
  • NNRKREISART: see 'Creating sheets'.
  • SZNAME: any name. Convention: dd.mm.yyyy - KK: $kundenkartentyp - PT: $personentyp
  • NFIXTARIFBLATTNR: from TABTarifBlattDef
  • NFIXTARIFBLATTGUELTNR: from TABTarifBlattGueltDef
  • NFIXKUNDENKARTENTYPNR: ticket type from TABKundenKartenTypDef.
  • NFIXPOOLNR: to be defined by ski resort
  • NFIXLFDNR: from TABBerechtTarife, filter by KKT and PT.
  • NFIXZEITSTAFNR: from TABBerechtTarife, filter by KKT and PT.
  • NFIXPERSTYPNR: person type from TABPersonenTypDef.
  • FFIXTARIF: the price.
  • SZBESCH: any description. Convention: date as dd.mm.yyyy.

Updating prices

To update prices, you need to send an update request to the RabattBlattGueltZuord (TABRabattBlattGueltZuord) table. You need the following information:

  • NRABATTBLATTNR: see 'Creating prices'.
  • NRABATTBLATTGUELTNR: see 'Creating prices'.
  • NLFDNR: see 'Creating prices'.
  • NNRKREISART: see 'Creating prices'.
  • FFIXTARIF: the new price.