Step 3: Exploring the MYOB Acumatica Source Code
In this step, you will explore the source code of the Invoices (SO303000) and Payments and Applications (AR302000) forms of MYOB Acumatica. You will explore the code of these forms to learn the field names and methods
you need to use in order to determine where and when to fire the event that triggers
the transition from the PendingPayment
state to the
ReadyForAssignment
state.
Learning Field Names
To determine whether an invoice has been prepaid and whether the workflow event that
triggers the transition from the PendingPayment
workflow state to
the ReadyForAssignment
workflow state should be fired, you need to
calculate the percentage of the invoice amount that has been prepaid.
- In MYOB Acumatica, open the Invoices (SO303000) form.
- To open the Element Inspector for the Balance box,
press Ctrl + Alt and click the box.
In the Element Properties dialog box, which opens, notice that the Balance box is defined by the
CuryDocBal
field of theARInvoice
data access class. - To open the Element Inspector for the Amount box,
press Ctrl + Alt and click the box.In the Element Properties dialog box, which opens, notice that the Amount box is defined by the
CuryOrigDocAmt
field of theARInvoice
data access class.Tip:If you do not see the Amount box on the form, you need to select the Validate Document Totals on Entry check box on the Accounts Receivable Preferences (AR101000) form, open or refresh the Invoices (SO303000) form, and then perform this instruction.
Exploring the Source Code of the Release Method
To fire the workflow event that triggers the transition from the
PendingPayment
to ReadyForAssignment
workflow
state, you need to first override the method where the outstanding amount of the
invoice (which you just explored) is calculated and updated. This recalculation is
performed on release of the prepayment that is applied to an invoice. Thus, to find
the method to override, you need to explore the code of the action that is
associated with the Release button on the Payments and Applications (AR302000) form.
If you
explore the code of the Release button (as described in
Step 3: Exploring and Debugging the Code), you can notice in the code that the amounts of the invoice, including the
CuryDocBal
field value, are recalculated in the
UpdateBalances
method of the
ARReleaseProcess
class. To make sure this is the right
method to override, add a breakpoint to the UpdateBalances
method,
run the application in debug mode, and trace how the CuryDocBal
value is changed in the method.
As a result of this debugging, you can see that UpdateBalances
is
the method that you should override to calculate the prepaid percentage of the
invoice and to fire the workflow event that triggers the transition from the
PendingPayment
workflow state to the
ReadyForAssignment
workflow state.