try { var = 0; fet_wosub = Work_Order_Subform[ID == input.Work_Order_Subform_ID]; fet_wo = Work_Order[ID == fet_wosub.Work_Order_Exis_ID]; fetsosub = Sale_Order_Subform[Work_Order_RECID == fet_wo.ID]; fet_wosub.MRP_ID=input.ID; fet_wr = Warehouse[ID != null]; if(isBlank(input.MRP_No.trim())) { var = 1; input.MRP_No = thisapp.Common.Number_Function_New("Material Resource Planning"); } if(input.Process_to_Submit = "Draft") { input.MRP_Status = "Draft"; fet_wo.WO_Status="MRP Draft"; fet_wosub.Work_Order_Status="MRP Draft"; if(fetsosub.count() > 0) { fetsosub.WO_Status_in_sosub="MRP Draft"; } indnthead = "No"; indsno = 0; for each rec in input.BoM_Details_General_Purchase { if(rec.Draft_Indent == true && input.Process_to_Submit == "Draft" && rec.Purchase_Qty > 0) { indsno = indsno + 1; thisapp.routing.RoutingFunction(input.ID); str1 = thisapp.Common.Number_Function_New("Purchase Requisition"); if(indnthead == "No" && rec.Purchase_Qty > 0) { fet_emp = Employee_Details[Employee_Email == zoho.loginuserid]; //Check for the Part No is already exists in the Indent without generation the purchase order. chkpartno = Indent_Sub_Form[Part_No == rec.Part_No && Status == "Indent against WO" && Purpose_of_Indent == "For MRP"]; if(chkpartno.count() == 0) { insrec = insert into Indent [ Indent_Request_Date=zoho.currentdate Request_Raised_By=fet_emp.ID Indent_No=str1 Material_Type="Standard" Department=fet_emp.Department_Name Approval_Status="Approved" Indent_Type="System Generated - Planning" Status="Indent against WO" Remarks="For Production Process" MRP_ID=input.ID Added_User=zoho.loginuser ]; indnthead = "Yes"; } } if(chkpartno.count() == 0) { subins = insert into Indent_Sub_Form [ Added_User=zoho.loginuser Indent_Form_RECID=insrec S_No=indsno Part_No=rec.Part_No Part_Description=rec.Part_Name UoM=rec.UoM Required_Qty=rec.Purchase_Qty Purpose_of_Indent="For MRP" Indent_No=str1 Status="Indent against WO" Work_Order_No_ms=input.Work_Order_ID ]; } else { wonolist = List(); wonolist.addall(chkpartno.Work_Order_No_ms); wonolist.add(input.Work_Order_No1); chkpartno.Work_Order_No_ms=wonolist; chkpartno.Required_Qty=ifnull(rec.Purchase_Qty,0) + ifnull(chkpartno.Required_Qty,0); } thisapp.MRP.Indent_Email_MRP(input.ID); } } } else if(input.Process_to_Submit = "Send for Approval") { input.MRP_Status = "Waiting for Approval"; input.Approval = "Pending"; } else if(input.Process_to_Submit = "Submit") { input.Approval = "Approved"; input.MRP_Status = "MRP Done"; fet_wo.WO_Status="MRP Done"; if(fetsosub.count() > 0) { fetsosub.WO_Status_in_sosub="MRP Done"; } } if(fet_wosub.Work_Order_Status == "MRP Rejected") { fet_wosub.Work_Order_Status="WO Created"; } if(input.Auto_Approval == "Yes") { input.MRP_Status = "MRP Done"; fet_wo.MRP_Status="MRP Done"; fet_wosub.Work_Order_Status="MRP Done"; input.Approval = "Approved"; for each blk in input.BoM_Details_CWPL { fet_inv = Inventory[Part_No == blk.Part_No && Available_Qty > 0] sort by Available_Qty desc; if(fet_inv.count() > 0) { if(blk.Block_Qty = True) { balqty = 0; i = 1; for each invcwplrec in fet_inv { //blocked Quantiy is less inventory available qty if(blk.Blocked_Qty <= invcwplrec.Available_Qty && i == 1) { //info "issued qty is less than total qty"; invcwplrec.Available_Qty=ifnull(invcwplrec.Available_Qty,0.0) - ifnull(blk.Blocked_Qty,0.0); invcwplrec.Block_Qty=ifnull(blk.Blocked_Qty,0) + ifnull(invcwplrec.Block_Qty,0); } //blocked Quantiy is more than inventory available qty else if(blk.Blocked_Qty > invcwplrec.Available_Qty && i == 1) { //info "issued qty is more than total qty"; balqty = ifnull(blk.Blocked_Qty,0.0) - ifnull(invcwplrec.Available_Qty,0.0); invcwplrec.Available_Qty=0; invcwplrec.Block_Qty=ifnull(blk.Blocked_Qty,0) + ifnull(invcwplrec.Block_Qty,0); } //for first time it should not get inside the loop if(balqty > 0 && i > 1) { //info "balance qty is more than zero"; //Balance Qty is less if(balqty <= invcwplrec.Available_Qty) { //info "balance qty is less than total qty"; invcwplrec.Available_Qty=ifnull(invcwplrec.Available_Qty,0.0) - ifnull(balqty,0.0); invcwplrec.Block_Qty=ifnull(blk.Blocked_Qty,0) + ifnull(invcwplrec.Block_Qty,0); balqty = 0; } //----Balance Qty is More------ else if(balqty >= invcwplrec.Available_Qty) { //info "balance qty is greater than total qty"; balqty = ifnull(balqty,0.0) - ifnull(invcwplrec.Available_Qty,0.0); invcwplrec.Available_Qty=0; invcwplrec.Block_Qty=ifnull(balqty,0) + ifnull(invcwplrec.Block_Qty,0); } } if(balqty == 0) { break; } i = i + 1; } if(blk.Blocked_Qty > 0) { insblock = insert into Block_Quantity [ Part_No=blk.Part_No Part_Name=blk.Part_Name Form_Type="MRP" Block_Qty=blk.Blocked_Qty MRP_RECID=input.ID WO_No=fet_wo.ID Status="Blocked from MRP" Added_User=zoho.loginuser ]; } } } } for each blk1 in input.BoM_Details_General_Purchase { fet_virstk = Inventory[Part_No == blk1.Part_No && Available_Qty > 0] sort by Available_Qty desc; if(fet_virstk.count() > 0) { if(blk1.Block_Qty = True) { balqty = 0; i1 = 1; for each invgprec in fet_virstk { // info balqty; // info i1; //if(input.MRP_Qty >= fet_inv.Available_Qty && input.MRP_Qty >= fet_inv.Total_Qty) if(blk1.Blocked_Qty <= invgprec.Available_Qty && i1 == 1) { //info "blocked qty is less than total qty"; invgprec.Block_Qty=ifnull(blk1.Blocked_Qty,0) + ifnull(invgprec.Block_Qty,0); invgprec.Available_Qty=ifnull(invgprec.Available_Qty,0) - ifnull(blk1.Blocked_Qty,0); } else if(blk1.Blocked_Qty > invgprec.Available_Qty && i == 1) { //info "blocked qty is more than available qty"; balqty = ifnull(blk1.Blocked_Qty,0.0) - ifnull(invgprec.Available_Qty,0.0); invgprec.Available_Qty=0; invgprec.Block_Qty=ifnull(blk1.Blocked_Qty,0) + ifnull(invgprec.Block_Qty,0); } if(balqty > 0 && i > 1) { //info "balaance qty is more than zero"; //Balance Qty is less if(balqty <= invgprec.Available_Qty) { // info "balance qty is less than available qty"; invgprec.Available_Qty=ifnull(invgprec.Available_Qty,0.0) - ifnull(balqty,0.0); invgprec.Block_Qty=ifnull(blk1.Blocked_Qty,0) + ifnull(invgprec.Block_Qty,0); balqty = 0; } //Balance Qty is More else if(balqty >= invgprec.Available_Qty) { //info "balance qty is greater than available qty"; balqty = ifnull(balqty,0.0) - ifnull(invgprec.Available_Qty,0.0); invgprec.Available_Qty=0; invgprec.Block_Qty=ifnull(blk1.Blocked_Qty,0) + ifnull(invgprec.Block_Qty,0); } } if(balqty == 0) { //info "before break"; break; } i = i + 1; } } } if(blk1.Blocked_Qty > 0) { insblock = insert into Block_Quantity [ Part_No=blk1.Part_No Part_Name=blk1.Part_Name Form_Type="MRP" Block_Qty=blk1.Blocked_Qty MRP_RECID=input.ID MRP_No=input.MRP_No WO_No=fet_wo.ID Status="Blocked from MRP" Added_User=zoho.loginuser ]; } } } else if(input.Process_to_Submit == "Submit" && input.Auto_Approval == "Yes" || input.Auto_Approval == "No") { input.MRP_Status = "MRP Done"; fet_wo.MRP_Status="MRP Done"; fet_wosub.Work_Order_Status="MRP Done"; input.Approval = "Approved"; if(fetsosub.count() > 0) { fetsosub.WO_Status_in_sosub="MRP Done"; } for each blkcwpl in input.BoM_Details_CWPL { fet_inve = Inventory[Part_No == blkcwpl.Part_No && Available_Qty > 0] sort by Available_Qty desc; if(fet_inve.count() > 0) { if(blkcwpl.Block_Qty = True) { balqty = 0; i = 1; for each invcwplrec1 in fet_inve { //blocked Quantiy is less inventory available qty if(blkcwpl.Blocked_Qty <= invcwplrec1.Available_Qty && i == 1) { // info "issued qty is less than total qty"; invcwplrec1.Available_Qty=ifnull(invcwplrec1.Available_Qty,0.0) - ifnull(blkcwpl.Blocked_Qty,0.0); invcwplrec1.Block_Qty=ifnull(blkcwpl.Blocked_Qty,0) + ifnull(invcwplrec1.Block_Qty,0); } //blocked Quantiy is more than inventory available qty else if(blkcwpl.Blocked_Qty > invcwplrec1.Available_Qty && i == 1) { //info "issued qty is more than total qty"; balqty = ifnull(blkcwpl.Blocked_Qty,0.0) - ifnull(invcwplrec1.Available_Qty,0.0); invcwplrec1.Available_Qty=0; invcwplrec1.Block_Qty=ifnull(blkcwpl.Blocked_Qty,0) + ifnull(invcwplrec1.Block_Qty,0); } //for first time it should not get inside the loop if(balqty > 0 && i > 1) { //info "balance qty is more than zero"; //Balance Qty is less if(balqty <= invcwplrec1.Available_Qty) { //info "balance qty is less than total qty"; invcwplrec1.Available_Qty=ifnull(invcwplrec1.Available_Qty,0.0) - ifnull(balqty,0.0); invcwplrec1.Block_Qty=ifnull(blkcwpl.Blocked_Qty,0) + ifnull(invcwplrec1.Block_Qty,0); balqty = 0; } //----Balance Qty is More------ else if(balqty >= invcwplrec1.Available_Qty) { //info "balance qty is greater than total qty"; balqty = ifnull(balqty,0.0) - ifnull(invcwplrec1.Available_Qty,0.0); invcwplrec1.Available_Qty=0; invcwplrec1.Block_Qty=ifnull(balqty,0) + ifnull(invcwplrec1.Block_Qty,0); } } if(balqty == 0) { break; } i = i + 1; } if(blkcwpl.Blocked_Qty > 0) { insblock = insert into Block_Quantity [ Part_No=blkcwpl.Part_No Part_Name=blkcwpl.Part_Name Form_Type="MRP" Block_Qty=blkcwpl.Blocked_Qty WO_No=fet_wo.ID MRP_RECID=input.ID Status="Blocked from MRP" Added_User=zoho.loginuser ]; } } } } for each blkgp in input.BoM_Details_General_Purchase { fet_virstk1 = Inventory[Part_No == blkgp.Part_No && Available_Qty > 0] sort by Available_Qty desc; if(fet_virstk1.count() > 0) { if(blkgp.Block_Qty = True) { balqty = 0; i1 = 1; for each invgprec1 in fet_virstk1 { // info balqty; // info i1; //if(input.MRP_Qty >= fet_inve.Available_Qty && input.MRP_Qty >= fet_inv.Total_Qty) if(blkgp.Blocked_Qty <= invgprec1.Available_Qty && i1 == 1) { //info "blocked qty is less than total qty"; invgprec1.Block_Qty=ifnull(blkgp.Blocked_Qty,0) + ifnull(invgprec1.Block_Qty,0); invgprec1.Available_Qty=ifnull(invgprec1.Available_Qty,0) - ifnull(blkgp.Blocked_Qty,0); } else if(blkgp.Blocked_Qty > invgprec1.Available_Qty && i1 == 1) { //info "blocked qty is more than available qty"; balqty = ifnull(blkgp.Blocked_Qty,0.0) - ifnull(invgprec1.Available_Qty,0.0); invgprec1.Available_Qty=0; invgprec1.Block_Qty=ifnull(blkgp.Blocked_Qty,0) + ifnull(invgprec1.Block_Qty,0); } if(balqty > 0 && i1 > 1) { //info "balaance qty is more than zero"; //Balance Qty is less if(balqty <= invgprec1.Available_Qty) { // info "balance qty is less than available qty"; invgprec1.Available_Qty=ifnull(invgprec1.Available_Qty,0.0) - ifnull(balqty,0.0); invgprec1.Block_Qty=ifnull(blkgp.Blocked_Qty,0) + ifnull(invgprec1.Block_Qty,0); balqty = 0; } //Balance Qty is More else if(balqty >= invgprec1.Available_Qty) { // info "balance qty is greater than available qty"; balqty = ifnull(balqty,0.0) - ifnull(invgprec1.Available_Qty,0.0); invgprec1.Available_Qty=0; invgprec1.Block_Qty=ifnull(blkgp.Blocked_Qty,0) + ifnull(invgprec1.Block_Qty,0); } } if(balqty == 0) { //info "before break"; break; } i1 = i1 + 1; } } } if(blkgp.Blocked_Qty > 0) { insblock = insert into Block_Quantity [ Part_No=blkgp.Part_No Part_Name=blkgp.Part_Name Form_Type="MRP" Block_Qty=blkgp.Blocked_Qty MRP_RECID=input.ID WO_No=fet_wo.ID Status="Blocked from MRP" Added_User=zoho.loginuser ]; } } } openUrl("#Form:Alert_Messages?Status=" + "MATRES" + "&Value=" + input.MRP_No + "&zc_LoadIn=dialog","same window"); } catch (e) { sendmail [ from :"erp@carrierwheels.com" to :"parthasarathy.m@synprosoft.com" subject :"MRP Created Or Edited Successful Form Submission try & catch" + input.MRP_No message :e ] }
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