Suppress Pop-Up of the Credit Hold in Order Entry

Hello,

I was hoping someone could help me suppress the credit hold pop up in Order Entry when adding a new line and saving, if possible.

I am currently running 10.2.700.24 in case that makes a difference.

Any help is appreciated.

1 Like

That alert is happening on the client side. Usually some BO will tell the UI that it needs to throw a message of various types. Run a trace and see if you can figure out where the UI is being told to throw that error. Sometimes there’s nothing you can do about messages like these other times you can modify the output of a method from a BPM post process and suppress them. It’s a toss up.

1 Like

It seems to be triggering during a: <methodName>MasterUpdate</methodName>

Here is the part of the trace that mentions credit hold:

<returnValues>
<returnParameter name=“lContinue” type=“System.Boolean”><![CDATA[True]]></returnParameter>
<returnParameter name=“cResponseMsg” type=“System.String”><![CDATA[Customer 64570 has been placed on credit hold. Do you want to continue?]]></returnParameter>
<returnParameter name=“cCreditShipAction” type=“System.String”><![CDATA[STOP]]></returnParameter>
<returnParameter name=“cDisplayMsg” type=“System.String”><![CDATA[]]></returnParameter>
<returnParameter name=“cCompliantMsg” type=“System.String”><![CDATA[]]></returnParameter>
<returnParameter name=“cResponseMsgOrdRel” type=“System.String”><![CDATA[]]></returnParameter>
<returnParameter name=“cAgingMessage” type=“System.String”><![CDATA[]]></returnParameter>
<returnParameter name=“ds” type=“Erp.Tablesets.SalesOrderTableset”>
<SalesOrderDataSet xmlns=“http://www.epicor.com/Ice/300/BO/SalesOrder/SalesOrder”>

Not sure what to do with this?

How do I know if I can suppress this or not?

This is the only location that I see a setting on the Credit info for order entry. (Credit/Aging Limit Actions section) Nothing to prevent the message. Reading about override though it states there is a Credit Hold Override on the order,(EDIT* I can’t even seem to find the override check box in my install, so I’m not sure how viable that is) I’m not sure if that makes the prompt go away when saving? But it’s something that would need to be checked off for whatever orders you don’t want this to pop up on I think.

Obviously the other option is to take said customer off of credit hold. We use it incorrectly here and use that as a flag which means they use a CC as a payment source so to not ship the order until the card has cleared. I know that’s not even the right way to use that flag, but I’m only the IT guy I don’t determine how they use the system.

returnParameter name=“cResponseMsg” type=“System.String” ![CDATA[Customer 64570 has been placed on credit hold. Do you want to continue?]] /returnParameter

I have to imagine that’s the line you’re looking for. In a post process BPM for MasterUpdate set the argument cResponseMsg to string.Empty

1 Like

From a Business prespective, isnt it good information to know that your Customer is on Credit Hold? :slight_smile:

3 Likes

It already tells you when you open the Sales Order.

It’s the repitition on every save that gets frustrating.

@jgiese.wci - I will check out your suggestion.

1 Like

Now look at these two variables on an order that doesn’t have a credit hold… In the BPM you may need to change these variables to whatever those are in an order where no credit hold is present. That might stop the message.

The best practice is to use the Credit Manager to overRide the Customer credit hold by order.
The field is on the OrderHed table and can be updated using an updateable dashboard.

It is not a good practice to take the customer off hold to make a shipment of one of many orders.

Bruce

4 Likes

@jgiese.wci

Looks like your suggestion worked for me on this.

I truly appreciate all the help I get on here!

Thank you all!

2 Likes

@jgiese.wci

Hey,

I thought you had the solution but it caused a new issue.

When I have the message blanked, it stops the save of the new line. The line number stays 0.

Is there any way to get it to send the yes response automatically?

image

I am very sure that I was able to suppress this on the sales order lines in the past… here is what I remember doing:

  1. I ran a trace when saving a new line… saw which business object was called (something with “credit check” in the name).
  2. I believe I created a POST PROCESSING BPM that changed the results of the credit check so that it didn’t look like the customer was on hold (turned off the on-hold flag)… I believe that I even did this so that it would still let the on-hold flag go through the first time. to do this, I set a variable with the “last order number” that was checked… so if the current order <> BPM Variable, then allow the flag to go through… and set the BPM variable to the current order… but otherwise, turn off the credit hold flag.
    OR… I could have a totally faulty memory, and I am making this all up… who knows.

Run trace on an order that the customer isn’t on hold and compare. Did you do anything with the cCreditShipAction param? might need to adjust that too. Or it’s possible that the cResponseMsg comes back with something else in it.

1 Like

Oof, I have a customer looking to suppress the pop-up and I was really hoping it would be as simple as attacking the cResponseMsg parameter as @jgiese.wci was saying (maybe it still is?)

