Joel Gress
VP of Product Marketing
SWK Technologies, Inc.
Acumatica, like most modern ERP systems, offers a standard process flow from Sales Order to Shipment to Invoice. Within this flow are options to accept payments on the Sales Order and Invoice. However, unlike those other systems, Acumatica Cloud ERP has the flexibility to allow for modifications to this process flow to meet the needs of your organization.
This article will explore a modification to the processing of a Sales Order to Shipment to Invoice which allows for more dynamic shipment updates and payment applications using a customization and the Acumatica Workflow Engine.
Business Use Case
Customer requires Credit Card payments be processed prior to releasing a Shipment. Standard Acumatica functionality allows for Credit Card/payment processing on the Sales Order prior to Shipment or on the Invoice post Shipment, however there are several reasons this will not work for their process flow:
- Shipments can occur months after an order is placed
- Credit Card Captures expire within five to ten days depending on the card type and payment gateway provider
- A Credit Card provided during the original sale may expire or have insufficient credit when a shipment is processed months later
- Shipments can be comprised of multiple Sales Orders, each with a different total sale amount and freight charge
- Shipments can change based on actual fulfillment
Processing payments from the Shipment will ensure that payment authorization is matched to the items on the Shipment inclusive of any shipment, freight or miscellaneous charges. If authorization fails, other Credit Cards on file for the Customer can be attempted and if none are successful, the shipment can be held.
Rather than adding payment processing functions directly to the Acumatica Shipment form, which would require more substantial development effort, we worked with Acumatica developers to allow pending Shipments to create an AR Invoice where the payment processing function already exists.
In our scenario, we accommodated for a user defined Workflow Status to control when changes were made to the Shipment and subsequently the AR Invoice which required additional payments to be processed. This allowed the customer to continually update the Shipment, add miscellaneous charges to the AR Invoice and accept payments up until the time that Shipment is deemed ready to move to WMS for picking.
Requirements
- User should be able to prepare an invoice before a shipment is confirmed.
- User should be able to verify whether full payment for shipment item is captured prior to shipment confirmation.
- User defined Workflow Status value should be updated to reflect the payment status of the Shipment.
Proposed Solution
- Customization to allow for the creation of an AR Invoice from a Shipment that has not been Confirmed.
- User Defined Workflow Status field to indicate the payment status for the shipment.
- The modified payment processing is applicable for only credit card payments. All other payment method should be process using the standard Acumatica process flow.
- Below modifications need to be done to Shipments (SO302000) screen.
- Add below fields to the summary area.
Field Name | Control Type | Values | Usage |
Workflow status | Drop down | Enable: FALSE
Default value: NULL Values: Pending Payment, Payment Captured, Shipping
|
Workflow status should change based on actions selected on shipment screen. |
Payment Captured | Check box | Enable: FALSE
Default value: FALSE |
An indicator whether the full payment for the shipment is captured in the related invoice. |
- Add a new tab ‘PAYMENTS’ with below grid columns.
Order | Field Name | Control Type | Values | Usage |
1 | Invoice Number | Selector | Editable: FALSE
Value: Should act as a hyperlink |
Invoice number of the applied payment.
|
2 | Payment Date | Date Time Edit | Editable: FALSE
|
Payment applied date |
3 | Payment Ref Number | Text Edit | Editable: FALSE
Value: Should act as a hyperlink |
Reference number of the payment |
4 | Payment Amount | Number Edit | Editable: FALSE
|
Amount paid |
- Below ‘Action’ items need to be introduced to Shipments (SO302000)
- Send to WMS (status indicator that the shipment is ready to be sent to WMS for picking)
- Update Shipment (status indicator that the shipment may be modified)
Customized process flow
- When a shipment is created, initial action behavior in Shipments (SO302000) screen should be changed as below.
- ‘Confirm Shipment’ action à Disabled.
- ‘Prepare Invoice’ action à Enabled.
- ‘Payment Captured’ checkbox à FALSE
- Workflow status à NULL
- Once ‘Prepare Invoice’ action is selected, system should direct to the Invoices (SO303000) screen. Once the invoice is created, below should be updated in Shipments (SO302000)
- Status à Invoiced (Standard behavior)
- Workflow status à Pending Payment
- Update Shipment action à Enabled
Note: If a shipment has an invoice associated to it, system should not allow deletion of the shipment. If the associated invoice is deleted, system should allow for deletion the shipment (standard behavior).
- Payment capture steps will be done in Invoices (SO303000) screen
- When the Shipments (SO302000) screen is updated based on actions done in relevant invoice, system should only consider payments done to the items included in the shipment. If payments are done for items which are not included in the relevant shipment, those should not be considered when updating Shipments (SO302000)
- Once the full payment is captured, the following should be updated in the Shipments (SO302000)
- ‘Payment Captured’ checkbox à TRUE
- Workflow status à Payment Captured
- Send to WMS action à Enabled
- Update Shipment action à Enabled
- Prepare Invoice action à Disabled
- Grid fields in the PAYMENTS tab should be populated with payment details from the invoice as below.
- Invoice number = RefNbr
- Payment Date = ARPayment.DocDate
- Payment Ref Number = AdjgRefNbr
- Payment Amount = ARAdjust2.CuryAdjdAmt
PAYMENTS tab should always get populated if a payment is done for an item in the shipment despite whether it is a partial payment or a full payment. ‘Payment Captured’ checkbox should remain as FALSE until the full payment is captured.
Workflow status should be updated to ‘Payment Captured’ only if full payment is captured (Payment captured checkbox = TRUE). In an instance where a partial payment is captured, workflow status should remain as ‘Pending Payment’.
Purpose of Send to WMS action is to change the status of ‘Workflow Status’. Intention is to capture the business process change.
- If Update Shipment action is selected, system should allow modifications to a shipment with the status ‘Invoiced’. System should temporarily change the status to ‘Open’ and once changes are saved, status should change back to ‘Invoiced’.
- As a result of a modification, if items get updated in the shipment where item cost is not fully captured though an invoice (Addition of a new item, increased quantity of an existing entry), Shipments (SO302000) screen should be updated as below.
- ‘Payment Captured’ checkbox à FALSE.
- Workflow status à Pending Payment
- Send to WMS action à Disabled
- Prepare Invoice action à Enabled
- Update Shipment action à Enabled
- Prepare Invoice should be selected to make the balance payment. When the action is selected, system should check for any existing invoices available for the shipment. If such invoice is available, system should direct to the relevant invoice to capture the additional payment. Once the full payment is captured, system should update below in Shipments (SO302000)
- ‘Payment Captured’ checkbox à TRUE.
- Workflow status à Payment Captured
- Prepare Invoice action àDisabled
- Send to WMS action à Enabled
- Update Shipment action à Enabled
- PAYMENTS tab should get populated with the new payment entry as shown blow.
- Send to WMS action should get enabled only if both conditions are met.
- ‘Payment Captured’ checkbox à TRUE,
- Status à Invoiced
- Once Send to WMS action is selected, system should make below changes to Shipments (SO302000) screen
- Workflow status à Shipping
- Update Shipment action à Disabled
- Confirm Shipment action à Enabled.
- After the shipment is sent to WMS, system should not allow to make any modifications to the shipment. Actions done in the related invoice should not have an impact on the shipment.
Note: Once the shipment is sent to WMS, WMS system must have the ability to do Pick, Pack and Confirm shipment via API call when “Shipment status” = Invoiced. The intent is to utilize and external WMS solution.
- Once the shipment is confirmed using Confirm Shipment action,
- Status -> Confirmed
- Finally, once the related invoice is released,
- Status -> Complete
Invoices, SO303000
Requirements
- User should be able to add only credit card payments to capture an unpaid balance
- Once the balance for the items in the relevant shipment is captured by using a credit card, it should be reflected on the Shipments (SO302000).
Proposed Solution
Customized process flow
- Customized process should be effective only for invoices related to shipment entries created with reference to sales orders where payment method is a credit card (Means of Payment (PaymentMethod.PaymentType) = ‘Credit Card’)
- When using ‘CREATE PAYMENT’ option, system should only allow to add payment methods where Means of Payment (PaymentMethod.PaymentType) = ‘Credit Card’
- If a payment method other than a credit card is selected, system should display the error “Please select a credit card payment method”
- Once a payment is captured, system should update PAYMENTS tab in Shipments (SO302000). Once the full payment is captured, apart from updating PAYMENTS tab, ‘Payment Captured’ checkbox should be updated as TRUE and ‘Workflow Status’ should get updated with status ‘Payment Captured’. System should update above only if both conditions mentioned below are met,
- Processing Status (ProcStatus) of the applied entry in the APPLICATION tab is equal to either“Captured” or ‘Pre-Authorized’.
- Unpaid balance (CuryUnpaidBalance) for items in the relevant shipment should be equal to 0.
(Only consider the unpaid balance of items which has the relevant shipment number updated in ARTran.SOShipmentNbr field.)
Note: Non-stock items will be added to the invoice separately which will increase above mentioned unpaid balance field. These items are not included in the relevant shipment. Hence the unpaid balance relevant to these items should not be considered when updating ‘Payment Captured’ checkbox, PAYMENTS tab and ‘Workflow Status’.
Note: If a payment is captured successfully (full/partial), system should not allow to delete the invoice.
- An invoice should allow to be released only after shipment confirmation is done for the relevant shipment (status = Confirmed)
Process Shipments, SO503000
Requirements
- Users should be able to process Prepare Invoice action for shipments which haven’t been confirmed yet.
- Users should not be able to process Confirm Shipment action until payments are captured and sent to WMS.
Proposed Solution
- Customized process should be effective only for shipment entries created with reference to sales orders where payment method is a credit card (Means of Payment (PaymentMethod.PaymentType) = ‘Credit Card’)
- Customization should be applicable only for actions Prepare Invoice and Confirm Shipment.
- Once an action is selected, addition to the entries populated on the grid based on the standard logic, additional entries should be populated according to the customized logic.
Prepare Invoice Action
- Additional shipment entries should be populated on the grid once all criteria mentioned below are met.
- Shipment status (Status) = ‘Open’ or ‘Invoiced’
- ‘Payment Captured’ checkbox = FALSE
Confirm Shipment Action
- Additional shipment entries should be populated on the grid once all criteria mentioned below is met.
- Shipment status (Status) = ‘Invoiced’
- Workflow Status = ‘Shipping’
- ‘Payment Captured’ checkbox = TRUE
Process Invoice and Memos, SO500500
Requirements
- Users should be able to process Create and Capture action for invoices for which relevant shipments are yet to be confirmed.
- Users should be able to use Release action on an invoice following the customization process only after the related shipment is confirmed.
Proposed Solution
- Customized process should be effective only for invoice entries created for shipments with reference to sales order where payment method is a credit card (Means of Payment (PaymentMethod.PaymentType) = ‘Credit Card’)
- Customization should be applicable only for actions Release and Create and Capture.
Create and Capture action
- Once a payment is captured and if successful, grid entries of PAYMENTS tab in Shipments (SO302000) screen should be updated based on payment entry details.
- If the full payment is captured for items in the shipment (Unpaid balance (CuryUnpaidBalance) = 0), additionally to updating the PAYMENTS tab,
- ‘Payment Captured’ checkbox in the Shipments (SO302000) screen should be updated as TRUE.
- Workflow Status in Shipments (SO302000) should be updated with the status ‘Payment Captured’.
Release Action
- Once the action is selected, based on the customized logic, entries populated on the grid should be limited.
- System should only display invoice entries for which related shipment is confirmed (status = Confirmed).
Note: In the customized process, invoices can be created prior to shipment confirmation. But it should not be allowed to be released until the shipment is confirmed.
Discover More Tips, Tricks and Other Features for Acumatica
SWK Technologies will help you get the most out of your ERP investment, leveraging our deep technological and industry knowledge as a top Acumatica partner and Community resource. Check out some of our Acumatica videos and other educational resources, and reach out to us when you’re ready to learn more tips and tricks to maximize your value return on your software.
Contact SWK here to gain access to more Acumatica tips, tricks, updates and tailored demos.
Get More Acumatica Tips & Tricks