Stock Update - OnSuccess
Tue Jan 07 2025 15:38:44 GMT+0000 (Coordinated Universal Time)
Saved by @Pooja
//input.Approval = "Pending"; // Nisha.s -- I have commented the below code up to line no 251& used this on blueprint qty = ifnull(input.Moved_Qty,0.0) + ifnull(input.Moved_Qty_So_Far,0.0); if(input.Accepted_Quantity > input.Moved_Qty) { input.Balance_Qty_to_Move = ifnull(input.Accepted_Quantity,0.0) - qty; input.Moved_Qty_So_Far = ifnull(input.Moved_Qty_So_Far,0.0) + ifnull(input.Moved_Qty,0.0); } mts_status = Income_Quality_Check_Process[ID == input.Income_Quality_Check_RECID]; //Coil Id based Stock Maintenace - User Requirement - 10/02/2023 getmat = Materials[ID == input.Part_No]; getcatg = Category[ID == getmat.Category]; if(getcatg.Category != "HR Coils") { stock = Inventory[Part_No == input.Part_No && Part_Description == input.Part_Description && Warehouse == input.Warehouse && Location_Name == input.Location_Name && Sub_Location == input.Sub_Location && Rack_Number == input.Rack_Number]; } else { stock = Inventory[Part_No == input.Part_No && Part_Description == input.Part_Description && HR_Coil_id == input.HR_Coil_id && Warehouse == input.Warehouse && Location_Name == input.Location_Name && Sub_Location == input.Sub_Location && Rack_Number == input.Rack_Number]; } category = Materials[ID == input.Part_Description].Category; sub_category = Materials[ID == input.Part_Description].Sub_Category; fet_reg = Regular_Item_Master[Part_No == input.Part_No]; fet_child = Regular_Child_Item_Parts[Part_No == input.Part_No]; if(stock.count() == 0) { insert into Inventory [ Added_User=zoho.loginuser Stock_Update_ID=input.ID Part_No=input.Part_No Part_Description=input.Part_Description Specification=input.Specification Total_Qty=input.Moved_Qty Batch_Number=input.Batch_Number Location_Name=input.Location_Name Sub_Location=input.Sub_Location Rack_Number=input.Rack_Number Available_Qty=input.Moved_Qty Warehouse=input.Warehouse Block_Qty=0.00 Category=category Sub_Category=sub_category HR_Coil_id=input.HR_Coil_id UOM=input.Unit_of_Measurement ] //Total_Qty=mts_status.Received_Qty if(Form_Mode == "Move to Stock") { if(input.Accepted_Quantity == qty) { mts_status.Move_to_Stock_status="Moved"; mts_status.IQC_Status="Stock Updated"; } else if(input.Accepted_Quantity > qty) { mts_status.Move_to_Stock_status="Partially Moved"; mts_status.IQC_Status="Stock Partially Updated"; } } } else { //dont update the stock again.ie.Move to stock done-vendor inspection done - move to stock cases. // if(mts_status.IQC_Status != "Stock Update Pending" && Form_Mode == "Move to Stock") // { // //stock.Total_Qty=ifnull(stock.Total_Qty,0.00) + mts_status.Received_Qty; // } stock.Available_Qty=ifnull(stock.Available_Qty,0.0) + ifnull(input.Moved_Qty,0.0); stock.Total_Qty=ifnull(stock.Total_Qty,0.00) + ifnull(input.Moved_Qty,0.0); //stock.Total_Qty=ifnull(stock.Block_Qty,0.0) + ifnull(stock.Available_Qty,0.0); //fet_reg.Today_inventory = ifnull(stock.Available_Qty,0.0) + ifnull(input.Moved_Qty,0.0); if(Form_Mode == "Move to Stock") { if(input.Accepted_Quantity == qty) { mts_status.Move_to_Stock_status="Moved"; mts_status.IQC_Status="Stock Updated"; } else if(input.Accepted_Quantity > qty) { mts_status.Move_to_Stock_status="Partially Moved"; mts_status.IQC_Status="Stock Partially Updated"; } } } //rejected qty become accepted qty by manangement spl approval. if(Form_Mode = "Rejectitem movetostock") { //stock.Total_Qty=ifnull(stock.Total_Qty,0.00) + mts_status.Received_Qty; stock.Total_Qty=ifnull(stock.Total_Qty,0.00) + ifnull(input.Moved_Qty,0.0); mts_status.Rejected_Qty=ifnull(input.Accepted_Quantity,0.0) - ifnull(mts_status.Rejected_Qty,0.0); mts_status.Accepted_Qty=ifnull(mts_status.Accepted_Qty,0.0) + input.Accepted_Quantity; } if(input.Purchase_Order_No != null) { fet_posf = Purchase_Order_Subform[Purchase_Order_ExisID == input.Purchase_Order_No && Part_No == input.Part_No && ID == input.Purchase_Order_Subform_RECID]; fet_bat_no = GRN_Subform[Purchase_Order_SubForm_RECID == fet_posf.ID && Batch_Number == input.Batch_Number]; fet_stockvalue = Stock_Value[Part_No == input.Part_No && Unit_Price == fet_posf.Rate]; if(fet_stockvalue.count() > 0) { stockvalue = Stock_Value[Part_No == input.Part_No && Unit_Price == fet_posf.Rate]; // stockvalue.Stock_Qty=stockvalue.Stock_Qty + ifnull(input.Accepted_Quantity,0.00); // a = ifnull(fet_posf.Rate,0.00) * ifnull(input.Accepted_Quantity,0.00); stockvalue.Purchase_Order_No=input.Purchase_Order_No; stockvalue.Stock_Qty=ifnull(stockvalue.Stock_Qty,0.0) + ifnull(input.Moved_Qty,0.00); a = ifnull(fet_posf.Rate,0.00) * ifnull(input.Moved_Qty,0.00); stockvalue.Stock_Value=ifnull(stockvalue.Stock_Value,0.0) + ifnull(a,0.0); stockvalue.Inventory_Qty=ifnull(stockvalue.Stock_Qty,0.0); } else { insert into Stock_Value [ Added_User=zoho.loginuser Purchase_Order_No=input.Purchase_Order_No Batch_Number=fet_bat_no.ID Part_No=input.Part_No Part_Description=input.Part_Description Specification=input.Specification Location_Name=input.Location_Name Sub_Location=input.Sub_Location Rack_Number=input.Rack_Number Warehouse=input.Warehouse Stock_Qty=ifnull(input.Moved_Qty,0.00) Unit_Price=ifnull(fet_posf.Rate,0.00) Stock_Value=ifnull(fet_posf.Rate,0.00) * ifnull(input.Moved_Qty,0.00) Stock_Update=input.ID Inventory_Qty=ifnull(input.Moved_Qty,0.0) ] } } //-----------------Update po status------------------------ if(input.Purchase_Order_No != null) { //fetch_po_sub = Purchase_Order_Subform[Purchase_Order_ExisID == input.Purchase_Order_No && Part_No == input.Part_No].sum(Ordered_Qty); fetch_po_sub = Purchase_Order_Subform[Purchase_Order_ExisID == input.Purchase_Order_No && Part_No == input.Part_No && ID == input.Purchase_Order_Subform_RECID].sum(Ordered_Qty); get_grn_qty = GRN_Subform[Purchase_Order_Number == input.Purchase_Order_No && Part_No == input.Part_No].sum(Received_Qty); fet_po_sub = Purchase_Order_Subform[Purchase_Order_ExisID == input.Purchase_Order_No && Part_No == input.Part_No && ID == input.Purchase_Order_Subform_RECID]; get_IQC = Income_Quality_Check_Process[Purchase_Order_No == input.Purchase_Order_No && IQC_No != "" && Part_No == fet_po_sub.Part_No && GRN_Subform_RECID == input.GRN_Subform_RECID].sum(Accepted_Qty); //PO Final Close get_po_id = Purchase_Order[ID == input.Purchase_Order_No && Purchase_Order_No != ""]; // sendmail // [ // from :"erp@carrierwheels.com" // to :"parthasarathy.m@synprosoft.com" // subject :"stock update created succussful form sub - afert line 128 if condition-slno1" + input.Part_No.Part_No // message :"fetchposubqty " + fetch_po_sub + " getiqcqty " + get_IQC + "posfstts " + input.Part_No.Part_No // ] if(get_po_id.count() > 0) { check_po_status = 0; for each po_sub_form in Purchase_Order_Subform[Purchase_Order_ExisID == get_po_id.ID && Part_No == input.Part_No && ID == input.Purchase_Order_Subform_RECID] { // sendmail // [ // from :"erp@carrierwheels.com" // to :"parthasarathy.m@synprosoft.com" // subject :"stock update created succussful form sub - after line 147 for loop po status before slno2" + po_sub_form.ID // message :po_sub_form.PO_Status + "---" + po_sub_form.ID // ] if(po_sub_form.PO_Status != "QC Completed") { check_po_status = 1; } } // sendmail // [ // from :"erp@carrierwheels.com" // to :"parthasarathy.m@synprosoft.com" // subject :"stock update created succussful form sub - after check po status slno3 " + input.Purchase_Order_Subform_RECID // message :"check_po_status " + check_po_status + "---" + input.Purchase_Order_Subform_RECID // ] if(check_po_status == 0) { //the below line is comment on 27/11/2023 due to main po status is updating po closed,still items are not stock updated fully. //get_po_id.PO_Status="PO Closed"; //get_po_id.PO_Status="QC Partially Completed"; } else { get_po_id.PO_Status="QC Partially Completed"; } } //if po quantity is greater than or equal to the total accepted qty in the IQC, it means the po order is closed if(fet_po_sub.count() > 0) { //Stock Update id for PO History Report in PO subform fet_po_sub.Stock_Update_ID=input.ID; if(get_IQC >= fetch_po_sub) { // fet_po_sub.PO_Status="QC Completed";--ERP Issue & Queries No.122 dt 10/04/2023. fet_po_sub.PO_Status="PO Closed"; } //additional check for Po sf status if(fet_po_sub.Qty_Received_so_far == fet_po_sub.Ordered_Qty) { fet_po_sub.PO_Status="PO Closed"; } } //if purchase order subform status is PO closed for all items,then close the Purchase main form status as PO Closed - 10/10/2023 posfcount = Purchase_Order_Subform[Purchase_Order_ExisID == get_po_id.ID].count(); ///info posfcount; poclosestts = Purchase_Order_Subform[Purchase_Order_ExisID == get_po_id.ID && PO_Status == "PO Closed"].count(); //info poclosestts; posffc = Purchase_Order_Subform[Purchase_Order_ExisID == get_po_id.ID && PO_Status == "Foreclosed"].count(); //info posffc; if(posfcount == poclosestts) { updtpomain = Purchase_Order[ID == get_po_id.ID]; if(updtpomain.count() > 0) { updtpomain.PO_Status="PO Closed"; } } else if(poclosestts >= posffc && posfcount == ifnull(posffc,0.0) + ifnull(poclosestts,0.0)) { updtpomain = Purchase_Order[ID == get_po_id.ID]; if(updtpomain.count() > 0) { updtpomain.PO_Status="PO Closed"; } } //for checking purpose - posf is not closed by po main is closed if(posfcount != poclosestts) { checkpo = Purchase_Order[ID == get_po_id.ID]; if(checkpo.count() > 0 && checkpo.PO_Status == "PO Closed") { // sendmail // [ // from :"erp@carrierwheels.com" // to :"parthasarathy.m@synprosoft.com" // subject :"ALERT PO SUBFORM ITEMS STILL PENDING AND MAIN PO ISs CLOSED slno-4" + get_po_id // message :checkpo.Purchase_Order_No + "- " + get_po_id // ] } } } //Insert records in Inventory Ageing form insert into Inventory_Ageing [ Added_User=zoho.loginuser Part_No=input.Part_No Part_Description=input.Part_Description Specification=input.Specification Added_Stock=input.Moved_Qty Stock_Added_Issued_Date=zoho.currentdate Expiry_Date=input.Expiry_Date ] //Insert record in Stock Ledger for Report purpose fet_iqc1 = Income_Quality_Check_Process[ID == input.Income_Quality_Check_RECID]; GRNsubformID = GRN_Subform[ID == fet_iqc1.GRN_Subform_ID]; fetch_grn1 = GRN[ID == GRNsubformID.GRN_ID]; Vend_name = Vendor[ID = fetch_grn1.Vendor_Name].Vendor_Name; //the below function will insert the record in stock ledger thisapp.Stock_Ledger.Quantity_in_for_Stock_Ledger(input.ID); //Update the Stock in ZOHO CRM --> Products--> Quantity in Stock Field- as per Mr.Senthil Advice the below fucntion is not required.19/05/2023 //thisapp.Update_Stock_in_CRM(input.Part_No); //------ //_________Updating Moved Qty value & subform calculation to create Bills__________Nisha___________________________ get_bill = Create_Bills[GRN_No == input.GRN_Recid]; fet_Hold = Accept_Quantity[IQC_RECID == input.ID]; if(get_bill.count() > 0 && fet_Hold.Hold_Flag != "Hold Flag") { updbills = Create_Bills_Subform[Exists_ID == get_bill.ID && Part_No == input.Part_No && GRN_Subform_ID == input.GRN_Subform_RECID]; if(updbills.count() > 0) { get_data = Stock_Update[ID == input.ID]; updbills.Qty=ifnull(get_data.Moved_Qty,0); updbills.Subtotal=ifnull(updbills.Qty,0) * ifnull(updbills.Rate,0); get_po = Purchase_Order_Subform[ID == updbills.Purchase_Order_Subform_ID]; tot = updbills.Subtotal + get_po.Tax_Value; //info get_po.Tax_Value; //info get_po.Tax; subtot = Ifnull(get_po.Rate,0.0) * ifnull(get_data.Moved_Qty,0.0); get_tax_value = GST_Details[ID == get_po.Tax].Total_Rate; tax_calc = ifnull(subtot,0.00) * ifnull(get_tax_value,0.00) / 100; Total = ifnull(get_data.Moved_Qty,0.00) * ifnull(get_po.Rate,0.00) + ifnull(tax_calc,0.00); updbills.Tax=ifnull(get_po.Tax,null); updbills.Tax_Value=ifnull(tax_calc,0.00); //updbills.Tax_Value=ifnull(subtot,0.00) * ifnull(get_tax_value,0.00) / 100; updbills.Total=ifnull(Total,0.00); } itemtot = 0; taxtot = 0; Grndtot = 0; dftbill = True; for each item in Create_Bills_Subform[Exists_ID == get_bill.ID] { itemtot = itemtot + ifNull(item.Subtotal,0); taxtot = taxtot + ifNull(item.Tax_Value,0); Grndtot = Grndtot + ifNull(item.Total,0); if(item.Qty == null) { dftbill = False; } // else if (item.Qty == null && fet_iqc1.Rejected_Qty > 0 && fet_iqc1.Accepted_Qty == 0 ) // { // dftbill = True; // } } get_bill.Item_Total=itemtot; get_bill.Tax_Total=taxtot; get_bill.Grand_Total=Grndtot; get_bill.Create_Draft_Bill=dftbill; if(fetch_grn1.count() > 0) { fetch_grn1.Create_Draft_Bill=dftbill; } // get_bill.Item_Total=ifnull(updbills.Subtotal,0.00); // get_bill.Tax_Total=ifnull(updbills.Total,0.00); // get_bill.Grand_Total =ifnull(updbills.Subtotal,0.00)+ifnull(updbills.Total,0.00); } //-----------------If Accepted > 0 & hold > 0 ,calculation for Moved Qty-------------------- // if(get_bill.count() > 0 && fet_iqc1.Hold_Qty > 0 && fet_iqc1.Accepted_Qty > 0 && fet_iqc1.IQC_Status =="IQC Completed" && fet_iqc1.Hold_Flag = "Bill Generated by Hold Qty") // if(get_bill.count() > 0 && fet_iqc1.Hold_Qty > 0 && fet_iqc1.Accepted_Qty > 0 && fet_iqc1.Hold_Flag = "Bill Generated by Hold Qty") // { // updbills1 = Create_Bills_Subform[Exists_ID == get_bill.ID && Part_No == input.Part_No && GRN_Subform_ID == input.GRN_Subform_RECID]; // if(updbills1.count() > 0 && fet_iqc1.Hold_Qty > 0) // { // get_data = Stock_Update[ID == input.ID]; // movqty = get_data.Moved_Qty + fet_iqc1.Hold_Qty ; // updbills1.Qty=movqty; // updbills1.Subtotal=ifnull(updbills1.Qty,0) * ifnull(updbills1.Rate,0); // get_po = Purchase_Order_Subform[ID == updbills1.Purchase_Order_Subform_ID]; // tot = updbills1.Subtotal + get_po.Tax_Value; // info get_po.Tax_Value; // info get_po.Tax; // subtot = Ifnull(get_po.Rate,0.0) * ifnull(movqty,0.0); // get_tax_value = GST_Details[ID == get_po.Tax].Total_Rate; // tax_calc = ifnull(subtot,0.00) * ifnull(get_tax_value,0.00) / 100; // Total = ifnull(movqty,0.00) * ifnull(get_po.Rate,0.00) + ifnull(tax_calc,0.00); // updbills1.Tax=ifnull(get_po.Tax,null); // updbills1.Tax_Value=ifnull(tax_calc,0.00); // //updbills1.Tax_Value=ifnull(subtot,0.00) * ifnull(get_tax_value,0.00) / 100; // updbills1.Total=ifnull(Total,0.00); // } // itemtot = 0; // taxtot = 0; // Grndtot = 0; // dftbill = True; // for each item1 in Create_Bills_Subform[Exists_ID == get_bill.ID] // { // itemtot = itemtot + ifNull(item1.Subtotal,0); // taxtot = taxtot + ifNull(item1.Tax_Value,0); // Grndtot = Grndtot + ifNull(item1.Total,0); // if(item1.Qty == null) // { // dftbill = False; // } // } // get_bill.Item_Total=itemtot; // get_bill.Tax_Total=taxtot; // get_bill.Grand_Total=Grndtot; // get_bill.Create_Draft_Bill=dftbill; // fetch_grn1.Create_Draft_Bill=dftbill; // } //______________________________________________________________________________________________________________ // if (zoho.loginuserid =="admin@carrierwheels.com") // { //--------Run DRaft Wo function----------------------- fet_reg = Regular_Item_Master[Part_No == input.Part_No]; if(fet_reg.count() > 0) { thisapp.workorder.Draft_WO(); //------------Daily Total Inventory Update by Schedule in Regular Item Master------ thisapp.workorder.RegularItem_Master_Total_Qty_DailyUpdate(); } reg_child = Regular_Child_Item_Parts[Part_No == input.Part_No]; if(reg_child.count() > 0) { thisapp.workorder.Draft_WO_Child_Parts(); } //_____________Deleting the records in Create WO for Regular wheels( if Stock > MIn stock in comparing Reg item Master ) //thisapp.Delete_DraftWO_When_Stock_Increases(); //} //__________________________________________________________________________________________________________________ val = input.Part_No.Part_No + " - " + input.Moved_Qty; if(Form_Mode == "Move to Stock") { openUrl("#Form:Alert_Messages?Status=StockUpdate&Value=" + val + "&zc_LoadIn=dialog","same window"); } if(Form_Mode == "Rejectitem movetostock") { openUrl("#Form:Alert_Messages?Status=RejMovetoStock&Value=" + val + "&zc_LoadIn=dialog","same window"); }
Comments