And, just ranting here, the pop-up box is a terrible design choice by Epicor!!! It’s so annoying, triggers way too frequently, and is redundant as the UI already has plenty of EpiShapes that tell the user about credit/aging holds.

1 Like

Tom, what is the response in the trace when there is no credit pop up? Is there any way to set the variables in the dataset to the same as the values when no pop up exists?

I would love to see a checkbox option to turn on or off any message boxes that might pop up in Epicor. Complete control over what is shown and what isn’t.

I find it very in-between as to what we can suppress via config settings and what we can’t.

I don’t think that adding message boxes should be taken lightly. You often see these added when doing release upgrades or version upgrades.

They shouldn’t be added just because… and even if it is a good idea to show it, I feel like we should have control over whether we would like to show it.

1 Like

I haven’t dug that far into the details yet. But what you suggest is exactly what I had in mind when I told the customer “yeah… we can do that” :slight_smile:

I think I will hang tight and see what @shobdy comes up with :slight_smile:

1 Like

So when I review the source code I understand why that’s not working. Below is where the UI calls MasterUpdate and what it does when the update returns.

ordAdapter.MasterUpdate(lCheckForOrderChangedMsg, lcheckForResponse, this.LastView.ViewName, this.currentBTCustNum(), this.currentOrderNum(), weLicensed, out lContinue, out cResponseMsg, out cCreditShipAction, out cDisplayMsg, out cCompliantMsg, out cResponseMsgOrdRel, out cAgingMessage);
				savedShipAction = cCreditShipAction;
				lReadyToShip = true;
				creditStatusMassage = false;

				// New code for using MasterUpdate
				if (this.throwHoldMessage && cResponseMsg.Length > 0 && checkCustCreditLimit && LastView.ViewName == "OrderHed")
				{
					if (lContinue == false)
					{
						Ice.Lib.EpiMessageBox.Show(cResponseMsg);
						return false;
					}
				}
				else if (this.throwHoldMessage && cResponseMsg.Length > 0 && checkCustCreditLimit && (LastView.ViewName == "OrderDtl" || LastView.ViewName == "OrderRel" || LastView.ViewName == "OrderMsc" || LastView.ViewName == "OHOrderMsc"))
				{
					if (lContinue == false)
					{
						Ice.Lib.EpiMessageBox.Show(cResponseMsg);
						return false;
					}
					else
					{
						bool lAnswer = true;

						if (cResponseMsg != "CreditHold")
							lAnswer = Ice.Lib.EpiMessageBox.Show(cResponseMsg, EpiString.GetString("Warning"), System.Windows.Forms.MessageBoxButtons.YesNo) == DialogResult.Yes;
						else
							Ice.Lib.EpiMessageBox.Show(EpiString.GetString("CustomerCreditHold"));

						if (lAnswer == false)
						{
							return false;
						}
						else
						{
							if (this.CounterSale && cCreditShipAction.CompareTo("WARN") == 0)
							{
								lReadyToShip = (Ice.Lib.EpiMessageBox.Show(EpiString.GetString("OKShip"), string.Empty, MessageBoxButtons.YesNo) == DialogResult.Yes);
							}

							this.throwHoldMessage = false;
							checkCustCreditLimit = false;
							if (currentView == "OrderDtl" && proposedView == "KitPartInfo")
								kitPartInfoView.dataView[kitPartInfoView.Row]["ShowKitDtls"] = !(Boolean.Parse(kitPartInfoView.dataView[kitPartInfoView.Row]["ShowKitDtls"].ToString()));
							ordAdapter.MasterUpdate(false, checkCustCreditLimit, this.LastView.ViewName, this.currentBTCustNum(), this.currentOrderNum(), weLicensed, out lContinue, out cResponseMsg, out cCreditShipAction, out cDisplayMsg, out cCompliantMsg, out cResponseMsgOrdRel, out cAgingMessage);

						}
					}
				}

This section in particular is where it creates a local lAnswer variable sets it to true and then that gets set and checked again later. If it gets set to False from the answer dialog we normally see it drops out of the update. Unfortunately that exhausts the easy fix options.

I ran this through a live debug and confirmed with cResponseMsg empty it doesn’t even go through this check. What is happening is in the BO it’s not creating the line and when you click yes to this message somewhere in the UI, I think it might trigger an update with something else flagged that tells the BO to actually save the line.

1 Like

On Sales Order mine are just two action blocks and one on CustShip. I got all of them from a post on E9 years ago.

On CheckCustomerCreditHold
image
image
On CheckCustomerCreditLimit
image
image
OnChangeofSoldToCreditCheck
image
image
On CustShip.GetHeadOrderInfo
image

The issue is the MasterUpdate method in his case @gpayne