//Last Corectly Made changes in ->Check the below version //Version 73.7 //01-Jul-2024 18:25:55 hide Reset1; hide MRP_No; fet_pref = Preferences[Module_Name = "MRP"]; input.Auto_Approval = fet_pref.Auto_Approval; if(input.Work_Order_Subform_ID != null) { fet_wosub = Work_Order_Subform[ID == input.Work_Order_Subform_ID]; fet_wo = Work_Order[ID == fet_wosub.Work_Order_Exis_ID]; if(fet_wo.Form_Mode == "Direct WO") { hide Sales_Order_No; hide Customer_Name; } input.Sales_Order_No = fet_wo.Sales_Order_Nos; input.Customer_Name = fet_wo.Customer_Name; input.Work_Order_Date = fet_wo.Work_Order_Date; input.Part_No = fet_wosub.Part_No; input.Part_Name = fet_wosub.Part_Description; input.Category = fet_wo.Category; input.Sub_Category = fet_wo.Sub_Category; input.MRP_Qty = fet_wosub.WO_Qty; input.Work_Order_No1 = fet_wo.ID; fet_bom = Create_BOM[Part_No == input.Work_Order_Subform_ID.Part_No && Status == "Active"]; level1 = BoM_FG_Subform[BOM_FG_Exis_ID.Part_No == input.Part_No && BOM_FG_Exis_ID.Status == "Active"]; inside_gplevel1 = 0; inside_gplevel2 = 0; inside_gplevel3 = 0; inside_gplevel4 = 0; inside_gplevel5 = 0; for each levellist1 in level1 { level2 = BoM_FG_Subform[BOM_FG_Exis_ID.Part_No == levellist1.Part_No && BOM_FG_Exis_ID.Status == "Active"]; if(levellist1.Material_Item_Type.Material_Type == "CWPL Products" || levellist1.Material_Item_Type.Material_Type == "HR Coils and Sheets") { cwplrow = MRP.BoM_Details_CWPL(); inven1 = Inventory[Part_No == levellist1.Part_No].sum(Available_Qty); cwplrow.Part_No=levellist1.Part_No; cwplrow.Part_Name=levellist1.Part_Description; cwplrow.UoM=levellist1.UoM; cwplrow.Work_Order_No=fet_wo.ID; cwplrow.Stock_Qty=inven1.round(0); cwplrow.Material_Item_Type=levellist1.Material_Item_Type; cwplrow.bom_stk_qty=ifnull(levellist1.Qty,0.0); cwplrow.Level="Level-1"; cwplrow.test_level="Level-1"; cwplrow.Create_BoM_RECID=fet_bom.ID; cwplrow.Tot_BoM_Qty=ifnull(input.MRP_Qty,0) * ifnull(cwplrow.bom_stk_qty,0.0); //CALCULATION PART if(cwplrow.Stock_Qty >= input.MRP_Qty) { cwplrow.Actual_Qty=0; cwplrow.Plan_Qty=0; cwplrow.BoM_Qty=ifnull(input.MRP_Qty,0); //cwplrow.BoM_Qty=0; } else if(cwplrow.Stock_Qty < input.MRP_Qty) { cwplrow.Actual_Qty=ifnull(input.MRP_Qty,0) * ifnull(cwplrow.bom_stk_qty,0.0) - ifnull(cwplrow.Stock_Qty,0); cwplrow.BoM_Qty=ifnull(input.MRP_Qty,0); cwplrow.Plan_Qty=ifnull(input.MRP_Qty,0) * ifnull(cwplrow.bom_stk_qty,0.0) - ifnull(cwplrow.Stock_Qty,0); } else if(cwplrow.Stock_Qty > input.MRP_Qty) { cwplrow.BoM_Qty=ifnull(input.MRP_Qty,0); cwplrow.Actual_Qty=0; cwplrow.Plan_Qty=0; } input.BoM_Details_CWPL.insert(cwplrow); } for each abc in BoM_FG_Subform[BOM_FG_Exis_ID.Part_No == input.Part_No && BOM_FG_Exis_ID.Status == "Active" && Material_Item_Type.Material_Type == "General Purchase"] { if(inside_gplevel1 == 0) { if(abc.Material_Item_Type.Material_Type == "General Purchase") { fetind = Indent_Sub_Form[Part_No == abc.Part_No].sum(Required_Qty); dprsub = DPR_General_Purchase_Stock_Qty[Part_No == abc.Part_No]; gprow = MRP.BoM_Details_General_Purchase(); inven = Inventory[Part_No == abc.Part_No].sum(Available_Qty); gprow.Part_No=abc.Part_No; gprow.Part_Name=abc.Part_Description; gprow.UoM=abc.UoM; gprow.Work_Order_No=fet_wo.ID; gprow.Material_Item_Type=abc.Material_Item_Type; gprow.Org_BoM_Qty=ifnull(abc.Qty,0.0); gprow.Stock_Qty=inven.round(0); gprow.Indent_Qty=fetind; gprow.Level="Level"; gprow.test_level="Level-1"; gprow.Create_BoM_RECID=fet_bom.ID; gprow.BoM_Qty=ifnull(input.MRP_Qty,0); gprow.Material_Center_Qty=ifnull(dprsub.GP_Balance_Qty,0); //CALCULATION PART //Below ifelse is to check negative value if(gprow.Material_Center_Qty == 0) { if(ifnull(gprow.BoM_Qty,0) * ifnull(gprow.Org_BoM_Qty,0.0) - ifnull(gprow.Stock_Qty,0) >= 0) { gprow.Tot_BoM_Qty=ifnull(gprow.BoM_Qty,0) * ifnull(gprow.Org_BoM_Qty,0.0); gprow.Plan_Qty=ifnull(gprow.BoM_Qty,0) * ifnull(gprow.Org_BoM_Qty,0.0) - ifnull(gprow.Stock_Qty,0); } else if(ifnull(gprow.BoM_Qty,0) * ifnull(gprow.Org_BoM_Qty,0.0) - ifnull(gprow.Stock_Qty,0) < 0) { gprow.Tot_BoM_Qty=ifnull(gprow.BoM_Qty,0) * ifnull(gprow.Org_BoM_Qty,0.0); gprow.Plan_Qty=ifnull(gprow.Stock_Qty,0) - ifnull(gprow.BoM_Qty,0) * ifnull(gprow.Org_BoM_Qty,0.0); } gprow.Purchase_Qty=ifnull(gprow.Plan_Qty,0); input.BoM_Details_General_Purchase.insert(gprow); } else if(gprow.Material_Center_Qty > 0) { if(ifnull(gprow.BoM_Qty,0) * ifnull(gprow.Org_BoM_Qty,0.0) - ifnull(gprow.Material_Center_Qty,0) >= 0) { gprow.Tot_BoM_Qty=ifnull(gprow.BoM_Qty,0) * ifnull(gprow.Org_BoM_Qty,0.0); gprow.Plan_Qty=ifnull(gprow.BoM_Qty,0) * ifnull(gprow.Org_BoM_Qty,0.0) - ifnull(gprow.Material_Center_Qty,0); } else if(ifnull(gprow.BoM_Qty,0) * ifnull(gprow.Org_BoM_Qty,0.0) - ifnull(gprow.Material_Center_Qty,0) < 0) { gprow.Tot_BoM_Qty=ifnull(gprow.BoM_Qty,0) * ifnull(gprow.Org_BoM_Qty,0.0); gprow.Plan_Qty=ifnull(gprow.Material_Center_Qty,0) - ifnull(gprow.BoM_Qty,0) * ifnull(gprow.Org_BoM_Qty,0.0); } gprow.Purchase_Qty=ifnull(gprow.Plan_Qty,0); input.BoM_Details_General_Purchase.insert(gprow); } } } } inside_gplevel1 = 1; cnt = 0; for each levellist2 in level2 { crtbom = Create_BOM[BoM_FG_Subform_ID == levellist2.ID && Status == "Active"]; cnt = cnt + 1; level3 = BoM_FG_Subform[BOM_FG_Exis_ID.Part_No == levellist2.Part_No && BOM_FG_Exis_ID.Status == "Active"]; if(levellist2.Material_Item_Type.Material_Type == "CWPL Products" || levellist2.Material_Item_Type.Material_Type == "HR Coils and Sheets") { cwplrow2 = MRP.BoM_Details_CWPL(); inven1 = Inventory[Part_No == levellist2.Part_No].sum(Available_Qty); cwplrow2.Part_No=levellist2.Part_No; cwplrow2.Part_Name=levellist2.Part_Description; cwplrow2.UoM=levellist2.UoM; cwplrow2.Work_Order_No=fet_wo.ID; cwplrow2.Stock_Qty=inven1.round(0); cwplrow2.Material_Item_Type=levellist2.Material_Item_Type; cwplrow2.bom_stk_qty=ifnull(levellist2.Qty,0.0); cwplrow2.Level="Level-2"; cwplrow2.test_level="Level1." + cnt; cwplrow2.Create_BoM_RECID=crtbom.ID; cwplrow2.BoM_Qty=cwplrow.Actual_Qty; cwplrow2.Tot_BoM_Qty=ifnull(cwplrow2.BoM_Qty,0.0) * ifnull(cwplrow2.bom_stk_qty,0.0); //CALCULATION PART planqty = 0.0; stkqty = 0.0; if(cwplrow2.Stock_Qty >= cwplrow2.Tot_BoM_Qty) { cwplrow2.Actual_Qty=0; //cwplrow2.BoM_Qty=0; cwplrow2.Plan_Qty=0; } if(cwplrow2.Stock_Qty < cwplrow2.Tot_BoM_Qty && cwplrow2.BoM_Qty != null) { planqty = ifnull(cwplrow2.BoM_Qty,0.0) * ifnull(cwplrow2.bom_stk_qty,0.0); stkqty = planqty - ifnull(cwplrow2.Stock_Qty,0.0); cwplrow2.Actual_Qty=stkqty; cwplrow2.Plan_Qty=stkqty; } input.BoM_Details_CWPL.insert(cwplrow2); } for each abc2 in BoM_FG_Subform[BOM_FG_Exis_ID.Part_No == levellist1.Part_No && Material_Item_Type.Material_Type == "General Purchase" && BOM_FG_Exis_ID.Status == "Active"] { if(inside_gplevel2 == 0) { if(abc2.Material_Item_Type.Material_Type == "General Purchase") { fetind = Indent_Sub_Form[Part_No == abc2.Part_No].sum(Required_Qty); dprsub = DPR_General_Purchase_Stock_Qty[Part_No == abc2.Part_No]; gprow2 = MRP.BoM_Details_General_Purchase(); inven = Inventory[Part_No == abc2.Part_No].sum(Available_Qty); gprow2.Part_No=abc2.Part_No; gprow2.Part_Name=abc2.Part_Description; gprow2.UoM=abc2.UoM; gprow2.Work_Order_No=fet_wo.ID; gprow2.Material_Item_Type=abc2.Material_Item_Type; gprow2.Org_BoM_Qty=ifnull(abc2.Qty,0.0); gprow2.Stock_Qty=inven.round(0); gprow2.Indent_Qty=fetind; gprow2.Level="Level-1"; gprow2.test_level="Level1." + cnt; gprow2.Create_BoM_RECID=crtbom.ID; //CALCULATION PART gprow2.BoM_Qty=ifnull(cwplrow.Actual_Qty,0); gprow2.Tot_BoM_Qty=ifnull(gprow2.BoM_Qty,0) * ifnull(gprow2.Org_BoM_Qty,0.0); gprow2.Material_Center_Qty=ifnull(dprsub.GP_Balance_Qty,0); //Below ifelse is to check negative value if(gprow2.Material_Center_Qty == 0) { if(ifnull(gprow2.BoM_Qty,0) * ifnull(gprow2.Org_BoM_Qty,0.0) - ifnull(gprow2.Stock_Qty,0) >= 0) { gprow2.Plan_Qty=ifnull(gprow2.BoM_Qty,0) * ifnull(gprow2.Org_BoM_Qty,0.0) - ifnull(gprow2.Stock_Qty,0); } else { gprow2.Plan_Qty=ifnull(gprow2.Stock_Qty,0) - ifnull(gprow2.BoM_Qty,0) * ifnull(gprow2.Org_BoM_Qty,0.0); } gprow2.Purchase_Qty=ifnull(gprow2.Plan_Qty,0); input.BoM_Details_General_Purchase.insert(gprow2); } else if(gprow2.Material_Center_Qty > 0) { if(ifnull(gprow2.BoM_Qty,0) * ifnull(gprow2.Org_BoM_Qty,0.0) - ifnull(gprow2.Material_Center_Qty,0) >= 0) { gprow2.Tot_BoM_Qty=ifnull(gprow2.BoM_Qty,0) * ifnull(gprow2.Org_BoM_Qty,0.0); gprow2.Plan_Qty=ifnull(gprow2.BoM_Qty,0) * ifnull(gprow2.Org_BoM_Qty,0.0) - ifnull(gprow2.Material_Center_Qty,0); } else if(ifnull(gprow2.BoM_Qty,0) * ifnull(gprow2.Org_BoM_Qty,0.0) - ifnull(gprow2.Material_Center_Qty,0) < 0) { gprow2.Tot_BoM_Qty=ifnull(gprow2.BoM_Qty,0) * ifnull(gprow2.Org_BoM_Qty,0.0); gprow2.Plan_Qty=ifnull(gprow2.Material_Center_Qty,0) - ifnull(gprow2.BoM_Qty,0) * ifnull(gprow2.Org_BoM_Qty,0.0); } gprow2.Purchase_Qty=ifnull(gprow2.Plan_Qty,0); input.BoM_Details_General_Purchase.insert(gprow2); } } } } inside_gplevel2 = 1; cnt1 = 0; for each levellist3 in level3 { crtbom1 = Create_BOM[BoM_FG_Subform_ID == levellist3.ID && Status == "Active"]; cnt1 = cnt1 + 1; level4 = BoM_FG_Subform[BOM_FG_Exis_ID.Part_No == levellist3.Part_No && BOM_FG_Exis_ID.Status == "Active"]; if(levellist3.Material_Item_Type.Material_Type == "CWPL Products" || levellist3.Material_Item_Type.Material_Type == "HR Coils and Sheets") { cwplrow3 = MRP.BoM_Details_CWPL(); inven1 = Inventory[Part_No == levellist3.Part_No].sum(Available_Qty); cwplrow3.Part_No=levellist3.Part_No; cwplrow3.Part_Name=levellist3.Part_Description; cwplrow3.UoM=levellist3.UoM; cwplrow3.Work_Order_No=fet_wo.ID; cwplrow3.Stock_Qty=inven1.round(0); cwplrow3.Material_Item_Type=levellist3.Material_Item_Type; cwplrow3.bom_stk_qty=ifnull(levellist3.Qty,0.0); cwplrow3.Level="Level-3"; cwplrow3.test_level="Level-1.1" + "." + cnt1; cwplrow3.Create_BoM_RECID=crtbom1.ID; cwplrow3.BoM_Qty=cwplrow2.Actual_Qty; cwplrow3.Tot_BoM_Qty=ifnull(cwplrow3.BoM_Qty,0.0) * ifnull(cwplrow3.bom_stk_qty,0.0); //CALCULATION PART planqty = 0.0; stkqty = 0.0; if(cwplrow3.Stock_Qty >= cwplrow3.Tot_BoM_Qty) { cwplrow3.Actual_Qty=0; // cwplrow3.BoM_Qty=0; cwplrow3.Plan_Qty=0; } if(cwplrow3.Stock_Qty < cwplrow3.Tot_BoM_Qty && cwplrow3.Tot_BoM_Qty != null) { planqty = ifnull(cwplrow3.BoM_Qty,0.0) * ifnull(cwplrow3.bom_stk_qty,0.0); stkqty = planqty - ifnull(cwplrow3.Stock_Qty,0.0); cwplrow3.Actual_Qty=stkqty; cwplrow3.Plan_Qty=stkqty; } input.BoM_Details_CWPL.insert(cwplrow3); } for each abc3 in BoM_FG_Subform[BOM_FG_Exis_ID.Part_No == levellist2.Part_No && Material_Item_Type.Material_Type == "General Purchase" && BOM_FG_Exis_ID.Status == "Active"] { if(inside_gplevel3 == 0) { if(abc3.Material_Item_Type.Material_Type == "General Purchase") { fetind = Indent_Sub_Form[Part_No == abc3.Part_No].sum(Required_Qty); dprsub = DPR_General_Purchase_Stock_Qty[Part_No == abc3.Part_No]; gprow3 = MRP.BoM_Details_General_Purchase(); inven = Inventory[Part_No == abc3.Part_No].sum(Available_Qty); gprow3.Part_No=abc3.Part_No; gprow3.Part_Name=abc3.Part_Description; gprow3.UoM=abc3.UoM; gprow3.Work_Order_No=fet_wo.ID; gprow3.Material_Item_Type=abc3.Material_Item_Type; gprow3.Org_BoM_Qty=ifnull(abc3.Qty,0.0); gprow3.Stock_Qty=inven.round(0); gprow3.Indent_Qty=fetind; gprow3.Level="Level-2"; gprow3.test_level="Level-1.1" + "." + cnt1; gprow3.Create_BoM_RECID=crtbom1.ID; gprow3.Material_Center_Qty=ifnull(dprsub.GP_Balance_Qty,0); //CALCULATION PART gprow3.BoM_Qty=ifnull(cwplrow2.Actual_Qty,0); gprow3.Tot_BoM_Qty=ifnull(gprow3.BoM_Qty,0) * ifnull(gprow3.Org_BoM_Qty,0.0); gprow3.Material_Center_Qty=ifnull(dprsub.GP_Balance_Qty,0); //Below ifelse is to check negative value if(gprow3.Material_Center_Qty == 0) { if(ifnull(gprow3.BoM_Qty,0) * ifnull(gprow3.Org_BoM_Qty,0.0) - ifnull(gprow3.Stock_Qty,0) >= 0) { gprow3.Plan_Qty=ifnull(gprow3.BoM_Qty,0) * ifnull(gprow3.Org_BoM_Qty,0.0) - ifnull(gprow3.Stock_Qty,0); } else { gprow3.Plan_Qty=ifnull(gprow3.Stock_Qty,0) - ifnull(gprow3.BoM_Qty,0) * ifnull(gprow3.Org_BoM_Qty,0.0); } gprow3.Purchase_Qty=ifnull(gprow3.Plan_Qty,0); input.BoM_Details_General_Purchase.insert(gprow3); } else if(gprow3.Material_Center_Qty > 0) { if(ifnull(gprow3.BoM_Qty,0) * ifnull(gprow3.Org_BoM_Qty,0.0) - ifnull(gprow3.Material_Center_Qty,0) >= 0) { gprow3.Tot_BoM_Qty=ifnull(gprow3.BoM_Qty,0) * ifnull(gprow3.Org_BoM_Qty,0.0); gprow3.Plan_Qty=ifnull(gprow3.BoM_Qty,0) * ifnull(gprow3.Org_BoM_Qty,0.0) - ifnull(gprow3.Material_Center_Qty,0); } else if(ifnull(gprow3.BoM_Qty,0) * ifnull(gprow3.Org_BoM_Qty,0.0) - ifnull(gprow3.Material_Center_Qty,0) < 0) { gprow3.Tot_BoM_Qty=ifnull(gprow3.BoM_Qty,0) * ifnull(gprow3.Org_BoM_Qty,0.0); gprow3.Plan_Qty=ifnull(gprow3.Material_Center_Qty,0) - ifnull(gprow3.BoM_Qty,0) * ifnull(gprow3.Org_BoM_Qty,0.0); } gprow3.Purchase_Qty=ifnull(gprow3.Plan_Qty,0); input.BoM_Details_General_Purchase.insert(gprow3); } } } } inside_gplevel3 = 1; cnt2 = 0; for each levellist4 in level4 { crtbom2 = Create_BOM[BoM_FG_Subform_ID == levellist4.ID && Status == "Active"]; level5 = BoM_FG_Subform[BOM_FG_Exis_ID.Part_No == levellist4.Part_No && BOM_FG_Exis_ID.Status == "Active"]; cnt2 = cnt2 + 1; if(levellist4.Material_Item_Type.Material_Type == "CWPL Products" || levellist4.Material_Item_Type.Material_Type == "HR Coils and Sheets") { cwplrow4 = MRP.BoM_Details_CWPL(); inven1 = Inventory[Part_No == levellist4.Part_No].sum(Available_Qty); cwplrow4.Part_No=levellist4.Part_No; cwplrow4.Part_Name=levellist4.Part_Description; cwplrow4.UoM=levellist4.UoM; cwplrow4.Work_Order_No=fet_wo.ID; cwplrow4.Stock_Qty=inven1.round(0); cwplrow4.Material_Item_Type=levellist4.Material_Item_Type; cwplrow4.bom_stk_qty=ifnull(levellist4.Qty,0.0); cwplrow4.Level="Level-4"; cwplrow4.test_level="Level-1.1" + "." + cnt1 + "." + cnt2; cwplrow4.Create_BoM_RECID=crtbom2.ID; cwplrow4.BoM_Qty=cwplrow3.Actual_Qty; cwplrow4.Tot_BoM_Qty=ifnull(cwplrow4.bom_stk_qty,0.0) * ifnull(cwplrow4.BoM_Qty,0.0); //CALCULATION PART planqty = 0.0; stkqty = 0.0; if(cwplrow4.Stock_Qty >= cwplrow4.Tot_BoM_Qty) { cwplrow4.Actual_Qty=0; //cwplrow4.BoM_Qty=0; cwplrow4.Plan_Qty=0; } if(cwplrow4.Stock_Qty < cwplrow4.Tot_BoM_Qty && cwplrow4.Tot_BoM_Qty != null) { planqty = ifnull(cwplrow4.BoM_Qty,0.0) * ifnull(cwplrow4.bom_stk_qty,0.0); stkqty = planqty - ifnull(cwplrow4.Stock_Qty,0.0); cwplrow4.Actual_Qty=stkqty; cwplrow4.Plan_Qty=stkqty; } input.BoM_Details_CWPL.insert(cwplrow4); } for each abc4 in BoM_FG_Subform[BOM_FG_Exis_ID.Part_No == levellist3.Part_No && Material_Item_Type.Material_Type == "General Purchase" && BOM_FG_Exis_ID.Status == "Active"] { if(inside_gplevel4 == 0) { if(abc4.Material_Item_Type.Material_Type == "General Purchase") { fetind = Indent_Sub_Form[Part_No == abc4.Part_No].sum(Required_Qty); dprsub = DPR_General_Purchase_Stock_Qty[Part_No == abc4.Part_No]; gprow4 = MRP.BoM_Details_General_Purchase(); inven = Inventory[Part_No == abc4.Part_No].sum(Available_Qty); gprow4.Part_No=abc4.Part_No; gprow4.Part_Name=abc4.Part_Description; gprow4.UoM=abc4.UoM; gprow4.Work_Order_No=fet_wo.ID; gprow4.Material_Item_Type=abc4.Material_Item_Type; gprow4.Org_BoM_Qty=ifnull(abc4.Qty,0.0); gprow4.Stock_Qty=inven.round(0); gprow4.Indent_Qty=fetind; gprow4.Level="Level-3"; gprow4.test_level="Level-1.1" + "." + cnt1 + "." + cnt2; gprow4.Create_BoM_RECID=crtbom2.ID; gprow4.Material_Center_Qty=ifnull(dprsub.GP_Balance_Qty,0); //CALCULATION PART gprow4.BoM_Qty=ifnull(cwplrow3.Actual_Qty,0); gprow4.Tot_BoM_Qty=ifnull(gprow4.BoM_Qty,0) * ifnull(gprow4.Org_BoM_Qty,0.0); //Below ifelse is to check negative value if(gprow4.Material_Center_Qty == 0) { if(ifnull(gprow4.BoM_Qty,0) * ifnull(gprow4.Org_BoM_Qty,0.0) - ifnull(gprow4.Stock_Qty,0) >= 0) { gprow4.Plan_Qty=ifnull(gprow4.BoM_Qty,0) * ifnull(gprow4.Org_BoM_Qty,0.0) - ifnull(gprow4.Stock_Qty,0); } else { gprow4.Plan_Qty=ifnull(gprow4.Stock_Qty,0) - ifnull(gprow4.BoM_Qty,0) * ifnull(gprow4.Org_BoM_Qty,0.0); } gprow4.Purchase_Qty=ifnull(gprow4.Plan_Qty,0); input.BoM_Details_General_Purchase.insert(gprow4); } else if(gprow4.Material_Center_Qty > 0) { if(ifnull(gprow4.BoM_Qty,0) * ifnull(gprow4.Org_BoM_Qty,0.0) - ifnull(gprow4.Material_Center_Qty,0) >= 0) { gprow4.Tot_BoM_Qty=ifnull(gprow4.BoM_Qty,0) * ifnull(gprow4.Org_BoM_Qty,0.0); gprow4.Plan_Qty=ifnull(gprow4.BoM_Qty,0) * ifnull(gprow4.Org_BoM_Qty,0.0) - ifnull(gprow4.Material_Center_Qty,0); } else if(ifnull(gprow4.BoM_Qty,0) * ifnull(gprow4.Org_BoM_Qty,0.0) - ifnull(gprow4.Material_Center_Qty,0) < 0) { gprow4.Tot_BoM_Qty=ifnull(gprow4.BoM_Qty,0) * ifnull(gprow4.Org_BoM_Qty,0.0); gprow4.Plan_Qty=ifnull(gprow4.Material_Center_Qty,0) - ifnull(gprow4.BoM_Qty,0) * ifnull(gprow4.Org_BoM_Qty,0.0); } gprow4.Purchase_Qty=ifnull(gprow4.Plan_Qty,0); input.BoM_Details_General_Purchase.insert(gprow4); } } } } inside_gplevel4 = 1; cnt3 = 0; for each levellist5 in level5 { crtbom3 = Create_BOM[BoM_FG_Subform_ID == levellist5.ID && Status == "Active"]; cnt3 = cnt3 + 1; if(levellist5.Material_Item_Type.Material_Type == "CWPL Products" || levellist5.Material_Item_Type.Material_Type == "HR Coils and Sheets") { cwplrow5 = MRP.BoM_Details_CWPL(); inven1 = Inventory[Part_No == levellist5.Part_No].sum(Available_Qty); cwplrow5.Part_No=levellist5.Part_No; cwplrow5.Part_Name=levellist5.Part_Description; cwplrow5.UoM=levellist5.UoM; cwplrow5.Work_Order_No=fet_wo.ID; cwplrow5.Stock_Qty=inven1.round(0); cwplrow5.Material_Item_Type=levellist5.Material_Item_Type; cwplrow5.bom_stk_qty=ifnull(levellist5.Qty,0.0); cwplrow5.Level="Level-5"; cwplrow5.test_level="Level1.1" + "." + cnt1 + "." + cnt2 + "." + cnt3; cwplrow5.Create_BoM_RECID=crtbom3.ID; cwplrow5.BoM_Qty=cwplrow4.Actual_Qty; cwplrow5.Tot_BoM_Qty=ifnull(cwplrow5.BoM_Qty,0.0) * ifnull(cwplrow5.bom_stk_qty,0.0); //CALCULATION PART planqty = 0.0; stkqty = 0.0; if(cwplrow5.Stock_Qty >= cwplrow5.Tot_BoM_Qty) { cwplrow5.Actual_Qty=0; //cwplrow5.BoM_Qty=0; cwplrow5.Plan_Qty=0; } if(cwplrow5.Stock_Qty < cwplrow5.BoM_Qty && cwplrow5.Tot_BoM_Qty != null) { planqty = ifnull(cwplrow5.BoM_Qty,0.0) * ifnull(cwplrow5.bom_stk_qty,0.0); stkqty = planqty - ifnull(cwplrow5.Stock_Qty,0.0); cwplrow5.Actual_Qty=stkqty; cwplrow5.Plan_Qty=stkqty; } input.BoM_Details_CWPL.insert(cwplrow5); } for each abc5 in BoM_FG_Subform[BOM_FG_Exis_ID.Part_No == levellist4.Part_No && Material_Item_Type.Material_Type == "General Purchase" && BOM_FG_Exis_ID.Status == "Active"] { if(inside_gplevel5 == 0) { if(abc5.Material_Item_Type.Material_Type == "General Purchase") { fetind = Indent_Sub_Form[Part_No == abc5.Part_No].sum(Required_Qty); dprsub = DPR_General_Purchase_Stock_Qty[Part_No == abc5.Part_No]; gprow5 = MRP.BoM_Details_General_Purchase(); inven = Inventory[Part_No == abc5.Part_No].sum(Available_Qty); gprow5.Part_No=abc5.Part_No; gprow5.Part_Name=abc5.Part_Description; gprow5.UoM=abc5.UoM; gprow5.Work_Order_No=fet_wo.ID; gprow5.Material_Item_Type=abc5.Material_Item_Type; gprow5.Org_BoM_Qty=ifnull(abc5.Qty,0.0); gprow5.Stock_Qty=inven.round(0); gprow5.Indent_Qty=fetind; gprow5.Level="Level-4"; gprow5.test_level="Level1.1" + "." + cnt1 + "." + cnt2 + "." + cnt3; gprow5.Create_BoM_RECID=crtbom3.ID; //CALCULATION PART gprow5.BoM_Qty=ifnull(cwplrow4.Actual_Qty,0); gprow5.Tot_BoM_Qty=ifnull(gprow5.BoM_Qty,0) * ifnull(gprow5.Org_BoM_Qty,0.0); gprow5.Material_Center_Qty=ifnull(dprsub.GP_Balance_Qty,0); //Below ifelse is to check negative value if(gprow5.Material_Center_Qty == 0) { if(ifnull(gprow5.BoM_Qty,0) * ifnull(gprow5.Org_BoM_Qty,0.0) - ifnull(gprow5.Stock_Qty,0) >= 0) { gprow5.Plan_Qty=ifnull(gprow5.BoM_Qty,0) * ifnull(gprow5.Org_BoM_Qty,0.0) - ifnull(gprow5.Stock_Qty,0); } else { gprow5.Plan_Qty=ifnull(gprow5.Stock_Qty,0) - ifnull(gprow5.BoM_Qty,0) * ifnull(gprow5.Org_BoM_Qty,0.0); } gprow5.Purchase_Qty=ifnull(gprow5.Plan_Qty,0); input.BoM_Details_General_Purchase.insert(gprow5); } else if(gprow5.Material_Center_Qty > 0) { if(ifnull(gprow5.BoM_Qty,0) * ifnull(gprow5.Org_BoM_Qty,0.0) - ifnull(gprow5.Material_Center_Qty,0) >= 0) { gprow5.Tot_BoM_Qty=ifnull(gprow5.BoM_Qty,0) * ifnull(gprow5.Org_BoM_Qty,0.0); gprow5.Plan_Qty=ifnull(gprow5.BoM_Qty,0) * ifnull(gprow5.Org_BoM_Qty,0.0) - ifnull(gprow5.Material_Center_Qty,0); } else if(ifnull(gprow5.BoM_Qty,0) * ifnull(gprow5.Org_BoM_Qty,0.0) - ifnull(gprow5.Material_Center_Qty,0) < 0) { gprow5.Tot_BoM_Qty=ifnull(gprow5.BoM_Qty,0) * ifnull(gprow5.Org_BoM_Qty,0.0); gprow5.Plan_Qty=ifnull(gprow5.Material_Center_Qty,0) - ifnull(gprow5.BoM_Qty,0) * ifnull(gprow5.Org_BoM_Qty,0.0); } gprow5.Purchase_Qty=ifnull(gprow5.Plan_Qty,0); input.BoM_Details_General_Purchase.insert(gprow5); } } } } inside_gplevel5 = 1; } } } } } //Test for each testrec in input.BoM_Details_General_Purchase { // if(testrec.S_No == 1) // { // testrec.Stock_Qty=1; // } // if(testrec.S_No == 2) // { // testrec.Stock_Qty=8; // } // if(testrec.S_No == 3) // { // testrec.bom_stk_qty=5; // } // if(testrec.S_No == 4) // { // testrec.Stock_Qty=50; // } // if(testrec.S_No == 5) // { // testrec.Stock_Qty=1; // } // if(testrec.S_No == 6) // { // testrec.Stock_Qty=4; // } // if(testrec.S_No == 7) // { // testrec.Stock_Qty=200; // } // if(testrec.S_No == 8) // { // testrec.Stock_Qty=50; // } } for each cwplrec in input.BoM_Details_CWPL { if(cwplrec.Stock_Qty < cwplrec.Tot_BoM_Qty) { cwplrec.Blocked_Qty=cwplrec.Stock_Qty; } if(cwplrec.Tot_BoM_Qty < cwplrec.Stock_Qty) { cwplrec.Blocked_Qty=cwplrec.Tot_BoM_Qty; } if(cwplrec.Tot_BoM_Qty == cwplrec.Stock_Qty) { cwplrec.Blocked_Qty=cwplrec.Stock_Qty; } if(cwplrec.Stock_Qty <= 0) { cwplrec.Blocked_Qty=0; } if(cwplrec.Blocked_Qty > 0) { cwplrec.Block_Qty=true; } } for each gprec in input.BoM_Details_General_Purchase { if(gprec.Stock_Qty < gprec.Tot_BoM_Qty) { gprec.Blocked_Qty=gprec.Stock_Qty; } else if(gprec.Tot_BoM_Qty <= gprec.Stock_Qty) { gprec.Plan_Qty=0; gprec.Purchase_Qty=0; gprec.Blocked_Qty=gprec.Tot_BoM_Qty; //info "if2"; } // else if(gprec.Tot_BoM_Qty > gprec.Stock_Qty) // { // gprec.Purchase_Qty=gprec.Plan_Qty; // } else if(gprec.Stock_Qty <= 0) { gprec.Blocked_Qty=0; //info "if3"; } else if(gprec.Tot_BoM_Qty == gprec.Stock_Qty) { gprec.Blocked_Qty=gprec.Stock_Qty; } if(gprec.Blocked_Qty > 0) { gprec.Block_Qty=true; } if(gprec.Purchase_Qty > 0) { gprec.Draft_Indent=true; } } //SNo for MRP-Subforms slno = 0; for each snrec in input.BoM_Details_CWPL { slno = slno + 1; if(snrec.Part_No != null) { snrec.S_No=slno; } } gslno = 0; for each snrecgp in input.BoM_Details_General_Purchase { gslno = gslno + 1; if(snrecgp.Part_No != null) { snrecgp.S_No=gslno; } } } //End