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