/// <summary> /// Reverse Correction /// </summary> /// <returns>false</returns> public Boolean ReverseCorrectIt() { log.Info("ReverseCorrectIt - " + ToString()); //Move Confirm Reversal Arpit MMovementConfirm reversal = new MMovementConfirm(GetCtx(), 0, Get_TrxName()); CopyValues(this, reversal, GetAD_Client_ID(), GetAD_Org_ID()); reversal.SetDocStatus(DOCSTATUS_Drafted); reversal.SetDocAction(DOCACTION_Complete); reversal.SetIsApproved(false); reversal.SetProcessed(false); reversal.AddDescription("{->" + GetDocumentNo() + ")"); if (reversal.Save()) { // Move Confirm Line DataSet ds = DB.ExecuteDataset("Select M_MovementLineConfirm_ID from M_MovementLineConfirm Where M_MovementConfirm_ID =" + GetM_MovementConfirm_ID()); if (ds != null && ds.Tables[0].Rows.Count > 0) { for (Int32 i = 0; i < ds.Tables[0].Rows.Count; i++) { MMovementLineConfirm linesfrom = new MMovementLineConfirm(GetCtx(), Util.GetValueOfInt(ds.Tables[0].Rows[i]["M_MovementLineConfirm_ID"]), Get_TrxName()); MMovementLineConfirm linesTo = new MMovementLineConfirm(GetCtx(), 0, Get_TrxName()); CopyValues(linesfrom, linesTo, GetAD_Client_ID(), GetAD_Org_ID()); linesTo.SetM_MovementConfirm_ID(reversal.GetM_MovementConfirm_ID()); linesTo.SetConfirmedQty(Decimal.Negate(linesfrom.GetConfirmedQty())); linesTo.SetDifferenceQty(Decimal.Negate(linesfrom.GetDifferenceQty())); linesTo.SetScrappedQty(Decimal.Negate(linesfrom.GetScrappedQty())); linesTo.SetTargetQty(Decimal.Negate(linesfrom.GetTargetQty())); linesTo.SetProcessed(true); if (!linesTo.Save(Get_Trx())) { Get_Trx().Rollback(); _processMsg = "Reversal ERROR: " + reversal.GetProcessMsg(); return(false); } } } if (reversal.CompleteIt() == DOCSTATUS_Completed) { reversal.SetDocStatus("RE"); // set reversal.SetDocAction(DOCACTION_Void); reversal.SetProcessed(true); reversal.Save(Get_Trx()); } } else { _processMsg = "Could not create Movement Confirm Reversal"; return(false); } SetDocStatus(DOCSTATUS_Voided); SetDocAction(DOCACTION_Void); Save(Get_Trx()); //End 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> /// Void Document. /// </summary> /// <returns>false</returns> public Boolean VoidIt() { //Added BY arpit on 12th Dec,2016 if (GetDocStatus() == "CO") { this.SetDocAction(DOCACTION_Void); this.SetDocStatus(DOCACTION_Void); if (!this.Save(Get_Trx())) { _processMsg = "Could not void the document"; return(false); } MMovementConfirm RevMoveConf = new MMovementConfirm(GetCtx(), 0, Get_Trx()); CopyValues(this, RevMoveConf, GetAD_Client_ID(), GetAD_Org_ID()); RevMoveConf.SetDocumentNo(GetDocumentNo()); // RevMoveConf.SetDocStatus("RE"); // RevMoveConf.SetDocAction(DOCACTION_Void); // RevMoveConf.SetProcessed(true); RevMoveConf.AddDescription("{->" + GetDocumentNo() + ")"); if (RevMoveConf.Save(Get_Trx())) { MMovementLineConfirm[] Lines = GetLines(true); for (int i = 0; i < Lines.Length; i++) { MMovementLineConfirm oLines = Lines[i]; MMovementLineConfirm revLines = new MMovementLineConfirm(GetCtx(), 0, Get_TrxName()); CopyValues(oLines, revLines, oLines.GetAD_Client_ID(), oLines.GetAD_Org_ID()); revLines.SetM_MovementConfirm_ID(RevMoveConf.GetM_MovementConfirm_ID()); revLines.SetConfirmedQty(Decimal.Negate(revLines.GetConfirmedQty())); revLines.SetDifferenceQty(Decimal.Negate(revLines.GetDifferenceQty())); revLines.SetScrappedQty(Decimal.Negate(revLines.GetScrappedQty())); revLines.SetTargetQty(Decimal.Negate(revLines.GetTargetQty())); revLines.SetProcessed(true); if (!revLines.Save(Get_Trx())) { Get_Trx().Rollback(); _processMsg = "Could not create Movement Comfirmation Reversal Line"; return(false); } } } else { Get_Trx().Rollback(); _processMsg = "Could not create Move Confirmation Reversal"; return(false); } if (RevMoveConf.CompleteIt() == DocActionVariables.ACTION_COMPLETE) { RevMoveConf.SetDocStatus("RE"); RevMoveConf.SetDocAction(DOCACTION_Void); RevMoveConf.SetProcessed(true); RevMoveConf.Save(Get_Trx()); } else { _processMsg = "Reversal ERROR: "; return(false); } } //End Here log.Info("VoidIt - " + ToString()); 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); #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); }