In X3 V12, patch 27 (2021 R3) it now possible for a customer to pre-pay for a sales order, through a pre-payment invoice.
This is through the function GESPREPI (A/P-A/R accounting->Invoicing->Prepayment invoice).
The process can be as follows:
(1) Create a normal sales Order for some customer.
(2) Create a prepayment invoice against the sales order(GESPREPI), usually not for the full amount of the order.
(3) Make a payment against the prepayment invoice.
(4) Allocate to the order and ship.
(5) Invoice the shipment.
(6) Make a payment against this invoice.
(7) X3 will make an adjustment in amounts for this invoice according to how much was already paid through the prepayment invoice.
This functionality requires quite a few set ups in order to use it.
I will walk through a specific set up as an illustration.
1. General Parameters (ADPVAL)
TC Common Data
INV Invoicing rules->PREFUN Prepayment management = Prepayment Invoices
TRS Acc Payable/Acc Receivable
INV Invoicing rules -> TYPINVCUS Customer Invoice type = ZAINV
PIM Prepayment invoice management -> PAYFINC, PREPAYC, PRPRVC, REVPRE, TRFINJ, TRPAYJ
PPY Prepayment management -> DENINSRCP Prepayment receipt accounting code = PPRNT
TDC Early discounts/late charges
2. Automatic Journals and Document Types
Automatic Journals: Legislation/journal codes: Document Types
ACPT (Prepayment transfer) evalue(func SUBTFO.FC("APG")) ZAGEN (Miscellaneous entry)
BPCPI (Customer Invoice - Prepayment) evalue(func SUBTFO.FC("BCG")) INVTYP=1,3->ZAINV(Sales Invoices); INVTYP=2,4 ->ZACCN (Customer Credit Notes )
BPCFI (Customer Invoice - Final) evalue(func SUBTFO.FC("PPJ")) ZASNV (Receivable Invoices)
PRPAY (Payment Transfer) evalue(func SUBTFO.FC("PPI")) ZAREC (Payment Receipt )
SIHRE (Sales Invoice Reversal) evalue(func SUBTFO.FC("PPR")) ZACCN (Customer Credit Notes )
3. Payment Attributes
PPRINT Pre-Payment Receipt or PPRT Pre-Payment Receipt with Tax set on General parameter DENINSRCP
4. Sales Order
Prepayment Invoice Management
Prepayment Invoice Created (Customer BP invoice )
Journal Entry – posted prepayment invoice
Payment on prepayment open item
Pre Payment Journal Entry
Payment Inquiry
5. Final Invoice and Payment
Sales Invoice reflecting the whole invoice amount of 2300
Invoice journal entry
Invoice inquiry shows the amount due as 1150.00 as 50% has already been prepaid
Open Item for
Payment Receipt
Final payment journal entry is for 50% of the whole invoice as prepayment was 50% of sales invoice
Perfectly matched
This simple scenario was to illustrate how the enhanced sales invoice prepayment process works.
A more complicated scenario could be conjured up such as several pre-payment invoices and a variance between sales invoice and sales order or shipment.
The new functionality works flawlessly even for these convoluted scenarios..