/** * Set Order Line. * Does not set Quantity! * @param oLine order line * @param M_Locator_ID locator * @param Qty used only to find suitable locator */ public void SetOrderLine(MOrderLine oLine, int M_Locator_ID, Decimal Qty) { SetC_OrderLine_ID(oLine.GetC_OrderLine_ID()); SetLine(oLine.GetLine()); SetC_UOM_ID(oLine.GetC_UOM_ID()); MProduct product = oLine.GetProduct(); if (product == null) { SetM_Product_ID(0); SetM_AttributeSetInstance_ID(0); base.SetM_Locator_ID(0); } else { SetM_Product_ID(oLine.GetM_Product_ID()); SetM_AttributeSetInstance_ID(oLine.GetM_AttributeSetInstance_ID()); // if (product.IsItem()) { if (M_Locator_ID == 0) { SetM_Locator_ID(Qty); // requires warehouse, product, asi } else { SetM_Locator_ID(M_Locator_ID); } } else { base.SetM_Locator_ID(0); } } SetC_Charge_ID(oLine.GetC_Charge_ID()); SetDescription(oLine.GetDescription()); SetIsDescription(oLine.IsDescription()); // SetC_Project_ID(oLine.GetC_Project_ID()); SetC_ProjectPhase_ID(oLine.GetC_ProjectPhase_ID()); SetC_ProjectTask_ID(oLine.GetC_ProjectTask_ID()); SetC_Activity_ID(oLine.GetC_Activity_ID()); SetC_Campaign_ID(oLine.GetC_Campaign_ID()); SetAD_OrgTrx_ID(oLine.GetAD_OrgTrx_ID()); SetUser1_ID(oLine.GetUser1_ID()); SetUser2_ID(oLine.GetUser2_ID()); }
/// <summary> /// GetOrderLine /// </summary> /// <param name="ctx"></param> /// <param name="param"></param> /// <returns></returns> public Dictionary <String, String> GetOrderLine(Ctx ctx, string param) { string[] paramValue = param.Split(','); Dictionary <String, String> retDic = new Dictionary <string, string>(); //Assign parameter value int id; id = Util.GetValueOfInt(paramValue[0].ToString()); //End Assign parameter value MOrderLine orderline = new MOrderLine(ctx, id, null); retDic["C_Tax_ID"] = Util.GetValueOfString(orderline.GetC_Tax_ID()); retDic["PriceList"] = Util.GetValueOfString(orderline.GetPriceList()); retDic["PriceLimit"] = Util.GetValueOfString(orderline.GetPriceLimit()); retDic["PriceActual"] = Util.GetValueOfString(orderline.GetPriceActual()); retDic["PriceEntered"] = Util.GetValueOfString(orderline.GetPriceEntered()); retDic["C_Currency_ID"] = Util.GetValueOfString(orderline.GetC_Currency_ID()); retDic["Discount"] = Util.GetValueOfString(orderline.GetDiscount()); retDic["Discount"] = Util.GetValueOfString(orderline.GetDiscount()); retDic["M_Product_ID"] = Util.GetValueOfString(orderline.GetM_Product_ID()); retDic["Qty"] = Util.GetValueOfString(orderline.GetQtyEntered()); retDic["C_UOM_ID"] = Util.GetValueOfString(orderline.GetC_UOM_ID()); retDic["C_BPartner_ID"] = Util.GetValueOfString(orderline.GetC_BPartner_ID()); retDic["PlannedHours"] = Util.GetValueOfString(orderline.GetQtyOrdered()); retDic["M_AttributeSetInstance_ID"] = Util.GetValueOfString(orderline.GetM_AttributeSetInstance_ID()); retDic["QtyOrdered"] = Util.GetValueOfString(orderline.GetQtyOrdered()); retDic["QtyDelivered"] = Util.GetValueOfString(orderline.GetQtyDelivered()); retDic["QtyEntered"] = Util.GetValueOfString(orderline.GetQtyEntered()); retDic["C_Activity_ID"] = Util.GetValueOfString(orderline.GetC_Activity_ID()); retDic["C_Campaign_ID"] = Util.GetValueOfString(orderline.GetC_Campaign_ID()); retDic["C_Project_ID"] = Util.GetValueOfString(orderline.GetC_Project_ID()); retDic["C_ProjectPhase_ID"] = Util.GetValueOfString(orderline.GetC_ProjectPhase_ID()); retDic["C_ProjectTask_ID"] = Util.GetValueOfString(orderline.GetC_ProjectTask_ID()); retDic["AD_OrgTrx_ID"] = Util.GetValueOfString(orderline.GetAD_OrgTrx_ID()); retDic["User1_ID"] = Util.GetValueOfString(orderline.GetUser1_ID()); retDic["User2_ID"] = Util.GetValueOfString(orderline.GetUser2_ID()); retDic["IsReturnTrx"] = Util.GetValueOfString(orderline.GetParent().IsReturnTrx()).ToLower(); retDic["Orig_InOutLine_ID"] = Util.GetValueOfString(orderline.GetOrig_InOutLine_ID()); retDic["Orig_OrderLine_ID"] = Util.GetValueOfString(orderline.GetOrig_OrderLine_ID()); retDic["GetID"] = Util.GetValueOfString(orderline.Get_ID()); return(retDic); }
/// <summary> /// Create Facts (the accounting logic) for /// MXP. /// <pre> /// Product PPV <difference> /// PPV_Offset <difference> /// </pre> /// </summary> /// <param name="as1"></param> /// <returns></returns> public override List <Fact> CreateFacts(MAcctSchema as1) { List <Fact> facts = new List <Fact>(); // if (GetM_Product_ID() == 0 || // Nothing to do if no Product Env.Signum(Utility.Util.GetValueOfDecimal(GetQty())) == 0 || _M_InOutLine_ID == 0) // No posting if not matched to Shipment { log.Fine("No Product/Qty - M_Product_ID=" + GetM_Product_ID() + ",Qty=" + GetQty()); return(facts); } // create Fact Header Fact fact = new Fact(this, as1, Fact.POST_Actual); SetC_Currency_ID(as1.GetC_Currency_ID()); // Purchase Order Line Decimal poCost = _oLine.GetPriceCost(); if (Env.Signum(poCost) == 0) { poCost = _oLine.GetPriceActual(); } poCost = Decimal.Multiply(poCost, Utility.Util.GetValueOfDecimal(GetQty())); // Delivered so far // Different currency if (_oLine.GetC_Currency_ID() != as1.GetC_Currency_ID()) { MOrder order = _oLine.GetParent(); Decimal rate = MConversionRate.GetRate( order.GetC_Currency_ID(), as1.GetC_Currency_ID(), order.GetDateAcct(), order.GetC_ConversionType_ID(), _oLine.GetAD_Client_ID(), _oLine.GetAD_Org_ID()); if (rate.ToString() == null) { _error = "Purchase Order not convertible - " + as1.GetName(); return(null); } poCost = Decimal.Multiply(poCost, rate); if (Env.Scale(poCost) > as1.GetCostingPrecision()) { poCost = Decimal.Round(poCost, as1.GetCostingPrecision(), MidpointRounding.AwayFromZero); } } MOrder order1 = _oLine.GetParent(); bool isReturnTrx = order1.IsReturnTrx(); log.Fine("Temp"); if (!IsPosted()) { // Create PO Cost Detail Record firs MCostDetail.CreateOrder(as1, _oLine.GetAD_Org_ID(), GetM_Product_ID(), _M_AttributeSetInstance_ID, _C_OrderLine_ID, 0, // no cost element isReturnTrx ? Decimal.Negate(poCost) : poCost, isReturnTrx ? Decimal.Negate(Utility.Util.GetValueOfDecimal(GetQty())) : Utility.Util.GetValueOfDecimal(GetQty()), // Delivered _oLine.GetDescription(), GetTrx(), GetRectifyingProcess()); } // Current Costs String costingMethod = as1.GetCostingMethod(); MProduct product = MProduct.Get(GetCtx(), GetM_Product_ID()); MProductCategoryAcct pca = MProductCategoryAcct.Get(GetCtx(), product.GetM_Product_Category_ID(), as1.GetC_AcctSchema_ID(), GetTrx()); if (pca.GetCostingMethod() != null) { costingMethod = pca.GetCostingMethod(); } Decimal?costs = _pc.GetProductCosts(as1, GetAD_Org_ID(), costingMethod, _C_OrderLine_ID, false); // non-zero costs // No Costs yet - no PPV if (costs == null || Env.Signum(Utility.Util.GetValueOfDecimal(costs)) == 0) { _error = "Resubmit - No Costs for " + product.GetName(); log.Log(Level.SEVERE, _error); return(null); } // Difference Decimal difference = Decimal.Subtract(poCost, Utility.Util.GetValueOfDecimal(costs)); /***********************************************************************************/ //05,Sep,2011 //Special Check to restic Price varience posting in case of //AvarageInvoice Selected on product Category.Then Neglact the AverageInvoice Cost try { if (as1.IsNotPostPOVariance()) { difference = 0; } } catch (Exception ex) { log.SaveError("AccountSchemaColumnError", ex); } /***********************************************************************************/ // Nothing to post if (Env.Signum(difference) == 0) { log.Log(Level.FINE, "No Cost Difference for M_Product_ID=" + GetM_Product_ID()); facts.Add(fact); return(facts); } // Product PPV FactLine cr = fact.CreateLine(null, _pc.GetAccount(ProductCost.ACCTTYPE_P_PPV, as1), as1.GetC_Currency_ID(), difference); if (cr != null) { cr.SetQty(GetQty()); cr.SetC_BPartner_ID(_oLine.GetC_BPartner_ID()); cr.SetC_Activity_ID(_oLine.GetC_Activity_ID()); cr.SetC_Campaign_ID(_oLine.GetC_Campaign_ID()); cr.SetC_Project_ID(_oLine.GetC_Project_ID()); cr.SetC_UOM_ID(_oLine.GetC_UOM_ID()); cr.SetUser1_ID(_oLine.GetUser1_ID()); cr.SetUser2_ID(_oLine.GetUser2_ID()); } // PPV Offset FactLine dr = fact.CreateLine(null, GetAccount(Doc.ACCTTYPE_PPVOffset, as1), as1.GetC_Currency_ID(), Decimal.Negate(difference)); if (dr != null) { dr.SetQty((Decimal?)Decimal.Negate(Utility.Util.GetValueOfDecimal(GetQty()))); dr.SetC_BPartner_ID(_oLine.GetC_BPartner_ID()); dr.SetC_Activity_ID(_oLine.GetC_Activity_ID()); dr.SetC_Campaign_ID(_oLine.GetC_Campaign_ID()); dr.SetC_Project_ID(_oLine.GetC_Project_ID()); dr.SetC_UOM_ID(_oLine.GetC_UOM_ID()); dr.SetUser1_ID(_oLine.GetUser1_ID()); dr.SetUser2_ID(_oLine.GetUser2_ID()); } // facts.Add(fact); return(facts); }