/// <summary> /// Process Confirmation Line. /// - Update Movement Line /// </summary> /// <returns>success</returns> public Boolean ProcessLine() { MMovementLine line = GetLine(); //Lakhwinder //Apply UOM Conversion Logic MProduct _Pro = new MProduct(GetCtx(), line.GetM_Product_ID(), Get_TrxName()); if (GetC_UOM_ID() != _Pro.GetC_UOM_ID()) { line.SetTargetQty(Util.GetValueOfDecimal(MUOMConversion.ConvertProductFrom(GetCtx(), line.GetM_Product_ID(), GetC_UOM_ID(), GetTargetQty()))); line.SetMovementQty(Util.GetValueOfDecimal(MUOMConversion.ConvertProductFrom(GetCtx(), line.GetM_Product_ID(), GetC_UOM_ID(), GetConfirmedQty()))); line.SetConfirmedQty(Util.GetValueOfDecimal(MUOMConversion.ConvertProductFrom(GetCtx(), line.GetM_Product_ID(), GetC_UOM_ID(), GetConfirmedQty()))); line.SetScrappedQty(Util.GetValueOfDecimal(MUOMConversion.ConvertProductFrom(GetCtx(), line.GetM_Product_ID(), GetC_UOM_ID(), GetScrappedQty()))); } else { line.SetTargetQty(GetTargetQty()); line.SetMovementQty(GetConfirmedQty()); line.SetConfirmedQty(GetConfirmedQty()); line.SetScrappedQty(GetScrappedQty()); } return(line.Save(Get_TrxName())); }
/// <summary> /// Create Confirmation or return existing one /// </summary> /// <param name="move">movement</param> /// <param name="checkExisting">if false, new confirmation is created</param> /// <returns>Confirmation</returns> public static MMovementConfirm Create(MMovement move, Boolean checkExisting) { if (checkExisting) { MMovementConfirm[] confirmations = move.GetConfirmations(false); for (int i = 0; i < confirmations.Length; i++) { MMovementConfirm confirm1 = confirmations[i]; if (confirm1 != null) { return(confirm1); } } } MMovementConfirm confirm = new MMovementConfirm(move); confirm.Save(move.Get_TrxName()); MMovementLine[] moveLines = move.GetLines(false); for (int i = 0; i < moveLines.Length; i++) { MMovementLine mLine = moveLines[i]; MMovementLineConfirm cLine = new MMovementLineConfirm(confirm); cLine.SetMovementLine(mLine); cLine.Save(move.Get_TrxName()); } return(confirm); }
/// <summary> /// Get Movement Line /// </summary> /// <returns>line</returns> public MMovementLine GetLine() { if (_line == null) { _line = new MMovementLine(GetCtx(), GetM_MovementLine_ID(), Get_TrxName()); } return(_line); }
/// <summary> /// Parent Constructor /// </summary> /// <param name="parent">parent</param> /// <param name="M_AttributeSetInstance_ID">asi</param> /// <param name="movementQty">qty</param> public MMovementLineMA(MMovementLine parent, int M_AttributeSetInstance_ID, Decimal movementQty) : this(parent.GetCtx(), 0, parent.Get_TrxName()) { SetClientOrg(parent); SetM_MovementLine_ID(parent.GetM_MovementLine_ID()); // SetM_AttributeSetInstance_ID(M_AttributeSetInstance_ID); SetMovementQty(movementQty); }
/// <summary> /// Set Movement Line /// </summary> /// <param name="line">line</param> public void SetMovementLine(MMovementLine line) { SetM_MovementLine_ID(line.GetM_MovementLine_ID()); SetTargetQty(line.GetMovementQty()); //Amit 25-nov-2014 // SetConfirmedQty(GetTargetQty()); // suggestion SetConfirmedQty(0); //amit _line = line; }
/// <summary> /// Is Used to Get or Create Instance of MMovementLineMA (Attribute) /// </summary> /// <param name="line"></param> /// <param name="M_AttributeSetInstance_ID"></param> /// <param name="MovementQty"></param> /// <param name="DateMaterialPolicy"></param> /// <returns></returns> public static MMovementLineMA GetOrCreate(MMovementLine line, int M_AttributeSetInstance_ID, Decimal MovementQty, DateTime?DateMaterialPolicy) { MMovementLineMA retValue = null; String sql = "SELECT * FROM M_MovementLineMA " + @" WHERE M_MovementLine_ID = " + line.GetM_MovementLine_ID() + @" AND MMPolicyDate = " + GlobalVariable.TO_DATE(DateMaterialPolicy, true) + @" AND "; if (M_AttributeSetInstance_ID == 0) { sql += "(M_AttributeSetInstance_ID=" + M_AttributeSetInstance_ID + " OR M_AttributeSetInstance_ID IS NULL)"; } else { sql += "M_AttributeSetInstance_ID=" + M_AttributeSetInstance_ID; } DataTable dt = null; IDataReader idr = null; try { idr = DB.ExecuteReader(sql, null, line.Get_Trx()); dt = new DataTable(); dt.Load(idr); idr.Close(); foreach (DataRow dr in dt.Rows) { retValue = new MMovementLineMA(line.GetCtx(), dr, line.Get_Trx()); } } catch (Exception ex) { if (idr != null) { idr.Close(); } _log.Log(Level.SEVERE, sql, ex); } finally { if (idr != null) { idr.Close(); } dt = null; } if (retValue == null) { retValue = new MMovementLineMA(line, M_AttributeSetInstance_ID, MovementQty, DateMaterialPolicy); } else { retValue.SetMovementQty(Decimal.Add(retValue.GetMovementQty(), MovementQty)); } return(retValue); }
//Handle Reverse case public Boolean ProcessLineReverse() { MMovementLine line = GetLine(); line.SetTargetQty(line.GetQtyEntered()); line.SetMovementQty(line.GetQtyEntered()); line.SetConfirmedQty(0); line.SetScrappedQty(0); return(line.Save(Get_TrxName())); }
/// <summary> /// Parent Constructor /// </summary> /// <param name="parent"></param> /// <param name="M_AttributeSetInstance_ID"></param> /// <param name="movementQty"></param> /// <param name="MMPloicyDate"></param> public MMovementLineMA(MMovementLine parent, int M_AttributeSetInstance_ID, Decimal movementQty, DateTime?MMPloicyDate) : this(parent.GetCtx(), 0, parent.Get_TrxName()) { SetClientOrg(parent); SetM_MovementLine_ID(parent.GetM_MovementLine_ID()); // SetM_AttributeSetInstance_ID(M_AttributeSetInstance_ID); SetMovementQty(movementQty); if (MMPloicyDate == null) { MMPloicyDate = parent.GetParent().GetMovementDate(); } SetMMPolicyDate(MMPloicyDate); }
public Decimal SetMovementLine(VAdvantage.Model.MMovementLine line) { int _CountDTD001 = Util.GetValueOfInt(DB.ExecuteScalar("SELECT COUNT(AD_MODULEINFO_ID) FROM AD_MODULEINFO WHERE PREFIX='DTD001_' AND IsActive='Y'")); if (_CountDTD001 > 0) { SetM_MovementLine_ID(line.GetM_MovementLine_ID()); SetDTD001_TotalQty(line.GetMovementQty()); SetM_Product_ID(line.GetM_Product_ID()); SetM_AttributeSetInstance_ID(line.GetM_AttributeSetInstance_ID()); decimal totalPackQty = Util.GetValueOfDecimal(DB.ExecuteScalar("SELECT SUM(Qty) FROM M_PackageLine WHERE M_MovementLine_ID=" + line.GetM_MovementLine_ID())); SetQty(line.GetMovementQty() - totalPackQty); _count = Util.GetValueOfDecimal(line.GetMovementQty()) - totalPackQty; SetDTD001_AlreadyPackQty(totalPackQty); SetConfirmedQty(line.GetMovementQty() - totalPackQty); SetDTD001_ConfirmDate(System.DateTime.Now); } return(_count); }
/// <summary> /// Create Confirmation or return existing one /// </summary> /// <param name="move">movement</param> /// <param name="checkExisting">if false, new confirmation is created</param> /// <returns>Confirmation</returns> public static MMovementConfirm Create(MMovement move, Boolean checkExisting) { if (checkExisting) { MMovementConfirm[] confirmations = move.GetConfirmations(false); for (int i = 0; i < confirmations.Length; i++) { MMovementConfirm confirm1 = confirmations[i]; if (confirm1 != null) { return(confirm1); } } } MMovementConfirm confirm = new MMovementConfirm(move); confirm.Save(move.Get_TrxName()); MMovementLine[] moveLines = move.GetLines(false); for (int i = 0; i < moveLines.Length; i++) { MMovementLine mLine = moveLines[i]; MMovementLineConfirm cLine = new MMovementLineConfirm(confirm); cLine.SetMovementLine(mLine); // setting QtyEntered in Target Qty on Confirmation Line cLine.SetTargetQty(mLine.GetQtyEntered()); cLine.SetConfirmedQty(mLine.GetQtyEntered()); cLine.Save(move.Get_TrxName()); } // Change By Arpit Rai on 24th August,2017 To Check if VA Material Quality Control Module exists or not if (Util.GetValueOfInt(DB.ExecuteScalar("SELECT COUNT(*) FROM AD_ModuleInfo WHERE Prefix='VA010_'", null, null)) > 0) { CreateConfirmParameters(move, confirm.GetM_MovementConfirm_ID(), confirm.GetCtx()); } return(confirm); }
/// <summary> /// Create Difference Document. /// Creates one or two inventory lines /// </summary> /// <param name="move">movement</param> /// <param name="confirm">confirm line</param> /// <returns>true if created</returns> private Boolean CreateDifferenceDoc(MMovement move, MMovementLineConfirm confirm) { string query = ""; int result = 0; decimal currentQty = 0; MMovementLine mLine = confirm.GetLine(); // Difference - Create Inventory Difference for Source Location if (Env.ZERO.CompareTo(confirm.GetDifferenceQty()) != 0) { // Get Warehouse for Source MLocator loc = MLocator.Get(GetCtx(), mLine.GetM_Locator_ID()); if (_inventoryFrom != null && _inventoryFrom.GetM_Warehouse_ID() != loc.GetM_Warehouse_ID()) { _inventoryFrom = null; } if (_inventoryFrom == null) { MWarehouse wh = MWarehouse.Get(GetCtx(), loc.GetM_Warehouse_ID()); _inventoryFrom = new MInventory(wh); _inventoryFrom.SetDescription(Msg.Translate(GetCtx(), "M_MovementConfirm_ID") + " " + GetDocumentNo()); if (!_inventoryFrom.Save(Get_TrxName())) { _processMsg += "Inventory not created"; return(false); } // First Inventory if (GetM_Inventory_ID() == 0) { SetM_Inventory_ID(_inventoryFrom.GetM_Inventory_ID()); _inventoryInfo = _inventoryFrom.GetDocumentNo(); } else { _inventoryInfo += "," + _inventoryFrom.GetDocumentNo(); } } log.Info("createDifferenceDoc - Difference=" + confirm.GetDifferenceQty()); MInventoryLine line = new MInventoryLine(_inventoryFrom, mLine.GetM_Locator_ID(), mLine.GetM_Product_ID(), mLine.GetM_AttributeSetInstance_ID(), confirm.GetDifferenceQty(), Env.ZERO); //Added By amit 11-jun-2015 //Opening Stock , Qunatity Book => CurrentQty From Transaction of MovementDate //As On Date Count = Opening Stock - Diff Qty //Qty Count = Qty Book - Diff Qty query = "SELECT COUNT(*) FROM M_Transaction WHERE movementdate = " + GlobalVariable.TO_DATE(move.GetMovementDate(), true) + @" AND M_Product_ID = " + mLine.GetM_Product_ID() + " AND M_Locator_ID = " + mLine.GetM_Locator_ID() + " AND M_AttributeSetInstance_ID = " + mLine.GetM_AttributeSetInstance_ID(); result = Util.GetValueOfInt(DB.ExecuteScalar(query)); if (result > 0) { query = @"SELECT currentqty FROM M_Transaction WHERE M_Transaction_ID = (SELECT MAX(M_Transaction_ID) FROM M_Transaction WHERE movementdate = (SELECT MAX(movementdate) FROM M_Transaction WHERE movementdate <= " + GlobalVariable.TO_DATE(move.GetMovementDate(), true) + @" AND M_Product_ID = " + mLine.GetM_Product_ID() + " AND M_Locator_ID = " + mLine.GetM_Locator_ID() + " AND M_AttributeSetInstance_ID = " + mLine.GetM_AttributeSetInstance_ID() + @") AND M_Product_ID = " + mLine.GetM_Product_ID() + " AND M_Locator_ID = " + mLine.GetM_Locator_ID() + " AND M_AttributeSetInstance_ID = " + mLine.GetM_AttributeSetInstance_ID() + @") AND M_Product_ID = " + mLine.GetM_Product_ID() + " AND M_Locator_ID = " + mLine.GetM_Locator_ID() + " AND M_AttributeSetInstance_ID = " + mLine.GetM_AttributeSetInstance_ID(); currentQty = Util.GetValueOfDecimal(DB.ExecuteScalar(query)); } else { query = "SELECT COUNT(*) FROM M_Transaction WHERE movementdate < " + GlobalVariable.TO_DATE(move.GetMovementDate(), true) + @" AND M_Product_ID = " + mLine.GetM_Product_ID() + " AND M_Locator_ID = " + mLine.GetM_Locator_ID() + " AND M_AttributeSetInstance_ID = " + mLine.GetM_AttributeSetInstance_ID(); result = Util.GetValueOfInt(DB.ExecuteScalar(query)); if (result > 0) { query = @"SELECT currentqty FROM M_Transaction WHERE M_Transaction_ID = (SELECT MAX(M_Transaction_ID) FROM M_Transaction WHERE movementdate = (SELECT MAX(movementdate) FROM M_Transaction WHERE movementdate < " + GlobalVariable.TO_DATE(move.GetMovementDate(), true) + @" AND M_Product_ID = " + mLine.GetM_Product_ID() + " AND M_Locator_ID = " + mLine.GetM_Locator_ID() + " AND M_AttributeSetInstance_ID = " + mLine.GetM_AttributeSetInstance_ID() + @") AND M_Product_ID = " + mLine.GetM_Product_ID() + " AND M_Locator_ID = " + mLine.GetM_Locator_ID() + " AND M_AttributeSetInstance_ID = " + mLine.GetM_AttributeSetInstance_ID() + @") AND M_Product_ID = " + mLine.GetM_Product_ID() + " AND M_Locator_ID = " + mLine.GetM_Locator_ID() + " AND M_AttributeSetInstance_ID = " + mLine.GetM_AttributeSetInstance_ID(); currentQty = Util.GetValueOfDecimal(DB.ExecuteScalar(query)); } } //End line.SetAdjustmentType("D"); line.SetDifferenceQty(Util.GetValueOfDecimal(confirm.GetDifferenceQty())); line.SetQtyBook(currentQty); line.SetOpeningStock(currentQty); line.SetAsOnDateCount(Decimal.Subtract(Util.GetValueOfDecimal(line.GetOpeningStock()), Util.GetValueOfDecimal(confirm.GetDifferenceQty()))); line.SetQtyCount(Decimal.Subtract(Util.GetValueOfDecimal(line.GetQtyBook()), Util.GetValueOfDecimal(confirm.GetDifferenceQty()))); line.SetDescription(Msg.Translate(GetCtx(), "DifferenceQty")); if (!line.Save(Get_TrxName())) { _processMsg += "Inventory Line not created"; return(false); } confirm.SetM_InventoryLine_ID(line.GetM_InventoryLine_ID()); } // Difference // Scrapped - Create Inventory Difference for TarGet Location if (Env.ZERO.CompareTo(confirm.GetScrappedQty()) != 0) { // Get Warehouse for TarGet MLocator loc = MLocator.Get(GetCtx(), mLine.GetM_LocatorTo_ID()); if (_inventoryTo != null && _inventoryTo.GetM_Warehouse_ID() != loc.GetM_Warehouse_ID()) { _inventoryTo = null; } if (_inventoryTo == null) { MWarehouse wh = MWarehouse.Get(GetCtx(), loc.GetM_Warehouse_ID()); _inventoryTo = new MInventory(wh); _inventoryTo.SetDescription(Msg.Translate(GetCtx(), "M_MovementConfirm_ID") + " " + GetDocumentNo()); if (!_inventoryTo.Save(Get_TrxName())) { _processMsg += "Inventory not created"; return(false); } // First Inventory if (GetM_Inventory_ID() == 0) { SetM_Inventory_ID(_inventoryTo.GetM_Inventory_ID()); _inventoryInfo = _inventoryTo.GetDocumentNo(); } else { _inventoryInfo += "," + _inventoryTo.GetDocumentNo(); } } log.Info("CreateDifferenceDoc - Scrapped=" + confirm.GetScrappedQty()); MInventoryLine line = new MInventoryLine(_inventoryTo, mLine.GetM_LocatorTo_ID(), mLine.GetM_Product_ID(), mLine.GetM_AttributeSetInstance_ID(), confirm.GetScrappedQty(), Env.ZERO); line.SetDescription(Msg.Translate(GetCtx(), "ScrappedQty")); if (!line.Save(Get_TrxName())) { _processMsg += "Inventory Line not created"; return(false); } confirm.SetM_InventoryLine_ID(line.GetM_InventoryLine_ID()); } // Scrapped return(true); }
/// <summary> /// Complete Document /// </summary> /// <returns>new status (Complete, In Progress, Invalid, Waiting ..)</returns> public String CompleteIt() { // Re-Check if (!_justPrepared) { String status = PrepareIt(); if (!DocActionVariables.STATUS_INPROGRESS.Equals(status)) { return(status); } } // Implicit Approval if (!IsApproved()) { ApproveIt(); } log.Info("CompleteIt - " + ToString()); // MMovement move = new MMovement(GetCtx(), GetM_Movement_ID(), Get_TrxName()); MMovementLineConfirm[] lines = GetLines(false); for (int i = 0; i < lines.Length; i++) { MMovementLineConfirm confirm = lines[i]; confirm.Set_TrxName(Get_TrxName()); if (!confirm.ProcessLine()) { _processMsg = "ShipLine not saved - " + confirm; return(DocActionVariables.STATUS_INVALID); } if (confirm.IsFullyConfirmed()) { confirm.SetProcessed(true); confirm.Save(Get_TrxName()); } else { if (CreateDifferenceDoc(move, confirm)) { confirm.SetProcessed(true); confirm.Save(Get_TrxName()); } else { log.Log(Level.SEVERE, "completeIt - Scrapped=" + confirm.GetScrappedQty() + " - Difference=" + confirm.GetDifferenceQty()); _processMsg = "Differnce Doc not created"; return(DocActionVariables.STATUS_INVALID); } } } // for all lines if (_inventoryInfo != null) { _processMsg = " @M_Inventory_ID@: " + _inventoryInfo; AddDescription(Msg.Translate(GetCtx(), "M_Inventory_ID") + ": " + _inventoryInfo); } //Amit 21-nov-2014 (Reduce reserved quantity from requisition and warehouse distribution center) Tuple <String, String, String> mInfo = null; if (Env.HasModulePrefix("DTD001_", out mInfo)) { MMovementLine movementLine = null; MRequisitionLine requisitionLine = null; MStorage storage = null; for (int i = 0; i < lines.Length; i++) { MMovementLineConfirm confirm = lines[i]; if (confirm.GetDifferenceQty() > 0) { movementLine = new MMovementLine(GetCtx(), confirm.GetM_MovementLine_ID(), Get_Trx()); if (movementLine.GetM_RequisitionLine_ID() > 0) { requisitionLine = new MRequisitionLine(GetCtx(), movementLine.GetM_RequisitionLine_ID(), Get_Trx()); requisitionLine.SetDTD001_ReservedQty(decimal.Subtract(requisitionLine.GetDTD001_ReservedQty(), confirm.GetDifferenceQty())); if (!requisitionLine.Save(Get_Trx())) { _processMsg = Msg.GetMsg(GetCtx(), "DTD001_ReqNotUpdate"); // _processMsg = "Requisitionline not updated"; return(DocActionVariables.STATUS_INVALID); } storage = MStorage.Get(GetCtx(), movementLine.GetM_Locator_ID(), movementLine.GetM_Product_ID(), movementLine.GetM_AttributeSetInstance_ID(), Get_Trx()); if (storage == null) { storage = MStorage.Get(GetCtx(), movementLine.GetM_Locator_ID(), movementLine.GetM_Product_ID(), 0, Get_Trx()); } storage.SetQtyReserved(decimal.Subtract(storage.GetQtyReserved(), confirm.GetDifferenceQty())); if (!storage.Save(Get_Trx())) { _processMsg = Msg.GetMsg(GetCtx(), "DTD001_StorageNotUpdate"); //_processMsg = "Storage From not updated (MA)"; return(DocActionVariables.STATUS_INVALID); } } } } } //Amit SetProcessed(true); SetDocAction(DOCACTION_Close); return(DocActionVariables.STATUS_COMPLETED); }
/// <summary> /// Complete Document /// </summary> /// <returns>new status (Complete, In Progress, Invalid, Waiting ..)</returns> public String CompleteIt() { // Re-Check if (!_justPrepared) { String status = PrepareIt(); if (!DocActionVariables.STATUS_INPROGRESS.Equals(status)) { return(status); } } // Implicit Approval if (!IsApproved()) { ApproveIt(); } log.Info("CompleteIt - " + ToString()); // MMovement move = new MMovement(GetCtx(), GetM_Movement_ID(), Get_TrxName()); MMovementLineConfirm[] lines = GetLines(false); #region [Change By Sukhwinder on 11th October,2017 To Check if VA Material Quality Control Module exists or not, and then check if actual value at Quality Control tab exists or not] if (Env.IsModuleInstalled("VA010_")) { try { StringBuilder sb = new StringBuilder(); for (int i = 0; i < lines.Length; i++) { sb.Append(lines[i].Get_ID() + ","); } string mMovementLinesConfirm = sb.ToString().Trim(','); if (!string.IsNullOrEmpty(mMovementLinesConfirm)) { string qry = DBFunctionCollection.MoveConfirmNoActualValue(mMovementLinesConfirm); string productsNoActualValue = Util.GetValueOfString(DB.ExecuteScalar(qry)); if (!string.IsNullOrEmpty(productsNoActualValue)) { //_processMsg = productsNoActualValue + " is/are not verified with all the Quality Parameters." + // " Please fill actual value for the missing Quality Parameters in Quality Control. "; _processMsg = productsNoActualValue + " " + Msg.GetMsg(GetCtx(), "VIS_NoActualValueInQC"); return(DocActionVariables.STATUS_INVALID); } } } catch (Exception ex) { log.Severe("Exception When Checking actual value at Quality Control Tab - " + ex.Message); } } #endregion for (int i = 0; i < lines.Length; i++) { MMovementLineConfirm confirm = lines[i]; confirm.Set_TrxName(Get_TrxName()); //Added By Arpit if (GetDescription() != null && GetDescription().Contains("{->")) { //if (!confirm.ProcessLineReverse()) //{ // _processMsg = "ShipLine not saved - " + confirm; // return DocActionVariables.STATUS_INVALID; //} } else if (!confirm.ProcessLine()) { _processMsg = "ShipLine not saved - " + confirm; return(DocActionVariables.STATUS_INVALID); } if (confirm.IsFullyConfirmed()) { confirm.SetProcessed(true); confirm.Save(Get_TrxName()); } else { if (CreateDifferenceDoc(move, confirm)) { confirm.SetProcessed(true); confirm.Save(Get_TrxName()); } else { log.Log(Level.SEVERE, "completeIt - Scrapped=" + confirm.GetScrappedQty() + " - Difference=" + confirm.GetDifferenceQty()); _processMsg = "Differnce Doc not created"; return(DocActionVariables.STATUS_INVALID); } } } // for all lines if (_inventoryInfo != null) { _processMsg = " @M_Inventory_ID@: " + _inventoryInfo; AddDescription(Msg.Translate(GetCtx(), "M_Inventory_ID") + ": " + _inventoryInfo); } //Amit 21-nov-2014 (Reduce reserved quantity from requisition and warehouse distribution center) Tuple <String, String, String> mInfo = null; if (Env.HasModulePrefix("DTD001_", out mInfo)) { MMovementLine movementLine = null; MRequisitionLine requisitionLine = null; MStorage storage = null; for (int i = 0; i < lines.Length; i++) { MMovementLineConfirm confirm = lines[i]; if (confirm.GetDifferenceQty() > 0) { movementLine = new MMovementLine(GetCtx(), confirm.GetM_MovementLine_ID(), Get_Trx()); if (movementLine.GetM_RequisitionLine_ID() > 0) { requisitionLine = new MRequisitionLine(GetCtx(), movementLine.GetM_RequisitionLine_ID(), Get_Trx()); requisitionLine.SetDTD001_ReservedQty(decimal.Subtract(requisitionLine.GetDTD001_ReservedQty(), confirm.GetDifferenceQty())); if (!requisitionLine.Save(Get_Trx())) { _processMsg = Msg.GetMsg(GetCtx(), "DTD001_ReqNotUpdate"); // _processMsg = "Requisitionline not updated"; return(DocActionVariables.STATUS_INVALID); } storage = MStorage.Get(GetCtx(), movementLine.GetM_Locator_ID(), movementLine.GetM_Product_ID(), movementLine.GetM_AttributeSetInstance_ID(), Get_Trx()); if (storage == null) { storage = MStorage.Get(GetCtx(), movementLine.GetM_Locator_ID(), movementLine.GetM_Product_ID(), 0, Get_Trx()); } storage.SetQtyReserved(decimal.Subtract(storage.GetQtyReserved(), confirm.GetDifferenceQty())); if (!storage.Save(Get_Trx())) { Get_Trx().Rollback(); _processMsg = Msg.GetMsg(GetCtx(), "DTD001_StorageNotUpdate"); //_processMsg = "Storage From not updated (MA)"; return(DocActionVariables.STATUS_INVALID); } } } } } //Amit SetProcessed(true); SetDocAction(DOCACTION_Close); Save(Get_Trx()); //Adde by Arpit To complete The Inventory Move if Move Confirmation is completed ,16th Dec,2016 MMovement Mov = new MMovement(GetCtx(), GetM_Movement_ID(), Get_Trx()); if (move.GetDocStatus() != DOCSTATUS_Completed) { string Status = Mov.CompleteIt(); if (Status == "CO") { move.SetDocStatus(DOCSTATUS_Completed); move.SetDocAction("CL"); move.SetProcessed(true); move.Save(Get_Trx()); } else { Get_Trx().Rollback(); _processMsg = Mov.GetProcessMsg(); return(DocActionVariables.STATUS_INVALID); } } //End Here return(DocActionVariables.STATUS_COMPLETED); }