Revision [1370]

This is an old revision of PhantomAssemblies made by PhilDaintree on 2009-02-03 01:25:09.

 

Phantom Assembly Functionality


Phantom assembly levels in a bill of materials are useful for large, complicated products.


Concepts


Phantom assembly items, also known as make-on-assembly, are parts that have a bill of materials, but are not usually produced with a work order. Rather, they are produced as part of a parent assembly. The material requirements for a work order would not include the phantom item, but would include all of its components. This allows a more structured organization of the bill of materials, without adding more work orders or stocked assemblies. Someone recommended the following link for an additional conceptual overview of the phantom assembly item.

http://help.sap.com/saphelp_scm41/helpdata/en/3d/059d61749b11d7b5b1006094b9b9a0/frameset.htm


Functional Details


It seems natural to use the stock type "Assembly" (mbflag='A') to represent phantom items. They appear to be essentially the same concept. This would require changing Stocks.php to allow Assembly items to have a bill of materials.

<Phil Daintree>Yes assembly items may fit the "bill" here. Currently assembly items can have their own bill of materials. But they cannot be children of a parent BOM. What I was trying to avoid here was to have an assembly item within another assembly item in particular. There is a description of assembly items in the manual as:

"An assembly of other stock items. An assembly item does not have a physical stock holding itself, nor has it a cost. An invoice for an assembly item creates the stock movements for all the components of the item and the stock of each of the components in proportion to the requirements specified in the bill of material are decremented. The cost of sales entries in the general ledger journals created by an invoice (if the link is active) is created at the sum of the costs of all the items in the bill of material for the assembly as at the time of invoicing."

It is a selling tool to sell a set of items as a single item.

However, the manual describes a Kit-Set as:

"A kit set of other stock items that should be exploded into its components when ordered. A kit set is not a physical item itself it is just a short cut to entering a number of parts onto an order. Unlike an assembly, the kit set part does not appear on invoices or orders, but explodes into its component parts for modification. It follows that kit sets do not have any cost or physical stock quantities associated with them. "

me thinks that the kit-set is the closest to a phantom on the sales side... and perhaps we should use a kit-set to build this functionality to expand the manufacturing capabilities of the system.

The to-do list then:
  • modify the BOM.php script to allow kitsets to be components of manufactured items.
  • modify WorkOrderReceive.php to autoissue/backflush the components of kit-sets on the BOM of the parent item being received
  • modify the WorkOrderIssue.php to issue the components of a selected kit-set issued to the work order. This could be tricky in that all ~the components of the kit-set (phantom) would be shown against the work order and the number of phantoms (kit-sets) would not be shown - the system would still be calling for the balance of the kit-set items to be issued and on demand. Not sure how to overcome this... might need to hide kit-set (phantom) components on a work order reports - perhaps using a new field to flag them as such (as we do for stockmovements for assembly item components on invoices)

What else???

</Phil Daintree>


<Matt Taylor>
more to-dos:
</Matt Taylor>

<Phil Daintree>
Yes that overcomes that one nicely - so long as it is acceptable to show the real components as exploded from the kit-set BOM are added to the WO Requirements.
Not sure why we need to modify stocks.php at all? I think it is possible to change from manufactured to kit-set currently. We do need to think about the error trapping here - kit-set items are now allowed to be components of a BOM of a manufactured item. But can we have a kit-set that has a kit-set as a component? How does this work for sales orders - do we wish to modify SelectOrderItems.php to allow multi-level kit-sets?? Hmmm.... maybe not perhaps we should create a new type called "phantom" after all. Better I think to distinguish this as different functionality from kit-sets. We should not be able to order a phantom so some changes required to sales order entry too.

The components of kit-sets may not necessarily be auto-issue components though ... should they? If they are simply exploded from the kit-set at the time of WorkOrderEntry.php then it doesn't matter if they are or not me thnks... the phantom then works the same as a kit-set does on a sales order - simply explodes into its components on creation of a work order. OK, the recursion is necessary to cope with phantoms inside a phantom! There is a function inside the BOMs.php script that deals with this scenario I think to check for a recursive BOM - where the item is a component of itself.
</Phil>


Work order requirements would have to be selected recursively.

<Phil Daintree>
When we show an item in StockStatus.php we show the demand against the item and we would need to modify this script to show demand from all work orders - pretty sure there is some recursive function - I think maybe 10 levels deep without looking back at the code...
</Phil Daintree>




This is probably the hardest part (and the most fun to program) The cleanest solution would be a stored function in the database (MySQL>5.0).
<Phil Daintree>
Not so clean if we ever need to move to another DB... I am keen to keep all SQL as nice generic ANSI SQL all in the code of the scripts to give us maximum portability and flexibility. Hence stored procedures aren't really an option.
</Phil Daintree>


The most portable/flexible method would be a recursive PHP function.


Affected Modules


Stocks.php, WorkOrderEntry.php

Valid XHTML :: Valid CSS: :: Powered by WikkaWiki