/// <summary> /// Process Confirmation Line. /// - Update InOut Line /// </summary> /// <param name="isSOTrx">sales order</param> /// <param name="confirmType">type</param> /// <returns>success</returns> public Boolean ProcessLine(bool isSOTrx, String confirmType) { MInOutLine line = GetLine(); // Customer if (MInOutConfirm.CONFIRMTYPE_CustomerConfirmation.Equals(confirmType)) { line.SetConfirmedQty(GetConfirmedQty()); } // Drop Ship else if (MInOutConfirm.CONFIRMTYPE_DropShipConfirm.Equals(confirmType)) { } // Pick or QA else if (MInOutConfirm.CONFIRMTYPE_PickQAConfirm.Equals(confirmType)) { line.SetTargetQty(GetTargetQty()); line.SetMovementQty(GetConfirmedQty()); // Entered NOT changed line.SetPickedQty(GetConfirmedQty()); // line.SetScrappedQty(GetScrappedQty()); } // Ship or Receipt else if (MInOutConfirm.CONFIRMTYPE_ShipReceiptConfirm.Equals(confirmType)) { line.SetTargetQty(GetTargetQty()); Decimal qty = GetConfirmedQty(); Boolean isReturnTrx = line.GetParent().IsReturnTrx(); /* In PO receipts and SO Returns, we have the responsibility * for scrapped quantity */ if ((!isSOTrx && !isReturnTrx) || (isSOTrx && isReturnTrx)) { qty = Decimal.Add(qty, GetScrappedQty()); } line.SetMovementQty(qty); // Entered NOT changed // line.SetScrappedQty(GetScrappedQty()); // vikas 12/28/2015 Mantis Issue (0000335) line.SetConfirmedQty(GetConfirmedQty()); } // Vendor else if (MInOutConfirm.CONFIRMTYPE_VendorConfirmation.Equals(confirmType)) { line.SetConfirmedQty(GetConfirmedQty()); } return(line.Save(Get_TrxName())); }
public static bool InsertForeignCostAveragePO(Ctx ctx, MOrder order, MOrderLine orderLine, MInOutLine inoutLine, Trx trx) { int acctSchema_ID = 0; int M_CostElement_ID = 0; int AD_Org_ID = 0; int M_ASI_ID = 0; MProduct product = null; MAcctSchema acctSchema = null; MCostForeignCurrency foreignCost = null; dynamic pc = null; String cl = null; try { // if cost is calculated then not to calculate again if (inoutLine.IsFutureCostCalculated()) { return(true); } acctSchema_ID = Util.GetValueOfInt(DB.ExecuteScalar(@"SELECT asch.c_acctschema_id FROM c_acctschema asch INNER JOIN ad_clientinfo ci ON ci.c_acctschema1_id = asch.c_acctschema_id WHERE ci.ad_client_id = " + order.GetAD_Client_ID())); acctSchema = new MAcctSchema(ctx, acctSchema_ID, trx); if (acctSchema.GetC_Currency_ID() != order.GetC_Currency_ID()) { // Get Costing Element of Average PO M_CostElement_ID = Util.GetValueOfInt(DB.ExecuteScalar(@"SELECT M_CostElement_ID FROM M_CostElement WHERE AD_Client_ID = " + order.GetAD_Client_ID() + " AND IsActive = 'Y' AND CostingMethod = 'A'")); product = new MProduct(ctx, orderLine.GetM_Product_ID(), trx); if (product != null && product.GetProductType() == "I" && product.GetM_Product_ID() > 0) // for Item Type product { pc = MProductCategory.Get(product.GetCtx(), product.GetM_Product_Category_ID()); // Get Costing Level if (pc != null) { cl = pc.GetCostingLevel(); } if (cl == null) { cl = acctSchema.GetCostingLevel(); } if (cl == "C" || cl == "B") { AD_Org_ID = 0; } else { AD_Org_ID = order.GetAD_Org_ID(); } if (cl != "B") { M_ASI_ID = 0; } else { M_ASI_ID = orderLine.GetM_AttributeSetInstance_ID(); } foreignCost = MCostForeignCurrency.Get(product, M_ASI_ID, AD_Org_ID, M_CostElement_ID, order.GetC_BPartner_ID(), order.GetC_Currency_ID()); foreignCost.SetC_Order_ID(order.GetC_Order_ID()); foreignCost.SetCumulatedQty(Decimal.Add(foreignCost.GetCumulatedQty(), inoutLine.GetMovementQty())); foreignCost.SetCumulatedAmt(Decimal.Add(foreignCost.GetCumulatedAmt(), Decimal.Multiply(Decimal.Divide(orderLine.GetLineNetAmt(), orderLine.GetQtyOrdered()), inoutLine.GetMovementQty()))); if (foreignCost.GetCumulatedQty() != 0) { foreignCost.SetCostPerUnit(Decimal.Round(Decimal.Divide(foreignCost.GetCumulatedAmt(), foreignCost.GetCumulatedQty()), acctSchema.GetCostingPrecision())); } else { foreignCost.SetCostPerUnit(0); } if (!foreignCost.Save(trx)) { ValueNamePair pp = VLogger.RetrieveError(); _log.Severe("Error occured during updating M_Cost_ForeignCurrency. Error name : " + pp.GetName() + " AND Error Value : " + pp.GetValue() + " , For Invoice line : " + orderLine.GetC_OrderLine_ID() + " , AND Ad_Client_ID : " + orderLine.GetAD_Client_ID()); return(false); } else { inoutLine.SetIsFutureCostCalculated(true); if (!inoutLine.Save(trx)) { ValueNamePair pp = VLogger.RetrieveError(); _log.Severe("Error occured during updating Is Foreign Cost On C_invoice. Error name : " + pp.GetName() + " AND Error Value : " + pp.GetValue() + " , For Material Receipt : " + inoutLine.GetM_InOutLine_ID() + " , AND Ad_Client_ID : " + inoutLine.GetAD_Client_ID()); return(false); } } } } } catch (Exception ex) { _log.Log(Level.SEVERE, "", ex); return(false); } return(true); }
/// <summary> /// Process Confirmation Line. /// - Update InOut Line /// </summary> /// <param name="isSOTrx">sales order</param> /// <param name="confirmType">type</param> /// <returns>success</returns> public Boolean ProcessLine(bool isSOTrx, String confirmType) { MInOutLine line = GetLine(); // Customer if (MInOutConfirm.CONFIRMTYPE_CustomerConfirmation.Equals(confirmType)) { line.SetConfirmedQty(GetConfirmedQty()); } // Drop Ship else if (MInOutConfirm.CONFIRMTYPE_DropShipConfirm.Equals(confirmType)) { } // Pick or QA else if (MInOutConfirm.CONFIRMTYPE_PickQAConfirm.Equals(confirmType)) { line.SetTargetQty(GetTargetQty()); line.SetMovementQty(GetConfirmedQty()); // Entered NOT changed line.SetPickedQty(GetConfirmedQty()); // line.SetScrappedQty(GetScrappedQty()); } // Ship or Receipt else if (MInOutConfirm.CONFIRMTYPE_ShipReceiptConfirm.Equals(confirmType)) { //Arpit if (GetDifferenceQty() > 0) { GetCtx().SetContext("DifferenceQty_", VAdvantage.Utility.Util.GetValueOfString(GetDifferenceQty())); } MProduct _pro = new MProduct(GetCtx(), line.GetM_Product_ID(), Get_TrxName()); if (_pro.GetC_UOM_ID() != line.GetC_UOM_ID()) { decimal?pc = null; pc = MUOMConversion.ConvertProductFrom(GetCtx(), line.GetM_Product_ID(), GetC_UOM_ID(), GetTargetQty()); line.SetTargetQty(Util.GetValueOfDecimal(pc)); //TargetQty Decimal qty = GetConfirmedQty(); Boolean isReturnTrx = line.GetParent().IsReturnTrx(); /* In PO receipts and SO Returns, we have the responsibility * for scrapped quantity */ if ((!isSOTrx && !isReturnTrx) || (isSOTrx && isReturnTrx)) { qty = Decimal.Add(qty, GetScrappedQty()); } pc = MUOMConversion.ConvertProductFrom(GetCtx(), line.GetM_Product_ID(), GetC_UOM_ID(), qty); line.SetMovementQty(Util.GetValueOfDecimal(pc)); //MovementQty pc = MUOMConversion.ConvertProductFrom(GetCtx(), line.GetM_Product_ID(), GetC_UOM_ID(), GetScrappedQty()); line.SetScrappedQty(Util.GetValueOfDecimal(pc)); //ScrappedQty pc = MUOMConversion.ConvertProductFrom(GetCtx(), line.GetM_Product_ID(), GetC_UOM_ID(), GetConfirmedQty()); line.SetConfirmedQty(Util.GetValueOfDecimal(pc)); //confirm Qty } else { line.SetTargetQty(GetTargetQty()); Decimal qty = GetConfirmedQty(); Boolean isReturnTrx = line.GetParent().IsReturnTrx(); /* In PO receipts and SO Returns, we have the responsibility * for scrapped quantity */ if ((!isSOTrx && !isReturnTrx) || (isSOTrx && isReturnTrx)) { qty = Decimal.Add(qty, GetScrappedQty()); } line.SetMovementQty(qty); // Entered NOT changed // line.SetScrappedQty(GetScrappedQty()); // vikas 12/28/2015 Mantis Issue (0000335) line.SetConfirmedQty(GetConfirmedQty()); } } // Vendor else if (MInOutConfirm.CONFIRMTYPE_VendorConfirmation.Equals(confirmType)) { line.SetConfirmedQty(GetConfirmedQty()); } return(line.Save(Get_TrxName())); }
/** * Split Shipment into confirmed and dispute * @param original original shipment * @param C_DocType_ID target DocType * @param confirmLines confirm lines */ private void SplitInOut(MInOut original, int C_DocType_ID, MInOutLineConfirm[] confirmLines) { MInOut split = new MInOut(original, C_DocType_ID, original.GetMovementDate()); split.AddDescription("Splitted from " + original.GetDocumentNo()); split.SetIsInDispute(true); //nnayak : Change for bug 1431337 split.SetRef_InOut_ID(original.Get_ID()); if (!split.Save(Get_TrxName())) { throw new Exception("Cannot save Split"); } original.AddDescription("Split: " + split.GetDocumentNo()); if (!original.Save(Get_TrxName())) { throw new Exception("Cannot update original Shipment"); } // Go through confirmations for (int i = 0; i < confirmLines.Length; i++) { MInOutLineConfirm confirmLine = confirmLines[i]; Decimal differenceQty = confirmLine.GetDifferenceQty(); if (differenceQty.CompareTo(Env.ZERO) == 0) { continue; } // MInOutLine oldLine = confirmLine.GetLine(); log.Fine("Qty=" + differenceQty + ", Old=" + oldLine); // MInOutLine splitLine = new MInOutLine(split); splitLine.SetC_OrderLine_ID(oldLine.GetC_OrderLine_ID()); splitLine.SetC_UOM_ID(oldLine.GetC_UOM_ID()); splitLine.SetDescription(oldLine.GetDescription()); splitLine.SetIsDescription(oldLine.IsDescription()); splitLine.SetLine(oldLine.GetLine()); splitLine.SetM_AttributeSetInstance_ID(oldLine.GetM_AttributeSetInstance_ID()); splitLine.SetM_Locator_ID(oldLine.GetM_Locator_ID()); splitLine.SetM_Product_ID(oldLine.GetM_Product_ID()); splitLine.SetM_Warehouse_ID(oldLine.GetM_Warehouse_ID()); splitLine.SetRef_InOutLine_ID(oldLine.GetRef_InOutLine_ID()); splitLine.AddDescription("Split: from " + oldLine.GetMovementQty()); // Qtys splitLine.SetQty(differenceQty); // Entered/Movement if (!splitLine.Save(Get_TrxName())) { throw new Exception("Cannot save Split Line"); } // Old oldLine.AddDescription("Splitted: from " + oldLine.GetMovementQty()); oldLine.SetQty(Decimal.Subtract(oldLine.GetMovementQty(), differenceQty)); if (!oldLine.Save(Get_TrxName())) { throw new Exception("Cannot save Splited Line"); } // Update Confirmation Line confirmLine.SetTargetQty(Decimal.Subtract(confirmLine.GetTargetQty(), differenceQty)); confirmLine.SetDifferenceQty(Env.ZERO); if (!confirmLine.Save(Get_TrxName())) { throw new Exception("Cannot save Split Confirmation"); } } // for all confirmations _processMsg = "Split @M_InOut_ID@=" + split.GetDocumentNo() + " - @M_InOutConfirm_ID@="; // Create Dispute Confirmation split.ProcessIt(DocActionVariables.ACTION_PREPARE); // split.createConfirmation(); split.Save(Get_TrxName()); MInOutConfirm[] splitConfirms = split.GetConfirmations(true); if (splitConfirms.Length > 0) { int index = 0; if (splitConfirms[index].IsProcessed()) { if (splitConfirms.Length > 1) { index++; // try just next } if (splitConfirms[index].IsProcessed()) { _processMsg += splitConfirms[index].GetDocumentNo() + " processed??"; return; } } splitConfirms[index].SetIsInDispute(true); splitConfirms[index].Save(Get_TrxName()); _processMsg += splitConfirms[index].GetDocumentNo(); // Set Lines to unconfirmed MInOutLineConfirm[] splitConfirmLines = splitConfirms[index].GetLines(false); for (int i = 0; i < splitConfirmLines.Length; i++) { MInOutLineConfirm splitConfirmLine = splitConfirmLines[i]; splitConfirmLine.SetScrappedQty(Env.ZERO); splitConfirmLine.SetConfirmedQty(Env.ZERO); splitConfirmLine.Save(Get_TrxName()); } } else { _processMsg += "??"; } }