// GIN num generation
try
{
input.Status = "Open";
for each rec in input.Item_Details
{
rec.Status=input.Status;
}
var = 0;
if(input.GIN_Number.trim().len() < 1)
{
var = 1;
str = thisapp.Common.Number_Function_New("Goods Issued Note");
input.GIN_Number = str;
}
//as per the advice from Mr.senthil dt 05/1/2024 in stock values form reduce the stockqty based on FIFO method(added time)
for each itdrec in input.Item_Details
{
getstkvalue = Stock_Value[Part_No == itdrec.Part_No && Stock_Qty > 0] sort by Added_Time asc;
if(getstkvalue.count() > 0)
{
svbalqty = 0;
svi = 1;
for each stokvalrec in getstkvalue
{
//Issued Quantiy is less total qty
if(itdrec.Issued_Quantity <= stokvalrec.Stock_Qty && svi == 1)
{
stokvalrec.Stock_Qty=ifnull(itdrec.Qty_after_Issued,0.0);
stokvalrec.Stock_Value=ifnull(itdrec.Rate,0.0) * ifnull(itdrec.Qty_after_Issued,0.0);
stokvalrec.Inventory_Qty=ifnull(itdrec.Qty_after_Issued,0.0);
}
//Issued Quantity is more total qty
else if(itdrec.Issued_Quantity > stokvalrec.Stock_Qty && svi == 1)
{
svbalqty = ifnull(itdrec.Issued_Quantity,0.0) - ifnull(stokvalrec.Stock_Qty,0.0);
stokvalrec.Stock_Qty=0;
stokvalrec.Stock_Value=0;
stokvalrec.Inventory_Qty=0;
}
//for first time it should not get inside the loop
if(svbalqty > 0 && svi > 1)
{
//Balance Qty is less
if(svbalqty <= stokvalrec.Stock_Qty)
{
stokvalrec.Stock_Qty=ifnull(stokvalrec.Stock_Qty,0.0) - ifnull(svbalqty,0.0);
stokvalrec.Stock_Value=ifnull(stokvalrec.Unit_Price,0.0) * ifnull(stokvalrec.Stock_Qty,0.0);
stokvalrec.Inventory_Qty=ifnull(stokvalrec.Inventory_Qty,0.0) - ifnull(svbalqty,0.0);
svbalqty = 0;
}
//Balance Qty is More
else if(svbalqty >= stokvalrec.Stock_Qty)
{
svbalqty = ifnull(svbalqty,0.0) - ifnull(stokvalrec.Stock_Qty,0.0);
stokvalrec.Stock_Qty=0;
stokvalrec.Stock_Value=0;
stokvalrec.Inventory_Qty=0;
}
}
if(svbalqty == 0)
{
info "before break";
break;
}
svi = svi + 1;
}
}
else if(getstkvalue.count() == 0)
{
insert into Stock_Value
[
Added_User=zoho.loginuser
Part_No=itdrec.Part_No
Part_Description=itdrec.Part_Description
Specification=itdrec.Specification
Stock_Qty=ifnull(itdrec.Qty_after_Issued,0.0)
Unit_Price=ifnull(itdrec.Rate,0.00)
Stock_Value=ifnull(itdrec.Rate,0.00) * ifnull(itdrec.Qty_after_Issued,0.00)
Inventory_Qty=ifnull(itdrec.Qty_after_Issued,0.0)
]
}
}
// //insert the part no if not available in stock value form.the below comment and new code is above on 5/1/2024
/*for each stkvalrec in input.Item_Details
{
getinvent = Inventory[Part_No == stkvalrec.Part_No && Total_Qty > 0];
if(getinvent.count() > 0)
{
fet_stockvalue = Stock_Value[Part_No == stkvalrec.Part_No && Unit_Price == stkvalrec.Rate];
if(fet_stockvalue.count() == 0)
{
insert into Stock_Value
[
Added_User=zoho.loginuser
Part_No=stkvalrec.Part_No
Part_Description=stkvalrec.Part_Description
Specification=stkvalrec.Specification
Location_Name=getinvent.Location_Name
Sub_Location=getinvent.Sub_Location
Rack_Number=getinvent.Rack_Number
Warehouse=getinvent.Warehouse
Stock_Qty=ifnull(stkvalrec.Qty_after_Issued,0.0)
Unit_Price=ifnull(stkvalrec.Rate,0.00)
Stock_Value=ifnull(stkvalrec.Rate,0.00) * ifnull(stkvalrec.Qty_after_Issued,0.00)
Inventory_Qty=ifnull(stkvalrec.Qty_after_Issued,0.0)
]
}
else if(fet_stockvalue.count() > 0)
{
fet_stockvalue = Stock_Value[Part_No == stkvalrec.Part_No && Unit_Price == stkvalrec.Rate];
if(fet_stockvalue.Stock_Qty > 0)
{
fet_stockvalue.Stock_Qty=ifnull(fet_stockvalue.Stock_Qty,0.0) - ifnull(stkvalrec.Issued_Quantity,0.0);
fet_stockvalue.Stock_Value=ifnull(stkvalrec.Rate,0.0) * ifnull(fet_stockvalue.Stock_Qty,0.0);
fet_stockvalue.Inventory_Qty=ifnull(fet_stockvalue.Stock_Qty,0.0);
}
else
{
fet_stockvalue.Stock_Qty=ifnull(stkvalrec.Qty_after_Issued,0.0);
fet_stockvalue.Stock_Value=ifnull(stkvalrec.Rate,0.0) * ifnull(stkvalrec.Qty_after_Issued,0.0);
fet_stockvalue.Inventory_Qty=ifnull(stkvalrec.Qty_after_Issued,0.0);
}
}
}
}*/
//
if(input.Form_Mode == "GIN against WO")
{
iss_qty = 0;
ava_qty = 0;
bal_qty = 0;
for each wovar in input.Item_Details
{
getinv = Inventory[Part_No == wovar.Part_No && Location_Name.Location__Name == "Production WIP" && Sub_Location.Sub_Location == "Paint Shop"];
getin = Inventory[Part_No == wovar.Part_No && Location_Name.Location__Name != "Production WIP" && Total_Qty > 0] sort by Total_Qty desc;
// sendmail
// [
// from :zoho.loginuserid
// to :"pooja.s@synprosoft.com","parthasarathy.m@synprosoft.com"
// subject :"GIN Successful form submission - getinV"
// message :"Part No " + getin.Part_No.Part_No + "PRD WIP TOT QTY-" + getinv.Total_Qty + "PRD WIP AVL QTY-" + getinv.Available_Qty + "PRD WIP BLK QTY-" + getinv.Block_Qty + "ID-" + getin.ID + "getinv insert Count-" + getinv.count() + "NOPRDWIP TQ " + getin.Total_Qty + "noprdwip aq " + getin.Available_Qty + "noprd blkqty " + getin.Block_Qty
// ]
if(getin.count() > 0)
{
//Block is greater than Issue qty
if(getin.Block_Qty >= wovar.Issued_Quantity && getin.Block_Qty > 0)
{
getin.Block_Qty=ifnull(getin.Block_Qty,0) - ifnull(wovar.Issued_Quantity,0);
getin.Total_Qty=ifnull(getin.Total_Qty,0) - ifnull(wovar.Issued_Quantity,0);
}
else if(getin.Block_Qty < wovar.Issued_Quantity && getin.Block_Qty > 0)
{
bal = ifnull(wovar.Issued_Quantity,0) - ifnull(wovar.Block_Qty,0);
blk = ifnull(wovar.Block_Qty,0);
getin.Available_Qty=ifnull(getin.Available_Qty,0) - bal;
getin.Total_Qty=ifnull(getin.Total_Qty,0) - ifnull(wovar.Issued_Quantity,0);
getin.Block_Qty=0;
}
else if(getin.Block_Qty == 0 || getin.Block_Qty == null)
{
if(getin.Available_Qty > 0 && getin.Available_Qty >= wovar.Issued_Quantity)
{
getin.Available_Qty=ifnull(getin.Available_Qty,0) - wovar.Issued_Quantity;
getin.Total_Qty=ifnull(getin.Total_Qty,0) - ifnull(wovar.Issued_Quantity,0);
}
if(getin.Available_Qty > 0 && getin.Available_Qty < wovar.Issued_Quantity)
{
getin.Available_Qty=wovar.Issued_Quantity - ifnull(getin.Available_Qty,0);
getin.Total_Qty=ifnull(wovar.Issued_Quantity,0) - ifnull(getin.Total_Qty,0);
}
}
}
if(getinv.count() == 0)
{
bal = 0;
if(wovar.Issued_Quantity > wovar.Block_Qty && getin.Available_Qty > 0)
{
bal = ifnull(wovar.Issued_Quantity,0) - ifnull(wovar.Block_Qty,0);
getin.Block_Qty=0;
getin.Available_Qty=ifnull(getin.Available_Qty,0) - bal;
getin.Total_Qty=ifnull(getin.Available_Qty,0);
}
if(wovar.Issued_Quantity > wovar.Required_Quantity)
{
blk = ifnull(wovar.Issued_Quantity,0) - ifnull(wovar.Required_Quantity,0);
ins = insert into Inventory
[
Part_Description=wovar.Part_Description
Part_No=wovar.Part_No
Total_Qty=wovar.Required_Quantity
Available_Qty=wovar.Issued_Quantity
Block_Qty=blk
UOM=wovar.Unit_of_Measurement
Location_Name=143536000004382382
Sub_Location=143536000004382454
Added_User=zoho.loginuser
];
}
else if(wovar.Issued_Quantity == wovar.Required_Quantity)
{
ins1 = insert into Inventory
[
Part_Description=wovar.Part_Description
Part_No=wovar.Part_No
Total_Qty=wovar.Required_Quantity
Available_Qty=wovar.Issued_Quantity
Block_Qty=0
UOM=wovar.Unit_of_Measurement
Location_Name=143536000004382382
Sub_Location=143536000004382454
Added_User=zoho.loginuser
];
}
else if(wovar.Issued_Quantity < wovar.Required_Quantity)
{
ins2 = insert into Inventory
[
Part_Description=wovar.Part_Description
Part_No=wovar.Part_No
Total_Qty=wovar.Required_Quantity
Available_Qty=wovar.Issued_Quantity
Block_Qty=wovar.Balance_Quantity
UOM=wovar.Unit_of_Measurement
Location_Name=143536000004382382
Sub_Location=143536000004382454
Added_User=zoho.loginuser
];
}
}
else if(getinv.count() > 0)
{
sendmail
[
from :zoho.loginuserid
to :"pooja.s@synprosoft.com"
subject :"GIN Successful form submission - getinV"
message :"Part No " + getin.Part_No.Part_No + "PRD WIP TOT QTY-" + getinv.Total_Qty + "PRD WIP AVL QTY-" + getinv.Available_Qty + "PRD WIP BLK QTY-" + getinv.Block_Qty + "ID-" + getin.ID + "getinv insert Count-" + getinv.count()
]
if(wovar.Required_Quantity == wovar.Issued_Quantity)
{
getinv.Available_Qty=ifnull(getinv.Available_Qty,0) + ifnull(wovar.Issued_Quantity,0);
getinv.Total_Qty=ifnull(getinv.Total_Qty,0) + ifnull(wovar.Issued_Quantity,0);
}
//When Issued Qty is Greater than Reqquired Qty
else if(wovar.Issued_Quantity > wovar.Required_Quantity)
{
// blk = ifnull(wovar.Issued_Quantity,0) - ifnull(wovar.Required_Quantity,0);
// getinv.Total_Qty=ifnull(getinv.Total_Qty,0) + ifnull(wovar.Required_Quantity,0);
// getinv.Available_Qty=ifnull(getinv.Available_Qty,0) + ifnull(wovar.Issued_Quantity,0);
// getinv.Block_Qty=ifnull(getinv.Block_Qty,0) + blk;
blk = ifnull(wovar.Issued_Quantity,0) + ifnull(wovar.Required_Quantity,0);
getinv.Total_Qty=ifnull(getinv.Total_Qty,0) + blk;
getinv.Available_Qty=ifnull(getinv.Available_Qty,0) + ifnull(wovar.Issued_Quantity,0);
getinv.Block_Qty=ifnull(getinv.Block_Qty,0) + ifnull(wovar.Required_Quantity,0);
}
else if(wovar.Issued_Quantity < wovar.Required_Quantity)
{
getinv.Total_Qty=ifnull(getinv.Total_Qty,0) + ifnull(wovar.Required_Quantity,0);
getinv.Available_Qty=ifnull(getinv.Available_Qty,0) + ifnull(wovar.Issued_Quantity,0);
getinv.Block_Qty=ifnull(getinv.Block_Qty,0) + ifnull(wovar.Balance_Quantity,0);
}
}
mat_isf_qty = ifnull(wovar.Issued_Quantity,0) + ifnull(wovar.Quantity_issued_so_far,0);
fetch_mat_subform = Material_Request_Subform[ID == wovar.Material_Request_Subform_lu && Part_Description == wovar.Part_Description];
fetch_mat_subform.Quantity_issued_so_far=mat_isf_qty;
blnc_qty = ifnull(wovar.Balance_Quantity,0.0);
fetch_mat_subform.Balance_Qty=blnc_qty;
bat_no_list = List();
iss_qty = wovar.Issued_Quantity;
bat = Stock_Batch[Part_No == wovar.Part_No && Part_Description == wovar.Part_Description && Status != "Issued" && Location == wovar.Location && Warehouse == input.Warehouse && Sub_Location == wovar.Sub_Location && Racks_Bins == wovar.Racks_Bins];
for each i1 in bat
{
bat_no = Stock_Batch[ID == i1].Batch_No;
bat_no_list.add(bat_no);
}
i = 0;
for each no in bat_no_list
{
batching = Stock_Batch[Batch_No == no];
ava_qty = batching.Available_Quantity;
i = i + 1;
if(i == 1 && iss_qty > ava_qty)
{
batching.Status="Issued";
batching.Issued_Qty_So_far=iss_qty;
batching.Available_Quantity=0;
bal_qty = iss_qty - ava_qty;
}
else if(i == 1 && iss_qty < ava_qty)
{
batching.Status="Partially Issued";
batching.Issued_Qty_So_far=iss_qty;
batching.Available_Quantity=ava_qty - iss_qty;
bal_qty = 0;
}
else if(i == 1 && iss_qty == ava_qty)
{
batching.Status="Issued";
batching.Issued_Qty_So_far=iss_qty;
batching.Available_Quantity=0;
bal_qty = 0;
}
else if(i > 1 && bal_qty > ava_qty)
{
batching.Status="Issued";
batching.Issued_Qty_So_far=iss_qty;
batching.Available_Quantity=0;
bal_qty = bal_qty - ava_qty;
}
else if(i > 1 && bal_qty < ava_qty)
{
batching.Status="Partially Issued";
batching.Issued_Qty_So_far=iss_qty;
batching.Available_Quantity=ava_qty - bal_qty;
bal_qty = 0;
}
else if(i > 1 && bal_qty == ava_qty)
{
batching.Status="Issued";
batching.Issued_Qty_So_far=bal_qty;
batching.Available_Quantity=0;
bal_qty = 0;
}
}
// Updating Stock value
temp_issued_qty = rec.Issued_Quantity;
ival = 0;
bal = 0;
if(wovar.Balance_Quantity < 1)
{
fetch_mat_subform.Status="Issued";
}
else
{
fetch_mat_subform.Status="Partially Issued";
}
}
}
//above closing parenthesis is for gin from work order if contidion.
emptylist = List();
if(Material_Request_RECID != emptylist || Material_Request_RECID != null && input.Form_Mode == "GIN against MRQ")
{
fet_Mrq_sts = Material_Request[ID == input.Material_Request_RECID];
//For GIN Validtaions
for each rec in input.Item_Details
{
if(rec.Issued_Quantity != null || rec.Issued_Quantity != 0)
{
//Updating qty issued so far
mat_isf_qty = ifnull(rec.Issued_Quantity,0) + ifnull(rec.Quantity_issued_so_far,0);
//Updating Quantity_issued_so_far in Material Request Subform
fetch_mat_subform = Material_Request_Subform[ID == rec.Material_Request_Subform_lu && Part_Description == rec.Part_Description];
fetch_mat_subform.Quantity_issued_so_far=mat_isf_qty;
//Updating blnc qty
blnc_qty = ifnull(rec.Balance_Quantity,0.0);
fetch_mat_subform.Balance_Qty=blnc_qty;
//below is new code to handle when items are in multiple times with different places.
getinventory = Inventory[Part_No == rec.Part_No] sort by Total_Qty desc;
info getinventory;
if(getinventory.count() > 0)
{
balqty = 0;
i = 1;
for each inventrec in getinventory
{
info balqty;
info i;
//Issued Quantiy is less total qty
if(rec.Issued_Quantity <= inventrec.Total_Qty && i == 1)
{
info "issued qty is less than total qty";
inventrec.Total_Qty=ifnull(inventrec.Total_Qty,0.0) - ifnull(rec.Issued_Quantity,0.0);
inventrec.Available_Qty=ifnull(inventrec.Available_Qty,0.0) - ifnull(rec.Issued_Quantity,0.0);
}
//Issued Quantity is more total qty
else if(rec.Issued_Quantity > inventrec.Total_Qty && i == 1)
{
info "issued qty is more than total qty";
balqty = ifnull(rec.Issued_Quantity,0.0) - ifnull(inventrec.Total_Qty,0.0);
inventrec.Total_Qty=0;
inventrec.Available_Qty=0;
}
//for first time it should not get inside the loop
if(balqty > 0 && i > 1)
{
info "balaance qty is more than zero";
//Balance Qty is less
if(balqty <= inventrec.Total_Qty)
{
info "balance qty is less than total qty";
inventrec.Total_Qty=ifnull(inventrec.Total_Qty,0.0) - ifnull(balqty,0.0);
inventrec.Available_Qty=ifnull(inventrec.Available_Qty,0.0) - ifnull(balqty,0.0);
balqty = 0;
}
//Balance Qty is More
else if(balqty >= inventrec.Total_Qty)
{
info "balance qty is greater than total qty";
balqty = ifnull(balqty,0.0) - ifnull(inventrec.Total_Qty,0.0);
inventrec.Total_Qty=0;
inventrec.Available_Qty=0;
}
}
if(balqty == 0)
{
info "before break";
break;
}
i = i + 1;
}
}
//--
//Subracting stock-batch
// Basic
/*bat = Stock_Batch[Part_No == rec.Part_No && Part_Description == rec.Part_Description && Status != "Issued" && Batch_No == rec.Batch_No.Batch_No];
if(bat.Available_Quantity == rec.Issued_Quantity)
{
bat.Status="Issued";
}
if(bat.Available_Quantity > rec.Issued_Quantity)
{
bat.Status="Partially Issued";
bat.Available_Quantity=bat.Available_Quantity - rec.Issued_Quantity;
}*/
// Advanced
iss_qty = 0;
ava_qty = 0;
bal_qty = 0;
// if(rec.Specification == null || rec.Specification == "")
// {
bat = Stock_Batch[Part_No == rec.Part_No && Part_Description == rec.Part_Description && Status != "Issued" && Location == rec.Location && Warehouse == input.Warehouse && Sub_Location == rec.Sub_Location && Racks_Bins == rec.Racks_Bins];
// }
// else
// {
// bat = Stock_Batch[Part_No == rec.Part_No && Part_Description == rec.Part_Description && Specification == rec.Specification && Status != "Issued" && Location == rec.Location && Warehouse == input.Warehouse && Sub_Location == rec.Sub_Location && Racks_Bins == rec.Racks_Bins];
// }
bat_no_list = List();
iss_qty = rec.Issued_Quantity;
for each i1 in bat
{
bat_no = Stock_Batch[ID == i1].Batch_No;
bat_no_list.add(bat_no);
}
info bat_no_list;
i = 0;
for each no in bat_no_list
{
batching = Stock_Batch[Batch_No == no];
ava_qty = batching.Available_Quantity;
i = i + 1;
if(i == 1 && iss_qty > ava_qty)
{
batching.Status="Issued";
batching.Issued_Qty_So_far=iss_qty;
batching.Available_Quantity=0;
bal_qty = iss_qty - ava_qty;
}
else if(i == 1 && iss_qty < ava_qty)
{
batching.Status="Partially Issued";
batching.Issued_Qty_So_far=iss_qty;
batching.Available_Quantity=ava_qty - iss_qty;
bal_qty = 0;
}
else if(i == 1 && iss_qty == ava_qty)
{
batching.Status="Issued";
batching.Issued_Qty_So_far=iss_qty;
batching.Available_Quantity=0;
bal_qty = 0;
}
else if(i > 1 && bal_qty > ava_qty)
{
batching.Status="Issued";
batching.Issued_Qty_So_far=iss_qty;
batching.Available_Quantity=0;
bal_qty = bal_qty - ava_qty;
}
else if(i > 1 && bal_qty < ava_qty)
{
batching.Status="Partially Issued";
batching.Issued_Qty_So_far=iss_qty;
batching.Available_Quantity=ava_qty - bal_qty;
bal_qty = 0;
}
else if(i > 1 && bal_qty == ava_qty)
{
batching.Status="Issued";
batching.Issued_Qty_So_far=bal_qty;
batching.Available_Quantity=0;
bal_qty = 0;
}
}
// Updating Stock value
temp_issued_qty = rec.Issued_Quantity;
ival = 0;
bal = 0;
}
if(rec.Balance_Quantity == null || rec.Balance_Quantity == 0)
{
fetch_mat_subform.Status="Issued";
}
else
{
fetch_mat_subform.Status="Partially Issued";
}
}
}
else if(input.Form_Mode == "Direct GIN" || input.Form_Mode == "")
{
str = thisapp.Common.Number_Function_New("Material Request");
gin_without_mrq = insert into Material_Request
[
Request_Date=zoho.currentdate
Added_User=zoho.loginuser
Request_Raised_By=input.Issued_By
Warehouse=input.Warehouse
Material_Type=input.Material_Request_Type
Material_Request_No=str
MR_Status="MRQ from GIN"
];
input.Material_Request_RECID = gin_without_mrq;
Statusw = "";
Balance_Qtyw = input.Item_Details.Balance_Quantity;
if(Balance_Qtyw < 1)
{
Statusw = "Issued";
}
else
{
Statusw = "Partially Issued";
}
for each recmrsf in input.Item_Details
{
insert into Material_Request_Subform
[
Part_Description=recmrsf.Part_No
Part_No=recmrsf.Part_Description
Added_User=zoho.loginuser
Material_Type=recmrsf.Material_Type
Department=input.Issued_Empolyee_Department
UoM=recmrsf.Unit_of_Measurement
Specification=recmrsf.Specification
Stock_Qty=recmrsf.Stock_Quantity
Required_Qty=recmrsf.Required_Quantity
Balance_Qty=recmrsf.Balance_Quantity
Status=Statusw
Quantity_issued_so_far=recmrsf.Issued_Quantity
Material_Req_Exis_ID=gin_without_mrq
]
}
//For GIN Validtaions
for each rec in input.Item_Details
{
if(rec.Issued_Quantity != null || rec.Issued_Quantity != 0)
{
rec.Material_Request_No=str;
//below is new code to handle when items are in multiple times with different places.
getinventory = Inventory[Part_No == rec.Part_No] sort by Total_Qty desc;
info getinventory;
if(getinventory.count() > 0)
{
balqty = 0;
i = 1;
for each inventrec in getinventory
{
//Issued Quantiy is less total qty
if(rec.Issued_Quantity <= inventrec.Total_Qty && i == 1)
{
inventrec.Total_Qty=ifnull(inventrec.Total_Qty,0.0) - ifnull(rec.Issued_Quantity,0.0);
inventrec.Available_Qty=ifnull(inventrec.Available_Qty,0.0) - ifnull(rec.Issued_Quantity,0.0);
}
//Issued Quantity is more total qty
else if(rec.Issued_Quantity > inventrec.Total_Qty && i == 1)
{
balqty = ifnull(rec.Issued_Quantity,0.0) - ifnull(inventrec.Total_Qty,0.0);
inventrec.Total_Qty=0;
inventrec.Available_Qty=0;
}
//for first time it should not get inside the loop
if(balqty > 0 && i > 1)
{
info "balaance qty is more than zero";
//Balance Qty is less
if(balqty <= inventrec.Total_Qty)
{
info "balance qty is less than total qty";
inventrec.Total_Qty=ifnull(inventrec.Total_Qty,0.0) - ifnull(balqty,0.0);
inventrec.Available_Qty=ifnull(inventrec.Available_Qty,0.0) - ifnull(balqty,0.0);
balqty = 0;
}
//Balance Qty is More
else if(balqty >= inventrec.Total_Qty)
{
info "balance qty is greater than total qty";
balqty = ifnull(balqty,0.0) - ifnull(inventrec.Total_Qty,0.0);
inventrec.Total_Qty=0;
inventrec.Available_Qty=0;
}
}
if(balqty == 0)
{
info "before break";
break;
}
i = i + 1;
}
iss_qty = 0;
ava_qty = 0;
bal_qty = 0;
bat = Stock_Batch[Part_No == rec.Part_No && Part_Description == rec.Part_Description && Status != "Issued" && Warehouse == input.Warehouse && Location == rec.Location && Sub_Location == rec.Sub_Location && Racks_Bins == rec.Racks_Bins];
bat_no_list = List();
iss_qty = rec.Issued_Quantity;
for each i1 in bat
{
bat_no = Stock_Batch[ID == i1].Batch_No;
bat_no_list.add(bat_no);
}
info bat_no_list;
i = 0;
for each no in bat_no_list
{
batching = Stock_Batch[Batch_No == no];
ava_qty = batching.Available_Quantity;
i = i + 1;
if(i == 1 && iss_qty > ava_qty)
{
batching.Status="Issued";
batching.Issued_Qty_So_far=iss_qty;
batching.Available_Quantity=0;
bal_qty = iss_qty - ava_qty;
}
else if(i == 1 && iss_qty < ava_qty)
{
batching.Status="Partially Issued";
batching.Issued_Qty_So_far=iss_qty;
batching.Available_Quantity=ava_qty - iss_qty;
bal_qty = 0;
}
else if(i == 1 && iss_qty == ava_qty)
{
batching.Status="Issued";
batching.Issued_Qty_So_far=iss_qty;
batching.Available_Quantity=0;
bal_qty = 0;
}
else if(i > 1 && bal_qty > ava_qty)
{
batching.Status="Issued";
batching.Issued_Qty_So_far=iss_qty;
batching.Available_Quantity=0;
bal_qty = bal_qty - ava_qty;
}
else if(i > 1 && bal_qty < ava_qty)
{
batching.Status="Partially Issued";
batching.Issued_Qty_So_far=iss_qty;
batching.Available_Quantity=ava_qty - bal_qty;
bal_qty = 0;
}
else if(i > 1 && bal_qty == ava_qty)
{
batching.Status="Issued";
batching.Issued_Qty_So_far=bal_qty;
batching.Available_Quantity=0;
bal_qty = 0;
}
}
// Updating Stock value
temp_issued_qty = rec.Issued_Quantity;
ival = 0;
bal = 0;
if(temp_issued_qty != 0)
{
}
}
}
}
//Insert / Update the Issued Details
for each Itemdetrec in input.Item_Details
{
insert into Inventory_Ageing
[
Added_User=zoho.loginuser
Part_No=Itemdetrec.Part_No
Part_Description=Itemdetrec.Part_Description
Specification=Itemdetrec.Specification
Issued_Stock=Itemdetrec.Issued_Quantity
Stock_Added_Issued_Date=zoho.currentdate
]
}
getdeptname = Department[ID == input.Issued_Empolyee_Department].Department_Name;
//The code below is to get Project cost
posum = 0;
fc = 0;
for each rec in input.Item_Details
{
fet_posub = Purchase_Order_Subform[Part_No == rec.Part_No];
if(rec.Part_No == fet_posub.Part_No)
{
posum = posum + ifnull(fet_posub.Rate,0.00);
finalcost = fet_posub.Rate * rec.Issued_Quantity;
}
else
{
fet_venSub = Vendor_Contract_Subform[Part_Description == rec.Part_Description].maximum(Unit_Price);
posum = posum + ifnull(fet_venSub,0.00);
finalcost = ifnull(fet_posub.Rate,0.0) * ifnull(rec.Issued_Quantity,0.0);
}
fc = fc + finalcost;
}
input.Project_Cost = fc;
input.Project_Rate = posum;
//below code is to update in zoho project form
if(input.Project_Name.Project_Title != null)
{
Fet_ZohoProject = Zoho_Projects_Data[ID == input.Project_Name];
if(Fet_ZohoProject.GIN_Item_Total_Amount == 0 || Fet_ZohoProject.GIN_Item_Total_Amount == null)
{
Fet_ZohoProject.GIN_Item_Total_Amount=ifnull(input.Project_Cost,0.00);
}
else
{
Fet_ZohoProject.GIN_Item_Total_Amount=ifnull(Fet_ZohoProject.GIN_Item_Total_Amount,0.00) + Ifnull(input.Project_Cost,0.00);
}
}
//THE Below function write the record in stock ledger.
thisapp.Stock_Ledger.Quantity_out_for_Stock_Ledger(input.ID);
for each itemrec in input.Item_Details
{
//if(itemrec.Part_No.Part_No == "100166" || itemrec.Part_No.Part_No == "100044")
if(itemrec.Part_No.Part_No == "100166")
{
//thisapp.Books.Adjust_Item_Inventory_in_zbooks(itemrec.ID);
//thisapp.Inventory.update_books_stock_details(itemrec.ID);
}
}
if(var == 1)
{
openUrl("#Form:Alert_Messages?Status=" + "GIN" + "&Value=" + input.GIN_Number + "&zc_LoadIn=dialog","same window");
}
else
{
openUrl("#Form:GIN","same window");
}
}
catch (e)
{
sendmail
[
from :"erp@carrierwheels.com"
to :"parthasarathy.m@synprosoft.com"
subject :"GIN Created Or Edited Successful Form Submission try & catch" + input.ID
message :e
]
}