This project will:
define an API to allow EFTPOS terminals to be used with OpenVPMS
change OpenVPMS payment and refund workflows to use EFTPOS if it has been configured
provide an OSGi container, to allow provider specific implementations of the POS API to be deployed at runtime
The API will support:
Payments (with cash out)
Integrated receipt printing
Note that this project will not include any implementation of the POS API, as:
the required 3rd party libraries don't have suitable licenses
we don't want to tie OpenVPMS to any one provider
The POS API for payments and refunds integrated with the existing payment and refund editors. The API will be invoked when:
the selected till is configured with a POS terminal; and
EFT or Credit is selected as the item type; and
Apply or OK Is pressed, and the payment hasn't already been processed
As there is no limit to the number of EFT or Credit items in a payment or refund, each of these will be processed one after another.
When a Credit item is processed, the card type used will be recorded.
Additional constraints will be placed on payment/refunds that have been processed via the POS API:
any EFT or Credit item will not be permitted to be deleted once it has been successfully processed
the payment/refund may not be deleted, irrespective of its status
Integrated receipt printing allows the POS terminal receipt to be included on the customer receipt. This is to support POS terminals that are not connected to a printer.
To support this:
The EFT and Credit items will be extended to allow the POS terminal receipt to be attached, as plain text
The Receipt template will be updated to include the POS terminal receipt, if present
The Check-Out workflow will be changed to include an option to print the receipt, as well as the customer invoice
OpenVPMS will embed Apache Felix to allow providers to deploy implementations of the POS API to OpenVPMS at runtime.
POS terminal integration is enabled by:
setting a new flag "POS Terminal" on the relevant Till
deploying the provider implementation of the POS API to the OSGi container
The POS API will be simpler to use than the JavaPOS/UnifiedPOS specification. It may be implemented using JavaPOS, XML-POS, or using a 3rd party library.