I am developing a custom tender. The custom processing is initiated by a 'Custom tender' button from the Register application. I am creating payments for the order using the web API. I use the web API since I need to create multiple payments using multiple custom tenders. I did not found a way to mark the order as 'paid' if the whole order is paid. The desired functionality is that the Register switches directly to the 'choose receipt method' screen right after returning from the custom processing.
These are approaches and results:
1) Create payments using web API. Wait for the synchronization between the Clover server and local client. Hope that server will mark the order as 'paid'. Result: The payments are attached to the order, but the status is still 'open'.
2) After creating payments using the web API, issue a web call to update the status of the order to the state='paid'. Wait for the sync and return 'TenderActivity.RESULT_CANCELED'. Result: The Register payment screen is reopened with the outstanding amount of $0. The merchant has to add one more $0 cash payment to close the order (or to do something similar). In other words, the payments are in the system, outstanding value is $0, but the order is not 'paid'.
3) After creating payments using the web API and waiting for sync, set the state=paid on the local order in the Clover OS. Then return 'TenderActivity.RESULT_CANCELED'. The effect is the same as in the case 2).
4) same as 2) but returning TenderActivity.RESULT_OK with amount $0. The order IS closed (the Register goes to the 'choose receipt method' screen), but there is an additional $0 payment on the order.
Is there some way to mark the order as paid when using a custom tender in the Register and issuing web based payments? The case 4) is the closest to the desired functionality, but the $0 payment is misleading.
Thank you, Ondrej