Data Structures
This chapter expands on the descriptions of the country-specific Data Structures, covered in the Chapter Data Structures of the General Part, with information applicable to the Polish market.
Currency
The queue currency for Poland is PLN. The receipt (Currency) and every charge item and pay item must carry PLN explicitly — the data format defaults to EUR, so POS Creators must set the currency on each request. Requests violating this rule are rejected with the validation error code CurrencyMustMatchMarket.
Sale and return positions
A Polish fiscal document must not mix sale and return positions: the register protocol processes returns as separate non-fiscal documents. Send returns as their own receipts flagged with IsReturn/IsRefund (0x0100_0000_0000) and reference the original receipt via cbPreviousReceiptReference. Discounts/extras and voids are position modifiers, not return positions.
Discounts and extras
The POSNET register prints a charge item with the flag Discount (0x0000_0000_0004_0000) as a discount (rabat, negative amount) or an extra (narzut, positive amount) on the sale line it belongs to. In addition to the general rules in Discounts and Extras, the following rules apply. They describe the POSNET SCU, which is in preview; see Scope of the preview.
- Assignment by
Position: if the discount or extra has aPosition, it belongs to the sale line whosePositionhas the same integer part; for example,1.1belongs to position1, even if another position was sent in between. A fractionalPositionwhose integer part matches no sale line of the receipt is rejected. - Assignment by order: without a
Position, the discount or extra belongs to the sale line before it. - Subtotal discount: a discount or extra without a
Positionand with no sale line before it applies to the subtotal of the receipt (rabat od podsumy); the register distributes it over the VAT rates of the receipt. - One per sale line: a sale line carries at most one discount or extra. Send several discounts on one position as a single discount, or split the sale into one position per discount.
- VAT rate: a discount or extra uses the same VAT rate in
ftChargeItemCaseas the position it belongs to, or no VAT rate (0); it is then granted at the rate of the position. - Amount: the amount of a discount or extra is not
0. A line discount must not exceed the value of its position, and a subtotal discount must be less than the subtotal, because the register cannot print a negative sale line or a receipt with a total of zero or less. - Voids: a discount or extra cannot be voided with
IsVoid. Send the position with the discount or extra it ends up with. A discount or extra that directly follows the void (storno) of the position it would belong to is rejected; send it after the position, before the void, or name the position inPosition. - Returns: a return document cannot contain discounts or extras. Send the returned positions with the value that is handed back.