Hi,
My application releases payment via this event
Is there opportunity to return Checks and Payments item status from “Closed” to “Balanced” ?
Hi,
My application releases payment via this event
Is there opportunity to return Checks and Payments item status from “Closed” to “Balanced” ?
Yes, it is possible.
you can invoke form Base graph like below.
Base.putonhold.Press();
Base.ReleaseFromHold.Press();
Hi
I am trying to implement logic that we discussed, unfortunately, payment is not being removed from hold when this code is executed,
string referenceNbr = "001985";
APPaymentEntry graph = PXGraph.CreateInstance<APPaymentEntry>();
graph.Document.Current = graph.Document.Search<APPayment.refNbr>(referenceNbr);
graph.UnattendedMode = false;
try
{
graph.voidCheck.Press();
}
catch (PXRedirectRequiredException) { }
// graph.Document.Current.Status = "B";
graph.putOnHold.Press();
graph.releaseFromHold.Press();
However, it worked for several items, for example : 001987 and 001986 were void via code if I missed part with removing from hold
But it did not worked for item 001985, can you suggest what is wrong with my code ?
Hi
Hi
Thanks for the reply
I stopped at the stage that I described in my last comment, can’t fix it still
Hi
You would want to catch the event handler using a breakpoint. You would step through the ReverseApplication method line by line and see where it is triggering that event handler. You shouldn’t need to debug the file in your screenshot. Some values will be optimized away and not available to read.
The error occurs in Adjustments.Update(adj); row. In Update method it calls this event
You would want to catch the event handler using a breakpoint. You would step through the ReverseApplication method line by line and see where it is triggering that event handler. You shouldn’t need to debug the file in your screenshot. Some values will be optimized away and not available to read.
At this point you just need to do some standard debugging to figure out what is causing the issue. It would seem that something is attempting to set that field to a null value(trying to cast null as a non-nullable decimal would cause that error) . I would try and figure out where in the ReverseApplication method is triggering the event handler and track the value of that field.
It looks like I do it in wrong way or this approach does not fit for my goal.
I can not currently debug it as usually, because when I try to check the callstack of Acumatica it gives me this
Also in watch not all object are available for check
Is there opportunity to troubleshoot it ?
At this point you just need to do some standard debugging to figure out what is causing the issue. It would seem that something is attempting to set that field to a null value(trying to cast null as a non-nullable decimal would cause that error) . I would try and figure out where in the ReverseApplication method is triggering the event handler and track the value of that field.
Your breakpoints aren’t bound, that’s what that little hazard icon on them means. Calling the press method generates the adapter before calling the actual handler. If you hover over the breakpoints visual studio should tell you why they aren’t bound. I think by default Visual Studio has the “Just My Code” setting enabled that you would need to disable to debug Acumatica code.
Here’s an article that goes a bit more in depth: https://asiablog.acumatica.com/2016/04/debug-acumatica-code.html
it causes error in this method
Your breakpoints aren’t bound, that’s what that little hazard icon on them means. Calling the press method generates the adapter before calling the actual handler. If you hover over the breakpoints visual studio should tell you why they aren’t bound. I think by default Visual Studio has the “Just My Code” setting enabled that you would need to disable to debug Acumatica code.
Here’s an article that goes a bit more in depth: https://asiablog.acumatica.com/2016/04/debug-acumatica-code.html
A limited subset of the Acumatica source code is kept inside the CodeRepository folder and you can use it for debugging.
The breakpoint should trigger once the action is called. From there you can just step through the method and figure out where/why the error is occurring.
Hi
I entered this method
but debug do not enter here. Project is built.
Can be problem be in moment that this method requires PXAdapter, but I do not send this object
If problem can be in that , how I must send it here ?
A limited subset of the Acumatica source code is kept inside the CodeRepository folder and you can use it for debugging.
The breakpoint should trigger once the action is called. From there you can just step through the method and figure out where/why the error is occurring.
No, you would navigate to APPaymentEntry.cs which is in the Acumatica source code and add a breakpoint at the start of the ReverseApplication method.
You place a breakpoint inside the ReverseApplication method in APPaymentEntry.cs then walk through that method to see what is causing the error.
I must override reverseApplication method ?
Because “go to implementation” option is not available and “go to definition” gives me this
You place a breakpoint inside the ReverseApplication method in APPaymentEntry.cs then walk through that method to see what is causing the error.
When a payment is released it is really just releasing the adjustments that are under the Document to Apply tab, a payment is moved to the closed status when it no longer has an open balance on it. Released adjustments will show under the application history tab.
So what your code is supposed to be doing is setting the Current adjustment and then invoking the reverse application action.
Assuming the payment does have an adjustment to be reversed I would check that your code is getting that record and setting it to the current value(debug and check the variable values). And if that all looks good, you can debug into the reverseApplication method to get a more exact idea of what is throwing that error.
I checked record for setting to the current value and it looks good. I am receiving adjustment
How exactly I should debug into the reverseApplication ? Its just throwing exception here
When a payment is released it is really just releasing the adjustments that are under the Document to Apply tab, a payment is moved to the closed status when it no longer has an open balance on it. Released adjustments will show under the application history tab.
So what your code is supposed to be doing is setting the Current adjustment and then invoking the reverse application action.
Assuming the payment does have an adjustment to be reversed I would check that your code is getting that record and setting it to the current value(debug and check the variable values). And if that all looks good, you can debug into the reverseApplication method to get a more exact idea of what is throwing that error.
Can you explain what adjustments it should contain ?
I need to process any Payments that were released accidently and return them back
I checked my item
Is there universal approach to return Payments back after they were released ?
Its difficult to say with such limited context. My best guess would be that graph.APPost.SelectSingle() is returning null(because there are no released adjustments). You can debug into the reverseApplication method to get more information.
Does the payment that you are trying to reverse the application for actually have an application?
Unfortunately that error doesn’t give much information, just that something that the method was trying to reference was null. It’s not an error I’ve come across before. You can unpublish your customizations and then republish one by one to figure out which one is causing it though.
Hi
we updated Acumatica from 2020R2 to 2021R2
Now I am able to use code that You suggested in previous message
I have added this part
graph.APPost.Current = graph.APPost.SelectSingle();
but now I am getting Object reference
Before I did not added I did not receive any errors
please, suggest what I should fix
Unfortunately that error doesn’t give much information, just that something that the method was trying to reference was null. It’s not an error I’ve come across before. You can unpublish your customizations and then republish one by one to figure out which one is causing it though.
I cancelled all customization projects but it did not help
Is there any chance to reload this button in endpoint ?
Unfortunately that error doesn’t give much information, just that something that the method was trying to reference was null. It’s not an error I’ve come across before. You can unpublish your customizations and then republish one by one to figure out which one is causing it though.
no setting the current record on a view means
>GRAPH NAME]..VIEW NAME].Current = Record]
That is what you are doing with the Document view when you
graph.Document.Current = graph.Document.Search<APPayment.refNbr>(referenceNbr);
So assuming the view name is APPost you would need something like(this would just select the first record of the view).
graph.APPost.Current = graph.APPost.SelectSingle();
If you are getting an error when trying to inspect the action/grid then you have something else going on. I would check the trace(there should be more detailed error messages there) and look through your customizations to find which one is causing the issue.
Thanks for provided code
can you help with this error , I checked it at stack trace as you have suggested
no setting the current record on a view means
>GRAPH NAME]..VIEW NAME].Current = Record]
That is what you are doing with the Document view when you
graph.Document.Current = graph.Document.Search<APPayment.refNbr>(referenceNbr);
So assuming the view name is APPost you would need something like(this would just select the first record of the view).
graph.APPost.Current = graph.APPost.SelectSingle();
If you are getting an error when trying to inspect the action/grid then you have something else going on. I would check the trace(there should be more detailed error messages there) and look through your customizations to find which one is causing the issue.
For the reverse application action to work you have to first select an application to reverse. Under the Application History tab is where you can see all the released applications. In the UI you would click one of the application rows and then click the Reverse Application button.
To accomplish this via code you would need to set the current record of the application history view to the application you want to reverse before calling reverseApplication. I don’t know the name of the view in 2020R2 but it should be easy to inspect the grid to get the view name.
At Acumatica 2020R1 I can check ReverseApplication
but at 2020R2 I receive exception when I try to check name of this Action via Customization tab
How can I troubleshoot it ?
According to your response : “To accomplish this via code you would need to set the current record of the application history view to the application you want to reverse before calling reverseApplication”
Setting current record it means transferring ReeferenceNbr of item that I need to reverse ?
What should be putted to my code from that place ?
For the reverse application action to work you have to first select an application to reverse. Under the Application History tab is where you can see all the released applications. In the UI you would click one of the application rows and then click the Reverse Application button.
To accomplish this via code you would need to set the current record of the application history view to the application you want to reverse before calling reverseApplication. I don’t know the name of the view in 2020R2 but it should be easy to inspect the grid to get the view name.
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.