BPM to prevent PackID creation


Hi everyone, I want to create a BPM that prevents a PackID from being created if the value of the shipment takes the customer over their credit limit. we do not include open orders in credit limits because we have customers with 50-100 orders that may be months away for delivery, but we are getting situations where say 10 Pack IDs are created on a Friday, the customer goes on credit hold on Monday but all the PackIDs can still be shipped. Any Ideas where to place the BPM and how to calculate the value of any open PackIDs

I think there’s a company setting to prevent shipping if on credit hold. It doesn’t prevent the packer from being created. Just from changing status to SHIPPED.

Do you want to stop a packer from.even being populated if customer is on credit hold?

Hi Calvin, thanks for getting back to me. Yes we have that setting ticked in the Company Configuration. We want to prevent the PackID from being created if the value of the PackID + any other open PackIDs added to the current invoice credit takes the customer over their credit limit. The problem is that the system will not have placed the customer on credit hold because as yet the invoice credit is not more than the credit limit.

There is a system BAQ called shipped not invoiced. Maybe you can modify that query to just give totals per customer. And then query that total in your BPM.

Vinay Kamboj

1 Like

As always, the devil is in the details.

You say “prevent Pack ID from being created”, but the math to determine that depends on the lines added to the packer. And you can’t add lines to a packer until you’ve given it a PackID.

You could do a “pre-check” if Packers are created by entering the OrderNum first. This would then determine if the lines of the releated order + open invoices, would be more than the credit limit. That would cause issues if you knew you were only shipping some of the order, but the whole order puts you over.

Any way that checks after each added line on the packer, would need to have a PackID already created.

This becomes easier, if the goal can be changed to “Prevent a packer from being marked SHIPPED, when its line would put the customer over the credit limit”. The you only need to do the check once.

1 Like

You are right Calvin. I have to let the PackID be created but prevent the ‘Shipped’ box from being ticked if the value of the PackID takes the customer over their limit. I think my next challenge will be that if the shipment is approved by the accounts dept how do I prevent the BPM from stopping it. Thanks for your help with this. Shipping is not an area I tend to get involved in very often.

How “secure” does the system that stops a shipment need to be? If shipping was to try and mark a packer as shipped, and received a message saying it needs approval, would a verbal OK from Accounting suffice? And rely on the shipper to choose correctly between buttons marked “Stop Shipment” and “Accounting Approved”.

If so, a BPM on the BO method that fries when a packer goes from OPEN to SHIPPED, could pop-up a BPM form and the result of which button was pressed, passed on to a condition widget that either throws an exception or allows the method to complete.

I had a meeting with the various departments this morning regarding this process. The directors want it set up so that only someone from within the accounts dept can ok the shipment (or of course a security manager)

How is that to physically happen? They want someone from the Accts dept to go into Cust Ship Entry and mark it shipped?

The BPM that stops the shipment could check to see if the user trying to ship it (the one actually changing the status to SHIPPED) belongs to a certain security group.

The process would be:

  1. Shipping personnel creates the packer as they normally would.
  2. When trying to mark it as shipped, the BPM does the math and to see if it is over the limit, and if the user belongs to the group that can authorize it.
    a. If it is under the limit, the packer gets marked SHIPPED, and things are like they normally are.
    b. If it is over the limit AND the user does not belong to the sec group, then Show a warning, and throw an exception to prevent the status from changing to to SHIPPED.
    c. If it is over the limit AND the user does belong to the sec group, then allow things to proceed as normal.

If you’re not already doing it, you probably want to enable Changelog on ShipHead.ShipStatus and ShipHead.ReadyToInvoice

There is out-of-the-box functionality that does this.

  1. In Company Configuration > Modules > Sales > Order set the Credit /Aging Limit Actions on Shipping to “Stop”.
  2. In Customer maintenance > Billing > Credit > Detail, enter their credit limit
  3. When a shipment occurs that will put them over their limit and shipping notifies Finance, the Finance person can go into Customer Credit Manager > Orders and UNCHECK the “Credit Hold” checkbox on that order to allow it to ship.
  4. Shipping department can then ship the package.

That’s what I thought too. But OP said

Does the built-in credit limit functionality place the customer on hold if this packer would put them over the limit? Or does it not do it until they packer has been invoiced?

1 Like

The credit calculation takes place when the “Shipped” checkbox is selected. If the value of the shipment puts the customer over their limit, the action is not allowed and an exception message occurs.

I must have something setup wrong, as it’s not doing what you say. I created set the Credit Limit for my test customer, created an order that exceeds that, and made a packer for it.

I was able to mark it as shipped with out any warnings.

And it did not put the customer on credit hold.

Hi Ernie, I am getting the same as Calvin. The customer does not get placed on credit hold until the invoicing. That is my problem. the shipping dept can ship as many orders as they like, with no warning or stops. We usually invoice on the following day but if the shipping dept are working over the weekend we could end up, as we have recently with half a dozen orders shipped for the same customer, any of which would exceed their credit limit.

The credit sections of the Customer Entry form only show credit for Invoices and Orders. Nothing about shipments.

Maybe it requires that the Credit / Aging Limit Action for sales Order be set to STOP also. We use WARN for this setting. Would using stop prevent entering/saving Orders that would exceed the limit, or only when the limit is already exceeded?

We looked at that but it prevents Order creation etc. We have it set to WARN as well. we want to be able to create and manufacture orders even if the customer is on credit hold.

Some quick testing shows that the Packer entry screen only warns or stops if the Customer is already on credit hold. It would require enabling the “Include Open Orders in Credit” setting on the customer.

But that would set the Credit Hold to true when any open order makes the sum of open invoices and open orders exceed the limit.

Wow… you’re both correct. The Credit Hold message only appears when the customer is ALREADY on credit hold… it does not reset Credit Hold if the shipment is the tipping point to go over the limit.

Although I don’t know how hard it would be, I’d probably hang a Pre-Proc Method Directive BPM on CustShip.Updatemaster to check the credit limit there… and then test out what things you’d like to have happen.

I could have sworn that when I used that functionality (admittedly it was in E9) that the shipment itself did the credit check.

That’s what we don’t want. We do a lot of project work where there are orders in the system that will not be delivered for months. That is why I was thinking along the lines of Invoice credit plus orders shipped but not invoiced, somehow triggering the credit hold, although I appreciate I did not explain it very well :slight_smile:

You explained it well. It’s just that the native functionality of E10 isn’t that clear.