Additional Data for Procurement Transactions
Procurement transactions refer to transactions that contain the line item (or order basket) details. If the line-item details are sent to iVeri within a transaction, then a procurement card holder get those details from their issuing bank (for example on their monthly statement). This is of assistance in tracking business to business transactions particularly in large corporations. Procurement transactions are currently only available within distributor Nedbank.
Coding for Procurement
The following optional input parameters are Procurement specific per transaction:
- CustomerReferenceIdentifier
- CustomerVATRegistrationNumber
- DestinationCountry
- DestinationZIPCode
- NationalTax
- NationalTaxIndicator
- OrderDate
- PurchaseIdentifier
- ShipFromZIPCode
- ShippingAmount
- ShippingTaxRate
- TransactionDiscount
- UniqueVATInvoiceReferenceNumber
The following optional input parameters are Procurement specific per Line item:
- Discount
- ItemCommodityCode
- ItemDescriptor
- ProductCode
- Quantity
- TaxRate
- Total
- UnitCost
- UnitOfMeasure
Since Line items are repeated, the advanced Enterprise methods openElement and closeElement must be used.
The following is a code snippet in https://vb.net/
enterprise.setTag("ShippingTaxRate", shippingTaxRate)
enterprise.setTag("TransactionDiscount", transactionDiscount)
enterprise.setTag("UniqueVATInvoiceReferenceNumber", vatReferenceNo)
Dim dr As DataRow
For Each dr In myTable.Rows
enterprise.openElement("LineItem")
enterprise.setTag("ItemCommodityCode", dr("Item Code"))
enterprise.setTag("ItemDescriptor", dr("Description"))
enterprise.setTag("ProductCode", dr("Product Code"))
enterprise.setTag("Quantity", dr("Quantity"))
enterprise.setTag("UnitOfMeasure", dr("Unit Of Measure"))
enterprise.setTag("UnitCost", dr("Unit Cost"))
enterprise.setTag("TaxRate", dr("Tax Rate"))
enterprise.setTag("Discount", dr("Discount"))
enterprise.setTag("Total", dr("Total"))
enterprise.closeElement()
Tax Calculation
The calculations below show how the NationalTax is calculated. Note that rounding can be up or down since the resulting NationalTax value is allowed to fall in a precision tolerance interval based on the number of line items. Calculation when TransactionDiscount is zero
NationalTax = (sum of (LineItem Total x LineItem TaxRate) / 10000) + (ShippingAmount x ShippingTaxRate) / 10000
Calculation when TransactionDiscount is NOT zero
The TransactionDiscount is spread across some or all the line items resulting in an additional discount for these line items. Let’s call the LineItem Total of the affected line items, reduced LineItem Total. Then,
NationalTax = (sum of (reduced LineItem Total x LineItem TaxRate) / 10000) + (ShippingAmount x ShippingTaxRate) / 10000.
For the above calculation, a maximum and minimum tax amount is obtained by sorting line items in ascending and descending order respectively according to LineItem TaxRate.