GIN-OnSuccess
Tue Jan 07 2025 14:36:50 GMT+0000 (Coordinated Universal Time)
Saved by @Pooja
// 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 ] }
Comments