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 event that triggers
the transition from the PendingPayment
state to the
ReadyForAssignment
state should be fired, you need to calculate
the percentage of the invoice amount that has been prepaid.
- In MYOB Acumatica, open the Invoices 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 form, and then perform this instruction.
Exploring the Source Code of the Release Method
To fire the event that triggers the transition from the
PendingPayment
to ReadyForAssignment
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 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 event that triggers the transition from the
PendingPayment
state to the ReadyForAssignment
state.