//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
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter