session_begin(); $auth->acl($user->data); // Grab data $mode = request_var('mode', ''); $action = request_var('action', ''); $user_id = request_var('u', ANONYMOUS); $username = request_var('un', '', true); $group_id = request_var('g', 0); $topic_id = request_var('t', 0); if (false) { //login_box($phpbb_root_path . 'my_page.' . $phpEx, $user->lang['Hello']); login_box('http://www.buildlog.net/cnc_laser/erp/bom.html', 'Drawings: You must be logged into the forum to view the BOM','Thanks, you will be now redirected to the BOM page'); } else { ?> Buildlog.net Laser BOM

Bill Of Materials

The page gives you single level or indented BOMs for my laser assemblies. I try to be accurate, but there are bound to be some errors. I will continue to check it against my drawings and actual unit. There is probably a lot of hardware wrong. If you find any problems let me know and I will correct. The prices and sources are just for reference. There may be several source and varying prices on each item. These are the prices if you bought on your own. If you buy from me, it will usually cost more, but it will save you a lot of time and you will help support the development of buildlog.net open source projects.

Enter a number in the Part Number box. The top level number for the original laser is MAIN_ASSEMBLY and D30025 for the 2.x Laser. If you select single level, it will only show parts at that assembly level. If you don't, it will show the complete BOM at all sub levels. The first table shows the structure. The second one rolls all of the items from the first table into a single list of parts that is the sum of usages at all levels.

The Sub assemblies are highlighted in grey. They can be clicked to show the BOM at that level. If you want the BOM and cost for the frame for example, just click on it. Be aware that not all extrusions are at the frame level. There are extrusions on the table and the cover. Always double check the indented top level before buying anything.

This is an multi-level bill of materials, so each item is listed as the quantity required for the assembly it is in. If an item is used in multiple places you need to add those up. Additionally if more than one of a sub assembly is required you need to multiply the item quantities by the number of sub assemblies. In other words if you need 3 widget assemblies and each widget assembly needs 2 brackets, you need 6 brackets. It can get rather complicated for screws that might be used all over the place. To save you the trouble of dealing with this, there is a shopping list at the bottom that does all this math and boils it down to how many of each part you need to build the entire assembly. Also, you can filter the shopping list by the various supplies.


acl_get('a_')) { //echo "You are an admin and can edit this stuff"; } ?>

Part Number
/>Filter Shopping List By: selectList(getPostVar("supplier",1)); ?>

dbGetFromPn($parent); if ($itmParent->Id != -1) { if (getPostVar("doFilter","") == "true") { $supplierFilter = getPostVar("supplier",-1); } else { $supplierFilter = -1; } //echo $itmParent->partNumber; echo ""; echo ""; echo ""; recusiveBom($itmParent->Id,1, 1,!$single_level,false); echo "
Bill of Materials For: $parent
Part NumberDecriptionQtyUOMITSupplierSupplier P/NDrawing
"; //echo count($bomRollup); if (count($bomRollup) > 0) { $totalCost = 0; ksort($bomRollup); echo "
"; echo "
"; echo ""; echo ""; echo ""; foreach ($bomRollup as &$value) { if ($value->itemType != 1) { // see if we are filtering if ($supplierFilter == -1 || $supplierFilter == $value->supplier) { echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; $costExtended = $value->unitCost * $value->qty; $totalCost += $costExtended; echo ""; echo ""; } } } echo ""; echo "
Shopping List
All Levels/Qty's From Above Rolled Up Into One List
P/NDescQtySupplierSupp P/Ncost percost ext
$value->partNumber$value->description$value->qty$value->supplierName$value->supplierPn$" . number_format($value->unitCost,2) . "$" . number_format($costExtended,2) . "
Total$" . number_format($totalCost,2) . "
"; } //print_r($bomRollup); } else { echo "Parent Not Fount"; } //echo $itmParent->partNumber; } ?>

 

Send comments, suggestions, corrections to bdring@buildlog.net