emptylist = List();
//move the status into form mode to handle.
if(input.Form_Mode == null || input.Form_Mode == "")
{
input.Form_Mode = "Direct GIN";
//info Form_Mode;
}
if(input.Status == "GIN against MRQ" && input.Material_Request_Subform_record_id != emptylist || input.Material_Request_Subform_record_id != null)
{
input.Form_Mode = "GIN against MRQ";
hide Item_Details.Available_Qty;
hide Item_Details.Block_Qty;
input.Status = "";
matreqsf = Material_Request_Subform[ID == input.Material_Request_Subform_record_id];
Material_Req_Exis_ID = matreqsf.Material_Req_Exis_ID;
mat_req = Material_Request[ID == Material_Req_Exis_ID];
input.Material_Request_RECID = Material_Req_Exis_ID;
input.Warehouse = matreqsf.Material_Req_Exis_ID.Warehouse;
input.Work_Order_No = matreqsf.Material_Req_Exis_ID.Work_Order_No;
input.Finished_Good = mat_req.FG_Part_Description;
mrn = mat_req.Material_Request_No;
input.Project_Name = Zoho_Projects_Data[ID == mat_req.Project_Name].ID;
input.Machine_Name = Machine_Master[ID == mat_req.Machine_Name].ID;
input.Status = "Draft";
input.Request_raised_By = mat_req.Request_Raised_By;
//input.Department = Department[ID==mat_req.Department].Department_Name;
input.Request_Date = mat_req.Request_Date;
//info mat_req.Material_Type;
input.Material_Request_Type = mat_req.Material_Type;
//input.Project_Name = ifnull(mat_req.Project_Name,"");
row1 = Goods_Issued_Note.Item_Details();
i = 0;
grstot = 0;
for each i1 in matreqsf
{
i = i + 1;
//Store will issue Itmes from Satellite stores and engineering stores - erp channel - 14/12/2024 from user.
//inv = Inventory[Part_No == i1.Part_No && Warehouse == input.Warehouse && Total_Qty > 0];
inv = Inventory[Part_No == i1.Part_No && Warehouse == input.Warehouse && Total_Qty > 0 && Location_Name.Location__Name == "Satellite Stores" || Location_Name.Location__Name == "Engineering Stores"];
//info inv;
fet_stockvalue = Stock_Value[Part_No == i1.Part_No] sort by Unit_Price desc;
row1.S_No=i;
row1.Part_No=i1.Part_No;
row1.Part_Description=i1.Part_Description;
row1.Material_Type=i1.Material_Type;
row1.Unit_of_Measurement=i1.UoM;
row1.Required_Quantity=ifnull(i1.Required_Qty,0.00);
row1.Quantity_issued_so_far=ifnull(i1.Quantity_issued_so_far,0);
row1.Specification=i1.Specification;
if(i1.Quantity_issued_so_far > 0 && i1.Required_Qty > 0)
{
if(i1.Quantity_issued_so_far > i1.Required_Qty)
{
row1.Issued_Quantity=ifnull(i1.Quantity_issued_so_far,0) - ifnull(i1.Required_Qty,0);
}
}
else
{
row1.Issued_Quantity=ifnull(i1.Required_Qty,0);
}
//row1.Issued_Quantity=ifnull(i1.Required_Qty,0) - ifnull(i1.Quantity_issued_so_far,0);
//row1.Sub_Total=row1.Issued_Quantity * row1.Rate;
//new function is written to calculate the rate by Mr.Varun - dt 5/12/2023 - Mail on 5/12/2023
//row1.Rate=fet_stockvalue.Unit_Price;
getrate = thisapp.Stock_Value.Average_Stock_Value(row1.Part_No,row1.Issued_Quantity);
row1.Rate=ifnull(getrate,0);
if(row1.Issued_Quantity > 0 && row1.Rate > 0)
{
sub = ifnull(row1.Issued_Quantity,0) * ifnull(row1.Rate,0);
}
grstot = ifnull(grstot,0) + ifnull(sub,0);
//row1.Sub_Total=sub;
row1.Value=sub;
row1.Balance_Quantity=0.00;
row1.Stock_Quantity=ifnull(inv.Total_Qty,0.00);
row1.Available_Qty=ifnull(inv.Available_Qty,0.00);
row1.Block_Qty=ifnull(inv.Block_Qty,0.00);
row1.Work_Order_No=i1.Work_Order_No;
row1.Sales_Order_No=i1.Sales_Order_No;
row1.Material_Request_No=Material_Req_Exis_ID.Material_Request_No;
row1.Material_Request_Subform_lu=i1.ID;
row1.Material_type_from_mrq=Material_Req_Exis_ID.Material_Type;
row1.Location=inv.Location_Name.getall();
row1.Sub_Location=inv.Sub_Location.getall();
row1.Racks_Bins=inv.Rack_Number.getall();
input.Item_Details.insert(row1);
}
input.Grand_Total1 = grstot;
for each row2 in input.Item_Details
{
if(row2.Racks_Bins != null)
{
ava = 0;
for each i1 in row2.Racks_Bins
{
inv2 = Inventory[Warehouse == input.Warehouse && Part_No == row2.Part_No && Location_Name == row2.Location && Sub_Location == row2.Sub_Location && Rack_Number == i1 && Total_Qty > 0];
//info inv2;
ava = ava + ifnull(inv2.Available_Qty,0.0);
}
row2.Stock_Quantity=ifnull(ava,0.00);
row2.Qty_after_Issued=ifnull(row2.Stock_Quantity,0.0) - ifnull(row2.Issued_Quantity,0.0);
//info row2.Qty_after_Issued;
}
}
disable Request_raised_By;
disable Request_Date;
disable Material_Request_Type;
}
else if(input.Form_Mode == "GIN against WO")
{
disable Item_Details.Available_Qty;
disable Item_Details.Block_Qty;
input.Status = "";
matreqsf = Material_Request_Subform[ID == input.Material_Request_Subform_record_id];
Material_Req_Exis_ID = matreqsf.Material_Req_Exis_ID;
mat_req = Material_Request[ID == Material_Req_Exis_ID];
input.Material_Request_RECID = Material_Req_Exis_ID;
input.Warehouse = matreqsf.Material_Req_Exis_ID.Warehouse;
input.Work_Order_No = matreqsf.Material_Req_Exis_ID.Work_Order_No;
input.Finished_Good = mat_req.FG_Part_Description;
mrn = mat_req.Material_Request_No;
input.Project_Name = Zoho_Projects_Data[ID == mat_req.Project_Name].ID;
input.Machine_Name = Machine_Master[ID == mat_req.Machine_Name].ID;
input.Status = "Draft";
input.Request_raised_By = mat_req.Request_Raised_By;
input.Request_Date = mat_req.Request_Date;
input.Material_Request_Type = mat_req.Material_Type;
partno_list = List();
qtylist = List();
mymap = Map();
qtymap = Map();
for each bomrec in matreqsf
{
partno_list.add(bomrec.Part_No);
qtyvar = ifnull(qtymap.get(bomrec.Part_No),0) + bomrec.Required_Qty;
qtymap.put(bomrec.Part_No,qtyvar);
//partno_list.add(bomrec.Required_Qty);
}
partno_list.sort();
i = 0;
grstot = 0;
for each recpartlist in partno_list.distinct()
{
row1 = Goods_Issued_Note.Item_Details();
mrqsflist = Material_Request_Subform[ID = input.Material_Request_Subform_record_id && Part_No == recpartlist];
mymap.put("Partno",recpartlist);
mymap.put("partdesc",mrqsflist.Part_Description);
i = i + 1;
getinv = Inventory[Part_No == mrqsflist.Part_No && Warehouse == input.Warehouse && Total_Qty > 0];
getin = Inventory[Part_No == mrqsflist.Part_No && Location_Name.Location__Name != "Production WIP"].sum(Total_Qty);
////Store will issue Itemss from Satellite stores and engineering stores - erp channel - 14/12/2024 from user.
getstokqty = Inventory[Part_No == mrqsflist.Part_No && Warehouse == input.Warehouse && Total_Qty > 0 && Location_Name.Location__Name == "Satellite Stores" || Location_Name.Location__Name == "Engineering Stores"].sum(Total_Qty);
//info "getstokqty " + getstokqty;
fet_stockvalue = Stock_Value[Part_No == mrqsflist.Part_No] sort by Unit_Price desc;
row1.S_No=i;
row1.Part_No=recpartlist;
row1.Part_Description=mrqsflist.Part_Description;
row1.Material_Type=mrqsflist.Material_Type;
row1.Unit_of_Measurement=mrqsflist.UoM;
qtv = qtymap.get(mrqsflist.Part_No);
//info "line 155 qty " + qtv;
row1.Required_Quantity=qtv;
row1.Quantity_issued_so_far=ifnull(mrqsflist.Quantity_issued_so_far,0);
row1.Specification=mrqsflist.Specification;
if(mrqsflist.Quantity_issued_so_far > 0 && mrqsflist.Required_Qty > 0)
{
if(mrqsflist.Quantity_issued_so_far > qtv)
{
row1.Issued_Quantity=ifnull(mrqsflist.Quantity_issued_so_far,0) - ifnull(qtv,0);
}
else if(mrqsflist.Quantity_issued_so_far < qtv)
{
row1.Issued_Quantity=ifnull(qtv,0) - ifnull(mrqsflist.Quantity_issued_so_far,0);
}
}
else
{
row1.Issued_Quantity=ifnull(qtv,0);
}
getrate = thisapp.Stock_Value.Average_Stock_Value(row1.Part_No,row1.Issued_Quantity);
if(getrate == null)
{
getrate = Stock_Value[Part_No == row1.Part_No && Unit_Price > 0].Unit_Price sort by Added_Time asc;
}
if(getrate > 0 || getrate != null)
{
row1.Rate=ifnull(getrate,0);
sub = ifnull(row1.Issued_Quantity,0) * ifnull(row1.Rate,0);
}
grstot = ifnull(grstot,0) + ifnull(sub,0);
//row1.Sub_Total=sub;
row1.Value=sub;
row1.Balance_Quantity=0.00;
//Stock Quantity should be from engineering and satellite locations only - 16/12/2024
//row1.Stock_Quantity=ifnull(getinv.Total_Qty,0.00);
// row1.Stock_Quantity=ifnull(getin,0);
row1.Stock_Quantity=ifnull(getstokqty,0);
row1.Available_Qty=ifnull(getinv.Available_Qty,0.00);
row1.Block_Qty=ifnull(getinv.Block_Qty,0.00);
row1.Work_Order_No=mrqsflist.Work_Order_No;
row1.Sales_Order_No=mrqsflist.Sales_Order_No;
row1.Material_Request_No=Material_Req_Exis_ID.Material_Request_No;
row1.Material_Request_Subform_lu=mrqsflist.ID;
row1.Material_type_from_mrq=Material_Req_Exis_ID.Material_Type;
// row1.Location=getinv.Location_Name.getall();
// row1.Sub_Location=getinv.Sub_Location.getall();
// row1.Racks_Bins=getinv.Rack_Number.getall();
input.Item_Details.insert(row1);
}
input.Grand_Total1 = grstot;
for each row2 in input.Item_Details
{
if(row2.Racks_Bins != null)
{
ava = 0;
for each mrqsflist in row2.Racks_Bins
{
////Store will issue Itemss from Satellite stores and engineering stores - erp channel - 14/12/2024 from user.
//inv2 = Inventory[Warehouse == input.Warehouse && Part_No == row2.Part_No && Location_Name == row2.Location && Sub_Location == row2.Sub_Location && Rack_Number == mrqsflist && Total_Qty > 0];
inv2 = Inventory[Warehouse == input.Warehouse && Part_No == row2.Part_No && Location_Name.Location__Name == "Satellite Stores" || Location_Name.Location__Name == "Engineering Stores" && Rack_Number == mrqsflist && Total_Qty > 0];
//info inv2;
ava = ava + ifnull(inv2.Available_Qty,0.0);
}
row2.Stock_Quantity=ifnull(ava,0.00);
row2.Qty_after_Issued=ifnull(row2.Stock_Quantity,0.0) - ifnull(row2.Issued_Quantity,0.0);
//info row2.Qty_after_Issued;
}
}
disable Request_raised_By;
disable Request_Date;
disable Material_Request_Type;
}