You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by Saurabh Dixit <sa...@hotwaxsystems.com> on 2018/07/14 09:00:14 UTC

Manufacturing workflow Improvements

Hello All,

While working on the Manufacturing workflow, I found a gap in the creation
of requirements using createATPRequirementsForOrder service.

Failing Scenario:

Consider a fresh setup up with a product of type FINISHED_GOOD with a BOM
(say product whose inventory is always 0 or less than 0) whose attributes
are as follows,

ordered = 4 (with a check of cancelQty = null)
minimumStock = 0
atp = 0
previousRequirements = 0

So, the shortfall will be calculated as,

shortfall = minimumStock - atp - previousRequirements = 0 (results in a
zero)

then, the min(ordered, shortfall) is calculated which evaluates to be,

required = min(ordered, shortfall) = min(4,0) = 0

This required is then compared with value ZERO, and the maximum between the
both decides the further flow. If the required is found max then, the
createRequirement is called and the requirement is created, if not, then
the requirement for that order item is skipped and the loop continues with
the next order item.

In this case, it evaluates as,
max(0, 0) <= 0 which evaluated to true, and the loop continues to execute
for other items (if any) instead of creating the requirement for the
ordered quantity.

If we now see the Sales Order and the quantity for which the requirement
was meant to be created (but had not),
Qty (Sales Order asks for) = 4
Qty (Requirement is created) = 0,

This definitely represents the flaw in the process, which is to choose the
max(ordered, shortfall) instead of min(ordered, shortfall) based on some
condition that distinguishes the scenarios, so that this case is also
considered with the previous workflow.

Please put forth your valuable feedbacks.

Thanks and regards

Saurabh Dixit
Enterprise Software Engineer
HotWax Systems

Re: Manufacturing workflow Improvements

Posted by Suraj Khurana <su...@hotwaxsystems.com>.
Thanks Saurabh,

One thing I would like to add here is createATPRequirementsForOrder service
runs before reservation logic.
IMO, we should change that seca rule event to 'global-commit-post-run'
instead of 'commit'.

In this way, requirement generation flow will run after reservation logic
and shortfall calculation will become more accurate.
Also, I see no reason to calculate minimum from shortfall and ordered
quantity. I guess we should create requirement for shortfall quantity if
results to a positive integer.

HTH.
--
Thanks and Regards,
Suraj Khurana | Omni-channel OMS Technical Expert



On Sat, Jul 14, 2018 at 2:30 PM, Saurabh Dixit <
saurabh.dixit@hotwaxsystems.com> wrote:

> Hello All,
>
> While working on the Manufacturing workflow, I found a gap in the creation
> of requirements using createATPRequirementsForOrder service.
>
> Failing Scenario:
>
> Consider a fresh setup up with a product of type FINISHED_GOOD with a BOM
> (say product whose inventory is always 0 or less than 0) whose attributes
> are as follows,
>
> ordered = 4 (with a check of cancelQty = null)
> minimumStock = 0
> atp = 0
> previousRequirements = 0
>
> So, the shortfall will be calculated as,
>
> shortfall = minimumStock - atp - previousRequirements = 0 (results in a
> zero)
>
> then, the min(ordered, shortfall) is calculated which evaluates to be,
>
> required = min(ordered, shortfall) = min(4,0) = 0
>
> This required is then compared with value ZERO, and the maximum between the
> both decides the further flow. If the required is found max then, the
> createRequirement is called and the requirement is created, if not, then
> the requirement for that order item is skipped and the loop continues with
> the next order item.
>
> In this case, it evaluates as,
> max(0, 0) <= 0 which evaluated to true, and the loop continues to execute
> for other items (if any) instead of creating the requirement for the
> ordered quantity.
>
> If we now see the Sales Order and the quantity for which the requirement
> was meant to be created (but had not),
> Qty (Sales Order asks for) = 4
> Qty (Requirement is created) = 0,
>
> This definitely represents the flaw in the process, which is to choose the
> max(ordered, shortfall) instead of min(ordered, shortfall) based on some
> condition that distinguishes the scenarios, so that this case is also
> considered with the previous workflow.
>
> Please put forth your valuable feedbacks.
>
> Thanks and regards
>
> Saurabh Dixit
> Enterprise Software Engineer
> HotWax Systems
>