As a professional POS Solution, we bet on international standards. Thats the reason, why we decided to go for the NRF ARTS POSLog. Currently we use the Version 6.0 + own extension for certain use cases.
Here you can find all single pdfs with relation to the use cases. Important to know is, that we use just json as data format not like in arts XML. The common way in NRF ARTS standard POSLog 6.x for time format is without timezone information, which must be used in our use case.
The listed documentation is the official one. Not all of the mentioned one are already implemented (e.g. layaway is not implemented yet), but as soon, as we will implement the specific use case, we will use the same specification.
The complete documentation you can downloaded here.
The original package can be also downloaded from the OMG https://www.omg.org/cgi-bin/doc?retail/2017-07-13 - The Object Management Group® (OMG®) is an international, open membership, not-for-profit technology standards consortium.
Narrative Documentation LCWDARTSPOSLogTechnicalSpecification Vol 00Narrative20150203.pdf |
|
Customer Order Transaction LCWDARTSPOSLogTechnicalSpecification Vol 01CustomerOrderTransaction20140210.pdf |
|
Sale Line Items Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 02SaleLineItems20140210.pdf |
|
Sales Interruption Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 03Interruption_20140520.pdf |
|
Rounding Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 04Rounding20140210.pdf |
|
Deposit Line Items Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 05DepositLineItems20140210.pdf |
|
Transaction Item Links Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 06Transaction-ItemLinks_20140210.pdf |
|
Delivery/Return for Pickup Line Items Technical LCWDARTSPOSLogTechnicalSpecification Vol 07DeliveryPickupLine Items20140210.pdf |
|
Return Line Items Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 08ReturnLine Items_20140210.pdf |
|
Payment on Account Line Items Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 09PaymentonAccountLine_Items20140210.pdf |
|
Tendering Line Items Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 10TenderingLineItems20140210.pdf |
|
Tax Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 11Tax20140407.pdf |
|
Promotions/ Discounts/ Rebates Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 12_Promotion-Discount20140210.pdf |
|
Voids and Cancels Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 13VoidsCancels_20140210.pdf |
|
Stored Value Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 14StoredValueLineItems_20140210.pdf |
|
Loyalty Line Items Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 15LoyaltyLineItems20140210.pdf |
|
Layaway/ Layby Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 16LayawayLineItems20140210.pdf |
|
Store Operations Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 17StoreOperations_20140210.pdf |
|
Fresh Item Management Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 18FreshItemManagement20140210.pdf |
|
Control Transactions Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 19ControlTransactions(Events)20140210.pdf |
|
Tender Control Transactions Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 20TenderControlTransactions(CashManagement020140210.pdf |
|
Forecourt Volume Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 21ForecourtTransactions_20140210.pdf |
|
Foodservice Volume Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 22FoodserviceTransactions_20140210.pdf |
|
Inventory Control Documents Technical LCWDARTSPOSLogTechnicalSpecification Vol 23InventoryControlTransactions20140210.pdf |
|
Retail Transaction Interface Technical Specification LCWDARTSPOSLogTechnicalSpecification Vol 24RetailTransactionInterface20140210.pdf |
|
Additional to the standard, we had to implement different extensions for certain usecases.
These are the one:
POSLog class | Attribute |
---|---|
| Attribute: JournalTypeCode: JournalTransactionTypeEnumeration Description: RetailTransaction = "RetailTransaction", ControlTransaction = "ControlTransaction", TenderControlTransaction = "TenderControlTransaction", |
Transaction | Attribute: DataStructureVersion: number Description: DataStructureVersion |
Transaction | Attribute: OrgUnitID Description: Organizational Unit ID |
Transaction | Attribute: Barcode Description: Receipt Barcode data |
Transaction | Attribute: IsReplacement: boolean Description: True for correction transactions (e.g. tax correction) |
Transaction | Attribute: meta: any = {}; Description: Extensions for Transaction, e.g. can be used for fiscalization |
Transaction.meta | Attribute: TerminalEodResult: PaymentResult Description: PaymentResult from an eventual TerminalEoD call during Z-Report (PosEoD) |
RetailTransaction | Attribute: TransactionStatus: string Description: Attribute already exists, but we need new possible value:
|
RetailTransaction | Attribute: meta: any Description: retail transaction extensions. |
RetailTransaction | Attribute: TransactionGrossAmount: PrecisionNumber Description: Transaction amounts which are used in StandardReceipt & PDFStandardReceipt. |
ControlTrasaction.ReasonCode | Attribute: - Description: Ability to capture Reason ID during the process generating ControlTransaction (i.e. Open Drawer) |
ControlTrasaction.ReasonCode | Attribute: Description: string Description: Entry / reason in the store main locale. |
ControlTrasaction.ReasonCode | Attribute: ManualDescription: string Description: Manual reason entry made by the user. |
InventoryControlTransaction | Attribute: TransactionStatus Description: Status of inventory control transaction |
Sale | Attribute: PerAssemblyCount: number Description: for deposit items |
Sale | Attribute: TaxReceiptPrintCode: string Description: tax code, which can be printed |
Sale | Attribute: Name: string Description: name of the salelineitem |
Sale | Attribute: ExtendedName: string Description: - |
Sale | Attribute: ItemIdentifierList: ItemIDCommonData[] Description: List, of all Itemidentifier |
Tax | Attribute: TaxAuthorityName Description: Name of tax authority (may be useful for the printing, but mainly for the journal). |
Tax | Attribute: NetAmount Description: Taxable amount without taxes. This value is useful because it's allway properly filled no matter gross / net mode is currently used. |
Tax | Attribute: GrossAmount Description: Taxable amount + taxes. This value is useful because it's allway properly filled no matter gross / net mode is currently used. |
LineItem | Attribute: meta: any Description: Line item extensions. |
LineItem | Attribute: AllowManualVoid: boolean Description: Is manual voiding allowed |
Item | Attribute: ZeroPriceAllowed: boolean Description: true, if zero price is allowed |
LineItem | Attribute: PositionNumber: number Description: the position of the item in the LineItem[] |
LineItem | Attribute: OriginalItemInPositionFlag: boolean Description: - |
LineItem | Attribute: recalculatingNeeded: boolean Description: if recalculating of the lineitem is needed |
LineItem | Attribute: SalesRestrictionAgeValue: number Description: The age, if there is a salesrectriction on the item, e.q. on beer => 16 |
LineItem | Attribute: IsVoidedBySequenceNumber: number Description: The sequence number of which the item is voided |
LineItem | Attribute: ShoppingBasketID Description: The shopping basket ID |
LineItem | Attribute: CustomerOrderReference Description: Reference to LineItem of an order (CustomerOrderTransaction). Used to reference LineItems in RetailTransactions to cleanup basket on (Split-)Payment. |
LineItem | Attribute: LineItemChangeEvents: LineItemChangeEvent[]; Description: shall document the changes of an existing lineitem like quantity change (plus/minus button) |
LineItem.Return.ReasonCode | Attribute: - Description: To be done for Return without Receipt and Return with Receipt – Reason ID selected during return process. |
LineItem.Return.ReasonCode | Attribute: Description: string Description: To be done for Return without Receipt and Return with Receipt – Entry / reason in the store main locale. |
LineItem.Return.ReasonCode | Attribute: ManualDescription: string Description: To be done for Return without Receipt and Return with Receipt – Manual reason entry made by the user. |
LineItem.Return.TransactionLink.PositionSequenceNumber | Attribute: - Description: To be done for Return with Receipt – Sequence number of the position from the original sale transaction. |
LineItem.Return.TransactionLink.TransactionID | Attribute: - Description: To be done for Return with Receipt – Transaction ID of the original sale transaction. |
LineItem | Attribute: public course:number Description: is used for the course number of the lineitem |
Discount | Attribute: CalculatedDiscountAmount: PrecisionNumber Description: the current RetailTransaction's total discount |
Discount | Attribute: Name: string Description: the name of the manual receipt discount |
Tender | Attribute: Description: string Description: Description of the tender |
Tender | Attribute: DescriptionTranslation: string Description: Translated name of the tender according to the current locale (used in StandardReceipt & PDFStandardReceipt). |
Tender | Attribute: TenderPrintingType: TenderPrintingTypeEnumeration Description: MANDATORY, OPTIONAL,NOT |
SubTenderTypeCodesEnumeration | Attribute: - Description: |
TenderAuthorization | Attribute: public OnlineAuthorizationStatus: OnlineAuthorizationStatusEnumeration Description: - |
Tender.POSLogTenderID | Attribute: TenderCode: string Description: a code for the tender |
Tender.POSLogTenderID | Attribute: public SubTenderCode: string; Description: code for the SubTender is used for e.q. SubTenderType Visa => code ZTVI |
TenderAuthorization | Attribute: CustomerReceiptText: string Description: CustomerReceiptText |
TenderAuthorization | Attribute: public ReceiptTextPrintingType: string; Description: optional, which printing type for the merchant receipt, atm "printImmediately" or "printAtEndOfReceipt" |
TenderAuthorization | Attribute: public CustomerReceiptTextPrintingType: string; Description: optional, which printing type for the customer receipt, atm "printImmediately" or "printAtEndOfReceipt" |
TenderAuthorization | Attribute: CustomerReceiptPrintedImmediately: boolean; Description: it's true, if the customer receipt was directly printed by the payment gateway plugin => deprecated, please use "CustomerReceiptTextPrintingType" |
TenderAuthorization | Attribute: nativeAuthorizationResult: PaymentResult Description: Payment result from authorization without Merchant and Customer receipt as they are already in the TenderAuthorization object |
TenderAuthorization | Attribute: PaymentIdentifier: string Description: paymentIdentifier for the authorization. Originally generated by the gateway pament plugin (StoreIDPosIDReceiptDateTimeToIsoStringTransactionNumberNumberOfLineitems+1) |
TaxGroupIDCommonData | Attribute: TaxReceiptPrintCode: string Description: Code for printing on the receipt |
POSLog | Attribute: hash: string Description: generated hash (deprecated) |
POSLog | Attribute: hashV2: number Description: generated hash (new hashing algorithm) |
POSLog | Attribute: lastTransactionHash: string Description: hash of the last transaction |
POSLog | Attribute: lastTransactionSequenceNumber: number Description: SequenceNumber of the last transaction |
POSLog | Attribute: lastTransactionID: string Description: Transaction id of the last transaction |
POSLog | Attribute: reasonCodes: ReasonCode[] Description: all entered reason codes in this transaction | NOT USED ANYMORE |
POSLog | Attribute: pdf: string Description: generated pdf |
POSLog | Attribute: pdfPrintouts:{[key:string]: string}; Description: additional pdfs for print use cases |
UnitOfMeasureCodeEnumeration | Attribute: PCE:string Description: UnitOfMeasureCode for piece |
UnitOfMeasureCodeEnumeration | Attribute: CU:string Description: UnitOfMeasureCode for CU |
UnitOfMeasureCodeEnumeration | Attribute: M:string Description: UnitOfMeasureCode for meter |
UnitOfMeasureCodeEnumeration | Attribute: M2:string Description: UnitOfMeasureCode for square meter |
SettleTenderLedgerTotals | Attribute: public POSLogTenderIDValue: PrecisionNumber; Description: TenderId |
SettleTenderLedgerTotals | Attribute: public SubTenderCode: string; Description: code for the SubTender is used for e.q. SubTenderType Visa => code ZTVI |
SettleTenderLedger | Attribute: Description Description: description of tender |
SettleTenderLedger | Attribute: SettleTenderLedgerTotals: OverallAmount Description: amount of all use cases related to this SettleTenderLedger |
SettleTenderLedger | Attribute: SettleTenderLedgerTotals: Difference Description: Over minus Short, it's only for printing. Can be MINUS !!! |
SettleTenderLedger | Attribute: SettleTenderLedgerTotals: Tip Description: cumulated TIP |
SettleTenderLedger | Attribute: public TenderPickupAutomatic: SettleTenderLedgerTotals; Description: for automatic tender pickup in safe process at Till EoD |
Settle | Attribute: TenderSummaryMapping: {[key: string]: number} Description: Mapping TenderID <=> TenderSummary |
Settle | Attribute: TotalSalesReturnAmount: AmountCommonData Description: cumulation of sales minus returns |
Settle | Attribute: ManualLineDiscount: POSLogTotalsBase Description: sum of manual lineitem discount |
Settle | Attribute: ManualTrxDiscount: POSLogTotalsBase Description: sum of manual transaction discount |
Settle | Attribute: LineItemOverride: POSLogTotalsBase Description: sum of manual price overwrite |
Settle | Attribute: SettleTotal: SettleTenderLedger Description: cumulated totals only for till and pos |
Settle | Attribute: SoldItemLedger: SettleSoldItemLedger Description: sold items during current period |
Settle | Attribute: TenderSummaryHasBeginning: boolean Description: flag, if TenderSummary has Beginning (used for printing X/Z Reports) |
Settle | Attribute: TenderSummaryHasLoan: boolean Description: flag, if TenderSummary has Loan (used for printing X/Z Reports) |
Settle | Attribute: TenderSummaryHasPickup: boolean Description: flag, if TenderSummary has Pickup (used for printing X/Z Reports) |
Settle | Attribute: HasRoundings:boolean Description: flag, if Summary has Roundingvalues (used for printing X/Z Reports) |
Settle | Attribute: TotalRoundingAmount: PrecisionNumber Description: Rounding totals (used for printing X/Z Reports) |
Settle | Attribute: public TenderPickupAutomatic: SettleTenderPickup; Description: for automatic tender pickup in safe process at Till EoD |
Settle | Attribute: public TotalCashMinusOverallTip: AmountCommonData; Description: total cash minus total tips from all tenders (used for X/Z Reports) |
POSLogCPOSSession | Attribute: EoDType: string Description: only used for Till or Pos EOD either X or Z |
POSLogCPOSSession | Attribute: public EoDNumber: number; Description: Number of the EoD Z-Report,mainly for german fiscalization (Z-NR Kassenabschlussnummer) |
POSLogCPOSSession | Attribute: public SafeSummary: SafeSummary; Description: safes overview (safe summary) for BusinessEoD |
RetailPriceModifier | Attribute: ReasonCodeCommonData: ReasonCodeCommonData Description: needed for manual discount |
Transaction | Attribute: NonSucceededPaymentResults: PaymentResult[] Description: all PaymentResults, which are not succeeded |
SalesRestrictionValidationType | Attribute: ReasonCodeCommonData: ReasonCodeCommonData Description: neede for SaleRestrictionAge |
TenderControlTransaction | Attribute: TenderDescription Description: tenderDescription is missing for TenderControlTransactions |
TenderControlTransaction | Attribute: public MoneyTransfer: POSLogTCMoneyTransfer; Description: for Safe MoneyTransfers |
RetailTransaction | Attribute: FloorName Description: name of the floor |
RetailTransaction | Attribute: TableName Description: name of the table |
RetailTransaction | Attribute: TableNumber Description: number of the table |
RetailTransaction | Attribute: TransactionRoundingDifference: PrecisionNumber Description: rounding difference results on rounding rules (used for printing X/Z Reports) |
RetailTransaction | Attribute: TransactionUnRoundedAmount: PrecisionNumber Description: original transaction amount before rounding (used for printing X/Z Reports) |
RetailTransaction | Attribute: hasRoundings: boolean Description: flag, if transaction has roundingdifferences (used for printing X/Z Reports) |
RetailTransaction | Attribute: hasChangeRounding: boolean Description: Toggles if change rounding is displayed in payment done scene and on standard receipt |
RetailTransaction | Attribute: TransactionChangeRounding: PrecisionNumber Description: Rounding amount for change of the transaction. Displayed in payment done scene and on standard receipt if non zero. |
LineItem | Attribute: Finalized Description: for CustomerOrderTransaction, flag that indicates, that this item was ordered. flag is set in finalize transaction |
MerchandiseHierarchyCommonData | Attribute: DatabaseID Description: it's for reports in the cle |
Item | Attribute: isVariantFrom Description: isVariantFrom flags this item as a variant sub from the MasterItem |
Item | Attribute: ReceiptPromotionMap: {[key: string]: PrecisionNumber} Description: map with all applied receipt promotion id's and the resulting (shared) discount for the item, needed for tax calculations |
LineItem | Attribute: changed type of Description: to do the requirements for sets and options |
LineItem | Attribute: ReasonCodeCommonData: ReasonCodeCommonData Description: needed for void position of sale or return lineitem |
ItemLink | Attribute: public Type: ItemLinkTypeEnumeration; public LineItemSequenceNumber: LineItemSequenceNumber[]; Description: new ItemLinkObject for more precise link information |
ItemLinkTypeEnumeration | Attribute: - Description: enum for the relation between item and item link |
LineItemSequencenumber | Attribute: attribute: Description: MemberSequenceNumber to precise, of which item set or option it's a member link to LineItem |
Transaction | Attribute: ReasonCodeCommonData: ReasonCodeCommonData Description: needed for voiding/canceling a transaction |
KitMember | Attribute: public Modification: Modification[]; Description: Modifications for item choices for an item in a set |
LineItem | Attribute: DisplayName: string Description: Name translated in user locale |
TaxGroupIDCommonData | Attribute: DisplayName: string Description: Name translated in user locale |
TaxGroupIDCommonData | Attribute: DisplayTaxReceiptPrintCode: string Description: TaxReceiptPrintCode translated in user locale |
Item | Attribute: DisplayTaxReceiptPrintCode: string Description: TaxReceiptPrintCode translated in user locale |
MerchandiseHierarchyCommonData | Attribute: displayValue: string Description: value translated in user locale |
Tender | Attribute: DisplayDescriptionTranslation Description: DescriptionTranslation translated in user locale |
ReasonCodeCommonData | Attribute: DisplayDescription Description: Description translated in user locale |
ReasonCodeCommonData | Attribute: DisplayI18nDescription Description: Description translated at runtime |
ReasonCodeCommonData | Attribute: DisplayName: string Description: Name translated in user locale |
ReasonCodeCommonData | Attribute: public ManualNote?: string; Description: added for manual notes for Reason Codes |
RetailPriceModifier | Attribute: DisaplyDescription: string Description: Description translated in user locale |
RetailPriceModifier | Attribute: DisaplyName: string Description: Name translated in user locale |
RetailPriceModifier | Attribute: Name: string Description: Name |
POSLog | Attribute: externalPdfAccessKey: string Description: QR Code for PDF download |
RetailPriceModifier | Attribute: PromotionProperties: PromotionPropertiesData Description: Details of the corresponding promotion |
BusinessUnit | Attribute: Locale : string Description: A store locale |
CustomerCommonData | Attribute: dbID: string Description: DatabaseID for idenfication of customer/contact |
CustomerCommonData | Attribute: externalCustomerID: string Description: A external ID which can be provided from a user of our system and is not related to generated contact data by our system |
CustomerCommonData | Attribute: CustomerTaxID: string Description: Not POSLog standard but needed for exports, so will not be ignored during export |
CustomerCommonData | Attribute: CustomerVatID: string Description: Not POSLog standard but needed for exports, so will not be ignored during export |
CustomerCommonData | Attribute: Comments: string Description: Comments for the related customer/contact, e.g. hair color in hairstyle shop |
CustomerCommonData | Attribute: TaxExempt?: boolean Description: Tax exempt flag |
Item | Attribute: HasNegativePrice: boolean Description: if this property exists, then it shows, if the item has a negative price |
ControlTransaction | Attribute: public PocketBalance: POSLogCPOSSession; Description: used for Pocket balancing, see Hospitality - Pocket Balance#PocketBalance-TechnicalConcept |
ControlTransaction | Attribute: public AplicationEvent: ApplicationEvent; Description: changed ArtsStandard to Object instead of string |
ApplicationEvent | Attribute: {public type: ApplcationEventType | string; public data: any;} Description: custom, added because of Application Event |
ApplcationEventType | Attribute: enum Description: in same class like Application Event |
TransactionTaxExemptionReason | Attribute: String Description: Reason for TaxExemption. Shown in baskets and receipts. |
TransactionTotal | Attribute: Rounding:RoundingCommonData Description: Rounding data for totals |
TenderChange.Amount | Attribute: & {Rounding?: RoundingCommonData}; Description: Rounding Data |
WorkstationIDCommonData | Attribute: public Description: string; Description: from safe spec => Name of the source safe. |
POSLogTCTenderLoan | Attribute: public Reference: string; Description: from safe spec => Reference captured during the process, can be empty. |
POSLogTCTenderLoan | Attribute: public SourceWorkstationID: WorkstationIDCommonData; Description: from safe spec => Identification of the source of the tender loan. Filled in for example, when opening balance or loan is added to the POS from the safe. If the source is unknown to the system, this segment will be empty. |
TenderPickupTypesEnumeration | Attribute: TillSettle Description: from safe spec => TillSettle - automatic tender pickup related to the accounting of the till (TillEOD) |
SettleTenderPickup | Attribute: public Reference: string; Description: from safe spec => Reference captured during the process, can be empty. |
SettleTenderPickup | Attribute: public TargetWorkstationID: WorkstationIDCommonData Description: from safe spec => Identification of the source of the tender loan. Filled in for example, when opening balance or loan is added to the POS from the safe. If the source is unknown to the system, this segment will be empty. |
POSLogTotalsBase | Attribute: public SafeMaintained: boolean; Description: rom safe spec => Flag indicating, if the tender is configured to be maintained in the safe = if a safe was selected during the process, the tender amount will be booked to the safe. In phase 1 only cash in main currency will have this set to true. |
POSLogTenderID | Attribute: public TenderDescription: string; Description: from safe spec => will not be removed because of backward compatibility, it's added here |
This section describes the meta information stored inside the POSLog transaction.
salesTaxAuthorities - list of tax authorities applied to current transaction
taxIncludedInPriceFlag - boolean flag whether the prices of items in transaction contains tax.
AlternativeTaxMode - boolean flag whether the current transaction have enabled alternative tax mode.
salesDateTime - date time of line item (when it was sold). Should be filled during return.
salesTaxAuthorities - tax authorities used for the item. Should be filled during return.
itemTaxSummary - boolean flag marking summary tax line items - summary tax line items are summarized from the line taxes. It's helper for the printing and backend calculations (it doesn't have to be searched for the tax entries under the sale/return line items).
AlternativeTax - the name of activated alternative tax.
OriginalTaxGroupId - in case of alternative tax is enabled, it may contain the original tax group.
Tax
itemTaxSummary - boolean flag marking summary tax items - summary tax line items are summarized from the line taxes. It's helper for the printing and backend calculations (it doesn't have to be searched for the tax entries under the sale/return line items) and such entry should not be exported.
itemTaxSplit - boolean flag marking split tax items from the transaction taxes. It's helper for the backend calculations (it doesn't have to split the tax entries under the sale/return line items) and such entry should not be exported.
You can use for export of your POSLogs as well JSONata.
For example by doing 3 export jobs, based on filtering on journal type code:
$$[Transaction.JournalTypeCode = 'TenderControlTransaction'] ~> | ** | {}, ['pdf','ImageUri'] |
$$[Transaction.JournalTypeCode = 'ControlTransaction'] ~> | ** | {}, ['pdf','ImageUri'] |
$$[Transaction.JournalTypeCode = 'RetailTransaction'] ~> | ** | {}, ['pdf','ImageUri'] |