/// <summary>
        /// Get Labor Cost from Expense Report
        /// </summary>
        /// <param name="as1"></param>
        /// <returns>Unit Labor Cost</returns>
        private Decimal?GetLaborCost(MAcctSchema as1)
        {
            Decimal?retValue = null;

            /** TODO Labor Cost	*/
            return(retValue);
        }
        }       //	copyGL

        /// <summary>
        /// Copy Default
        /// </summary>
        /// <param name="targetAS">target</param>
        private void CopyDefault(MAcctSchema targetAS)
        {
            MAcctSchemaDefault source = MAcctSchemaDefault.Get(GetCtx(), _SourceAcctSchema_ID);
            MAcctSchemaDefault target = new MAcctSchemaDefault(GetCtx(), 0, Get_Trx());

            target.SetC_AcctSchema_ID(_TargetAcctSchema_ID);
            target.SetC_AcctSchema_ID(_TargetAcctSchema_ID);
            //ArrayList<KeyNamePair> list = source.getAcctInfo();
            List <KeyNamePair> list = source.GetAcctInfo();

            for (int i = 0; i < list.Count; i++)
            {
                //KeyNamePair pp = list.get(i);
                KeyNamePair pp = list[i];
                int         sourceC_ValidCombination_ID = pp.GetKey();
                String      columnName    = pp.GetName();
                MAccount    sourceAccount = MAccount.Get(GetCtx(), sourceC_ValidCombination_ID);
                MAccount    targetAccount = CreateAccount(targetAS, sourceAccount);
                target.SetValue(columnName, Utility.Util.GetValueOfInt(targetAccount.GetC_ValidCombination_ID()));
            }
            if (!target.Save())
            {
                throw new Exception("Could not Save Default");
            }
        }       //	copyDefault
Exemple #3
0
        /// <summary>
        /// Load controls lookup etc.
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="windowNo"></param>
        /// <param name="C_AcctSchema_ID"></param>
        /// <returns>class lookups</returns>
        public AccountSchema AccountSchemaLoad(Ctx ctx, int windowNo, int C_AcctSchema_ID)
        {
            AccountSchema objSchema = new AccountSchema();

            MAcctSchemaElement[] elements = null;

            var _AcctSchema = new MAcctSchema(ctx, C_AcctSchema_ID, null);

            ctx.GetCtx(windowNo).SetContext(windowNo, "C_AcctSchema_ID", C_AcctSchema_ID);
            elements = _AcctSchema.GetAcctSchemaElements();

            objSchema.IsHasAlies = _AcctSchema.IsHasAlias();
            objSchema.Elements   = new List <AccountingElements>();
            for (int i = 0; i < elements.Length; i++)
            {
                AccountingElements obj = new AccountingElements();
                MAcctSchemaElement ase = elements[i];
                obj.Type         = ase.GetElementType();
                obj.IsMandatory  = ase.IsMandatory();
                obj.ID           = ase.Get_ID();
                obj.Name         = ase.GetName();
                obj.DefaultValue = ase.GetDefaultValue();
                obj.SeqNo        = ase.GetSeqNo();
                obj.AD_Column_ID = ase.GetAD_Column_ID();
                obj.IsHeavyData  = Util.GetValueOfBool(ase.Get_Value("IsHeavyData"));
                objSchema.Elements.Add(obj);
            }
            objSchema.Description = _AcctSchema.ToString();
            return(objSchema);
        }
Exemple #4
0
        public JsonResult PostImmediate(int AD_Client_ID, int AD_Table_ID, int Record_ID, bool force)
        {
            Ctx    ctx = Session["ctx"] as Ctx;
            string res = "";

            try
            {
                string clientName = ctx.GetAD_Org_Name() + "_" + ctx.GetAD_User_Name();
                string storedPath = Path.Combine(HostingEnvironment.ApplicationPhysicalPath, "");
                storedPath += clientName;
                VLogMgt.Initialize(true, storedPath);


                MAcctSchema[] ass = MAcctSchema.GetClientAcctSchema(ctx, AD_Client_ID);
                res = Doc.PostImmediate(ass, AD_Table_ID, Record_ID, force, null);
                if (res == null || res.Trim().Length > 0)
                {
                    res = "OK";
                }
            }
            catch (Exception ex)
            {
                res += ex.Message;
            }
            return(Json(new { result = res }, JsonRequestBehavior.AllowGet));
        }
Exemple #5
0
        }       //	setC_Currency_ID

        /// <summary>
        ///	Set Rate
        /// </summary>
        private void SetRate()
        {
            //  Source info
            int C_Currency_ID       = GetC_Currency_ID();
            int C_ConversionType_ID = GetC_ConversionType_ID();

            if (C_Currency_ID == 0 || C_ConversionType_ID == 0)
            {
                return;
            }
            DateTime?DateAcct = GetDateAcct();

            if (DateAcct == null)
            {
                DateAcct = DateTime.Now;// new Timestamp(System.currentTimeMillis());
            }
            //
            int         C_AcctSchema_ID = GetC_AcctSchema_ID();
            MAcctSchema a            = MAcctSchema.Get(GetCtx(), C_AcctSchema_ID);
            int         AD_Client_ID = GetAD_Client_ID();
            int         AD_Org_ID    = GetAD_Org_ID();

            Decimal?CurrencyRate = (Decimal?)MConversionRate.GetRate(C_Currency_ID, a.GetC_Currency_ID(),
                                                                     DateAcct, C_ConversionType_ID, AD_Client_ID, AD_Org_ID);

            log.Fine("rate = " + CurrencyRate);
            //if (CurrencyRate.Value == null)
            //{
            //    CurrencyRate = Env.ZERO;
            //}
            SetCurrencyRate(CurrencyRate.Value);
        }       //	setRate
Exemple #6
0
        /// <summary>
        /// Work
        /// </summary>
        protected override void DoWork()
        {
            _summary = new StringBuilder();
            //	Get Schemata
            if (_modelLocal.GetC_AcctSchema_ID() == 0)
            {
                _ass = MAcctSchema.GetClientAcctSchema(GetCtx(), _modelLocal.GetAD_Client_ID());
            }
            else        //	only specific accounting schema
            {
                _ass = new MAcctSchema[] { new MAcctSchema(GetCtx(), _modelLocal.GetC_AcctSchema_ID(), null) };
            }
            //
            PostSession();
            MCost.Create(_clientLocal);
            //
            int no = _modelLocal.DeleteLog();

            _summary.Append("Logs deleted=").Append(no);
            //
            MAcctProcessorLog pLog = new MAcctProcessorLog(_modelLocal, _summary.ToString());

            pLog.SetReference("#" + Utility.Util.GetValueOfString(_runCount) // String.valueOf(p_runCount)
                              + " - " + TimeUtil.FormatElapsed(_startWork)); //new DateTime(_startWork)));
            pLog.Save();
        }
        /// <summary>
        /// Create Facts (the accounting logic) for
        ///  PJI
        ///  <pre>
        ///  Issue
        ///      ProjectWIP      DR
        ///      Inventory               CR
        ///  </pre>
        ///  Project Account is either Asset or WIP depending on Project Type
        /// </summary>
        /// <param name="?"></param>
        /// <returns>fact</returns>
        public override List <Fact> CreateFacts(MAcctSchema as1)
        {
            //  create Fact Header
            Fact fact = new Fact(this, as1, Fact.POST_Actual);

            SetC_Currency_ID(as1.GetC_Currency_ID());

            MProject project         = new MProject(GetCtx(), _issue.GetC_Project_ID(), null);
            String   ProjectCategory = project.GetProjectCategory();
            MProduct product         = MProduct.Get(GetCtx(), _issue.GetM_Product_ID());

            //  Line pointers
            FactLine dr = null;
            FactLine cr = null;

            //  Issue Cost
            Decimal?cost = null;

            if (_issue.GetM_InOutLine_ID() != 0)
            {
                cost = GetPOCost(as1);
            }
            else if (_issue.GetS_TimeExpenseLine_ID() != 0)
            {
                cost = GetLaborCost(as1);
            }
            if (cost == null)   //	standard Product Costs
            {
                cost = _line.GetProductCosts(as1, GetAD_Org_ID(), false);
            }

            //  Project         DR
            int acctType = ACCTTYPE_ProjectWIP;

            if (MProject.PROJECTCATEGORY_AssetProject.Equals(ProjectCategory))
            {
                acctType = ACCTTYPE_ProjectAsset;
            }
            dr = fact.CreateLine(_line,
                                 GetAccount(acctType, as1), as1.GetC_Currency_ID(), cost, null);
            dr.SetQty((Decimal?)Decimal.Negate(Utility.Util.GetValueOfDecimal(_line.GetQty())));

            //  Inventory               CR
            acctType = ProductCost.ACCTTYPE_P_Asset;
            if (product.IsService())
            {
                acctType = ProductCost.ACCTTYPE_P_Expense;
            }
            cr = fact.CreateLine(_line,
                                 _line.GetAccount(acctType, as1),
                                 as1.GetC_Currency_ID(), null, cost);
            cr.SetM_Locator_ID(_line.GetM_Locator_ID());
            cr.SetLocationFromLocator(_line.GetM_Locator_ID(), true);   // from Loc
            //
            List <Fact> facts = new List <Fact>();

            facts.Add(fact);
            return(facts);
        }
Exemple #8
0
 /// <summary>
 /// Create New Client level Costing Record
 /// </summary>
 /// <param name="product">product</param>
 /// <param name="?">acct schema</param>
 /// <returns>true if created</returns>
 private bool CreateNew(MProduct product, MAcctSchema as1)
 {
     VAdvantage.Model.MCost cost = VAdvantage.Model.MCost.Get(product, 0, as1, 0, _ce.GetM_CostElement_ID());
     if (cost.Is_New())
     {
         return(cost.Save());
     }
     return(false);
 }
Exemple #9
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="document">pointer to document</param>
 /// <param name="acctSchema">Account Schema to create accounts</param>
 /// <param name="defaultPostingType">the default Posting type (actual,..) for this posting</param>
 public Fact(Doc document, MAcctSchema acctSchema, String defaultPostingType)
 {
     log          = VLogger.GetVLogger(this.GetType().FullName);
     _doc         = document;
     _acctSchema  = acctSchema;
     _postingType = defaultPostingType;
     //
     log.Config(ToString());
 }
Exemple #10
0
        /// <summary>
        /// Post Immediate
        /// @ejb.interface-method view-type="both"
        /// </summary>
        /// <param name="ctx">Client Context</param>
        /// <param name="AD_Client_ID">Client ID of Document</param>
        /// <param name="AD_Table_ID">Table ID of Document</param>
        /// <param name="Record_ID">Record ID of this document</param>
        /// <param name="force">force posting</param>
        /// <param name="trxName">transaction</param>
        /// <returns>null, if success or error message</returns>
        public String PostImmediate(IDictionary <string, string> ctxDic, int AD_Client_ID, int AD_Table_ID, int Record_ID, bool force, Trx trxName)
        {
            //log.Info("[" + _no + "] Table=" + AD_Table_ID + ", Record=" + Record_ID);
            //_postCount++;
            Ctx ctx = new Ctx(ctxDic);

            MAcctSchema[] ass = MAcctSchema.GetClientAcctSchema(ctx, AD_Client_ID);
            return(Doc.PostImmediate(ass, AD_Table_ID, Record_ID, force, trxName));
        }
Exemple #11
0
        /// <summary>
        /// Process
        /// </summary>
        /// <returns>info</returns>
        protected override String DoIt()
        {
            log.Info("M_Product_Category_ID=" + _M_Product_Category_ID
                     + ", Future=" + _SetFutureCostTo
                     + ", Standard=" + _SetStandardCostTo
                     + "; M_PriceList_Version_ID=" + _M_PriceList_Version_ID);
            if (_SetFutureCostTo == null)
            {
                _SetFutureCostTo = "";
            }
            if (_SetStandardCostTo == null)
            {
                _SetStandardCostTo = "";
            }
            //	Nothing to Do
            if (_SetFutureCostTo.Length == 0 && _SetStandardCostTo.Length == 0)
            {
                return("-");
            }
            //	PLV required
            if (_M_PriceList_Version_ID == 0 &&
                (_SetFutureCostTo.Equals(TO_PriceListLimit) || _SetStandardCostTo.Equals(TO_PriceListLimit)))
            {
                throw new Exception("@FillMandatory@  @M_PriceList_Version_ID@");
            }

            //	Validate Source
            if (!IsValid(_SetFutureCostTo))
            {
                throw new Exception("@NotFound@ @M_CostElement_ID@ (Future) " + _SetFutureCostTo);
            }
            if (!IsValid(_SetStandardCostTo))
            {
                throw new Exception("@NotFound@ @M_CostElement_ID@ (Standard) " + _SetStandardCostTo);
            }

            //	Prepare
            MClient client = MClient.Get(GetCtx());

            _ce = MCostElement.GetMaterialCostElement(client, MAcctSchema.COSTINGMETHOD_StandardCosting);
            if (_ce.Get_ID() == 0)
            {
                throw new Exception("@NotFound@ @M_CostElement_ID@ (StdCost)");
            }
            log.Config(_ce.ToString());
            _ass = MAcctSchema.GetClientAcctSchema(GetCtx(), client.GetAD_Client_ID());
            for (int i = 0; i < _ass.Length; i++)
            {
                CreateNew(_ass[i]);
            }
            Commit();

            //	Update Cost
            int counter = Update();

            return("#" + counter);
        }
Exemple #12
0
        /// <summary>
        /// Create New Standard Costs
        /// </summary>
        /// <param name="as1">accounting schema</param>
        private void CreateNew(MAcctSchema as1)
        {
            if (!as1.GetCostingLevel().Equals(MAcctSchema.COSTINGLEVEL_Client))
            {
                String txt = "Costing Level prevents creating new Costing records for " + as1.GetName();
                log.Warning(txt);
                AddLog(0, null, null, txt);
                return;
            }
            String sql = "SELECT * FROM M_Product p "
                         + "WHERE NOT EXISTS (SELECT * FROM M_Cost c WHERE c.M_Product_ID=p.M_Product_ID"
                         + " AND c.M_CostType_ID=" + as1.GetM_CostType_ID() + " AND c.C_AcctSchema_ID=" + as1.GetC_AcctSchema_ID() + " AND c.M_CostElement_ID=" + _ce.GetM_CostElement_ID()
                         + " AND c.M_AttributeSetInstance_ID=0) "
                         + "AND AD_Client_ID=" + as1.GetAD_Client_ID();

            if (_M_Product_Category_ID != 0)
            {
                sql += " AND M_Product_Category_ID=" + _M_Product_Category_ID;
            }
            int         counter = 0;
            DataTable   dt      = null;
            IDataReader idr     = null;

            try
            {
                idr = DB.ExecuteReader(sql, null, null);
                dt  = new DataTable();
                dt.Load(idr);
                idr.Close();
                foreach (DataRow dr in dt.Rows)
                {
                    if (CreateNew(new MProduct(GetCtx(), dr, null), as1))
                    {
                        counter++;
                    }
                }
            }
            catch (Exception e)
            {
                if (idr != null)
                {
                    idr.Close();
                }
                log.Log(Level.SEVERE, sql, e);
            }
            finally
            {
                dt = null;
                if (idr != null)
                {
                    idr.Close();
                }
            }

            log.Info("#" + counter);
            AddLog(0, null, new Decimal(counter), "Created for " + as1.GetName());
        }
        /// <summary>
        /// Create Facts (the accounting logic) for
        ///  GLJ.
        ///  (only for the accounting scheme, it was created)
        ///  <pre>
        ///     account     DR          CR
        ///  </pre>
        /// </summary>
        /// <param name="?"></param>
        /// <returns>fact</returns>
        public override List <Fact> CreateFacts(MAcctSchema as1)
        {
            List <Fact> facts = new List <Fact>();
            //	Other Acct Schema
            // need to Post GL Journal for Multiple Accounting Schema that's why commented this section
            //if (as1.GetC_AcctSchema_ID() != _C_AcctSchema_ID)
            //{
            //    return facts;
            //}

            //  create Fact Header
            Fact fact = new Fact(this, as1, _PostingType);

            // get conversion rate from Assigned accounting schema tab -
            Decimal conversionRate = Util.GetValueOfDecimal(DB.ExecuteScalar(@"SELECT CurrencyRate FROM GL_AssignAcctSchema WHERE 
                                     C_AcctSchema_ID = " + as1.GetC_AcctSchema_ID() + " AND GL_Journal_ID = " + record_Id, null, null));

            //  GLJ
            if (GetDocumentType().Equals(MDocBaseType.DOCBASETYPE_GLJOURNAL))
            {
                //  account     DR      CR
                for (int i = 0; i < _lines.Length; i++)
                {
                    // need to Post GL Journal for Multiple Accounting Schema that's why commented this condition
                    //if (_lines[i].GetC_AcctSchema_ID() == as1.GetC_AcctSchema_ID())
                    //{
                    // set conversion rate on line, so that amount to be converted based on that multiply rate
                    if (as1.GetC_AcctSchema_ID() != _C_AcctSchema_ID && _lines[i].GetC_Currency_ID() != as1.GetC_Currency_ID())
                    {
                        conversionRate = MConversionRate.GetRate(_lines[i].GetC_Currency_ID(), as1.GetC_Currency_ID(),
                                                                 _lines[i].GetDateAcct(), _lines[i].GetC_ConversionType_ID(),
                                                                 as1.GetAD_Client_ID(), _lines[i].GetAD_Org_ID());
                        _lines[i].SetConversionRate(conversionRate);
                    }
                    else if (as1.GetC_AcctSchema_ID() != _C_AcctSchema_ID)
                    {
                        _lines[i].SetConversionRate(conversionRate);
                    }

                    fact.CreateLine(_lines[i],
                                    _lines[i].GetAccount(),
                                    _lines[i].GetC_Currency_ID(),
                                    _lines[i].GetAmtSourceDr(),
                                    _lines[i].GetAmtSourceCr());
                    //}
                }       //	for all lines
            }
            else
            {
                _error = "DocumentType unknown: " + GetDocumentType();
                log.Log(Level.SEVERE, _error);
                fact = null;
            }
            //
            facts.Add(fact);
            return(facts);
        }
        /// <summary>
        /// Get Charge Account
        /// </summary>
        /// <param name="as1">account schema</param>
        /// <param name="amount">amount for expense(+)/revenue(-)</param>
        /// <returns>Charge Account or null</returns>
        public MAccount GetChargeAccount(MAcctSchema as1, Decimal?amount)
        {
            int C_Charge_ID = GetC_Charge_ID();

            if (C_Charge_ID == 0)
            {
                return(null);
            }
            return(MCharge.GetAccount(C_Charge_ID, as1, amount.Value));
        }
Exemple #15
0
        /// <summary>
        /// Create Facts (the accounting logic) for
        /// CMC.
        /// <pre>
        /// Expense
        /// CashExpense     DR
        ///        CashAsset               CR
        ///Receipt
        ///        CashAsset       DR
        ///        CashReceipt             CR
        ///  Charge
        ///        Charge          DR
        ///          CashAsset               CR
        ///  Difference
        ///          CashDifference  DR
        ///          CashAsset               CR
        ///  Invoice
        ///          CashAsset       DR
        ///          CashTransfer            CR
        ///  Transfer
        ///          BankInTransit   DR
        ///          CashAsset               CR
        ///  </pre>
        /// </summary>
        /// <param name="?"></param>
        /// <returns>Fact</returns>
        public override List <Fact> CreateFacts(MAcctSchema as1)
        {
            //  create Fact Header
            List <Fact> facts = new List <Fact>();

            if (GetDocumentType().Equals(MDocBaseType.DOCBASETYPE_PROFITLOSS))
            {
                //	Decimal grossAmt = getAmount(Doc.AMTTYPE_Gross);
                SetC_Currency_ID(GetCurrency(as1.GetC_AcctSchema_ID()));
                //  Commitment
                Fact    fact = new Fact(this, as1, Fact.POST_Actual);
                Decimal total = Env.ZERO, totalCredit = Env.ZERO, totalDebit = Env.ZERO;
                Decimal credit = Env.ZERO, debit = Env.ZERO;

                for (int i = 0; i < _lines.Length; i++)
                {
                    DocLine          dline = _lines[i];
                    MProfitLossLines line  = new MProfitLossLines(GetCtx(), dline.Get_ID(), null);
                    credit = Util.GetValueOfDecimal(dline.GetAmtAcctCr());
                    debit  = Util.GetValueOfDecimal(dline.GetAmtAcctDr());
                    if (credit > 0)
                    {
                        totalCredit = Decimal.Add(totalCredit, credit);
                    }
                    if (debit > 0)
                    {
                        totalDebit = Decimal.Add(totalDebit, debit);
                    }

                    //	Account
                    MAccount expense = MAccount.Get(GetCtx(), GetAD_Client_ID(), GetAD_Org_ID(), line.GetC_AcctSchema_ID(), line.GetAccount_ID(), line.GetC_SubAcct_ID(), line.GetM_Product_ID(), line.GetC_BPartner_ID(), line.GetAD_OrgTrx_ID(),
                                                    line.GetC_LocFrom_ID(), line.GetC_LocTo_ID(), line.GetC_SalesRegion_ID(), line.GetC_Project_ID(), line.GetC_Campaign_ID(), line.GetC_Activity_ID(), line.GetUser1_ID(), line.GetUser2_ID(), line.GetUserElement1_ID(), line.GetUserElement2_ID());

                    fact.CreateLine(dline, expense, GetCurrency(line.GetC_AcctSchema_ID()), debit, credit);
                }
                total = totalCredit - totalDebit;
                if (total != Env.ZERO)
                {
                    int      validComID = Util.GetValueOfInt(DB.ExecuteScalar(@"SELECT IncomeSummary_Acct FROM C_AcctSchema_GL WHERE C_AcctSchema_ID=" + as1.GetC_AcctSchema_ID() + " AND AD_Client_ID = " + GetAD_Client_ID()));
                    MAccount acct       = MAccount.Get(GetCtx(), validComID);
                    fact.CreateLine(null, acct, GetC_Currency_ID(), total);
                }
                //if (TotalCurrLoss != Env.ZERO)
                //{
                //    int validComID = Util.GetValueOfInt(DB.ExecuteScalar(@"SELECT C_ValidCombination_ID FROM C_ValidCombination WHERE Account_ID= ( SELECT C_ElementValue_ID FROM C_ElementValue WHERE Value='82540' AND AD_Client_ID = " + GetAD_Client_ID() + " )"));
                //    MAccount acct = MAccount.Get(GetCtx(), validComID);
                //    TotalCurrLoss = MConversionRate.Convert(GetCtx(), TotalCurrLoss, childCashCurrency, headerCashCurrency, GetAD_Client_ID(), GetAD_Org_ID());
                //    fact.CreateLine(null, acct,
                //     GetC_Currency_ID(), (TotalCurrLoss));
                //}

                facts.Add(fact);
            }
            return(facts);
        }
        /// <summary>
        /// Get Total Product Costs
        /// </summary>
        /// <param name="as1"></param>
        /// <param name="AD_Org_ID"></param>
        /// <param name="zeroCostsOK">zero/no costs are OK</param>
        /// <returns>costs</returns>
        public Decimal GetProductCosts(MAcctSchema as1, int AD_Org_ID, bool zeroCostsOK)
        {
            ProductCost pc             = GetProductCost();
            int         C_OrderLine_ID = GetC_OrderLine_ID();
            String      costingMethod  = null;
            Decimal?    costs          = pc.GetProductCosts(as1, AD_Org_ID, costingMethod, C_OrderLine_ID, zeroCostsOK);

            if (costs != null)
            {
                return(costs.Value);
            }
            return(Env.ZERO);
        }
Exemple #17
0
        public JsonResult PostByNewLogic(int AD_Client_ID)
        {
            Ctx    ctx = Session["ctx"] as Ctx;
            string res = "No";

            MClientInfo info = MClientInfo.Get(ctx, AD_Client_ID);
            MAcctSchema ass  = new MAcctSchema(ctx, info.GetC_AcctSchema1_ID(), null);

            if (ass.GetFRPT_LocAcct_ID() > 0)
            {
                res = "Yes";
            }

            return(Json(new { result = res }, JsonRequestBehavior.AllowGet));
        }
Exemple #18
0
        /// <summary>
        /// GetAcctSchema Detail
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="fields"></param>
        /// <returns></returns>
        public Dictionary <String, String> GetAcctSchema(Ctx ctx, string fields)
        {
            string[] paramValue = fields.Split(',');
            int      C_AcctSchema_ID;
            Dictionary <String, String> retDic = new Dictionary <string, string>();

            //Assign parameter value
            C_AcctSchema_ID = Util.GetValueOfInt(paramValue[0].ToString());
            //End Assign parameter value
            MAcctSchema aas = MAcctSchema.Get(ctx, C_AcctSchema_ID);

            retDic["StdPrecision"]  = aas.GetStdPrecision().ToString();
            retDic["C_Currency_ID"] = aas.GetC_Currency_ID().ToString();
            return(retDic);
        }
        /// <summary>
        /// Get PO Costs in Currency of AcctSchema
        /// </summary>
        /// <param name="as1"></param>
        /// <returns>Unit PO Cost</returns>
        private Decimal?GetPOCost(MAcctSchema as1)
        {
            Decimal?retValue = null;
            //	Uses PO Date
            String sql = "SELECT currencyConvert(ol.PriceActual, o.C_Currency_ID, @param1, o.DateOrdered, o.C_ConversionType_ID, @param2, @param3) "
                         + "FROM C_OrderLine ol"
                         + " INNER JOIN M_InOutLine iol ON (iol.C_OrderLine_ID=ol.C_OrderLine_ID)"
                         + " INNER JOIN C_Order o ON (o.C_Order_ID=ol.C_Order_ID) "
                         + "WHERE iol.M_InOutLine_ID=@param4";
            IDataReader idr = null;

            try
            {
                SqlParameter[] param = new SqlParameter[4];
                param[0] = new SqlParameter("@param1", as1.GetC_Currency_ID());
                param[1] = new SqlParameter("@param2", GetAD_Client_ID());
                param[2] = new SqlParameter("@param3", GetAD_Org_ID());
                param[3] = new SqlParameter("@param4", _issue.GetM_InOutLine_ID());

                idr = DataBase.DB.ExecuteReader(sql, param, null);

                if (idr.Read())
                {
                    retValue = Utility.Util.GetValueOfDecimal(idr[0]);///.getBigDecimal(1);
                    log.Fine("POCost = " + retValue);
                }
                else
                {
                    log.Warning("Not found for M_InOutLine_ID=" + _issue.GetM_InOutLine_ID());
                }
                idr.Close();
            }
            catch (Exception e)
            {
                if (idr != null)
                {
                    idr.Close();
                    idr = null;
                }
                log.Log(Level.SEVERE, sql, e);
            }

            return(retValue);
        }
Exemple #20
0
        /**
         *  Update Balance of Client
         *	@param ctx context
         *	@param deleteFirst delete first
         *  @param dateFrom null for all or first date to delete/calculate
         *  @param trx transaction
         *  @param svrPrc optional server process
         *	@return Info
         */
        public static String UpdateBalanceClient(Ctx ctx,
                                                 DateTime?dateFrom, Trx trx, int Fact_Accumulation_ID, SvrProcess svrPrc)
        {
            int           AD_Client_ID = ctx.GetAD_Client_ID();
            StringBuilder Info         = new StringBuilder();

            MAcctSchema[] ass = MAcctSchema.GetClientAcctSchema(ctx, AD_Client_ID);
            foreach (MAcctSchema as1 in ass)
            {
                if (Info.Length > 0)
                {
                    Info.Append(" - ");
                }
                String msg = UpdateBalance(ctx, as1.GetC_AcctSchema_ID(),
                                           dateFrom, trx, Fact_Accumulation_ID, svrPrc);
                Info.Append(as1.GetName()).Append(":").Append(msg);
            }
            return(Info.ToString());
        }
 /// <summary>
 /// Line Account from Product (or Charge).
 /// </summary>
 /// <param name="AcctType"></param>
 /// <param name="as1"></param>
 /// <returns>Requested Product Account</returns>
 public MAccount GetAccount(int AcctType, MAcctSchema as1)
 {
     //	Charge Account
     if (GetM_Product_ID() == 0 && GetC_Charge_ID() != 0)
     {
         Decimal amt = new Decimal(-1);          //	Revenue (-)
         if (!_doc.IsSOTrx())
         {
             amt = new Decimal(+1);                              //	Expense (+)
         }
         MAccount acct = GetChargeAccount(as1, amt);
         if (acct != null)
         {
             return(acct);
         }
     }
     //	Product Account
     return(GetProductCost().GetAccount(AcctType, as1));
 }
Exemple #22
0
        /// <summary>
        /// Update ProductPO PriceLastInv
        /// </summary>
        /// <param name="as1">accounting schema</param>
        private void UpdateProductPO(MAcctSchema as1)
        {
            MClientInfo ci = MClientInfo.Get(GetCtx(), as1.GetAD_Client_ID());

            if (ci.GetC_AcctSchema1_ID() != as1.GetC_AcctSchema_ID())
            {
                return;
            }

            StringBuilder sql = new StringBuilder(
                "UPDATE M_Product_PO po "
                + "SET PriceLastInv = "
                //	select
                + "(SELECT currencyConvert(il.PriceActual,i.C_Currency_ID,po.C_Currency_ID,i.DateInvoiced,i.C_ConversionType_ID,i.AD_Client_ID,i.AD_Org_ID) "
                + "FROM C_Invoice i, C_InvoiceLine il "
                + "WHERE i.C_Invoice_ID=il.C_Invoice_ID"
                + " AND po.M_Product_ID=il.M_Product_ID AND po.C_BPartner_ID=i.C_BPartner_ID");

            //jz + " AND ROWNUM=1 AND i.C_Invoice_ID=").Append(get_ID()).Append(") ")
            if (DataBase.DB.IsOracle()) //jz
            {
                sql.Append(" AND ROWNUM=1 ");
            }
            else
            {
                sql.Append(" AND i.UPDATED IN (SELECT MAX(i1.UPDATED) "
                           + "FROM C_Invoice i1, C_InvoiceLine il1 "
                           + "WHERE i1.C_Invoice_ID=il1.C_Invoice_ID"
                           + " AND po.M_Product_ID=il1.M_Product_ID AND po.C_BPartner_ID=i1.C_BPartner_ID")
                .Append("  AND i1.C_Invoice_ID=").Append(Get_ID()).Append(") ");
            }
            sql.Append("  AND i.C_Invoice_ID=").Append(Get_ID()).Append(") ")
            //	update
            .Append("WHERE EXISTS (SELECT * "
                    + "FROM C_Invoice i, C_InvoiceLine il "
                    + "WHERE i.C_Invoice_ID=il.C_Invoice_ID"
                    + " AND po.M_Product_ID=il.M_Product_ID AND po.C_BPartner_ID=i.C_BPartner_ID"
                    + " AND i.C_Invoice_ID=").Append(Get_ID()).Append(")");

            int no = DataBase.DB.ExecuteQuery(sql.ToString(), null, GetTrx());

            log.Fine("Updated=" + no);
        }
Exemple #23
0
        /// <summary>
        /// Get Commitment Release.
        /// Called from MatchInv for accrual and Allocation for Cash Based
        /// </summary>
        /// <param name="as1">accounting schema</param>
        /// <param name="doc">doc</param>
        /// <param name="Qty">qty invoiced/matched</param>
        /// <param name="C_InvoiceLine_ID">line</param>
        /// <param name="multiplier">1 for accrual</param>
        /// <returns>Fact</returns>
        public static Fact GetCommitmentRelease(MAcctSchema as1, Doc doc,
                                                Decimal Qty, int C_InvoiceLine_ID, Decimal multiplier)
        {
            Fact fact = new Fact(doc, as1, Fact.POST_Commitment);

            DocLine[] commitments   = Doc_Order.GetCommitments(doc, Qty, C_InvoiceLine_ID);
            Decimal   total         = Env.ZERO;
            int       C_Currency_ID = -1;

            for (int i = 0; i < commitments.Length; i++)
            {
                DocLine line = commitments[i];
                if (C_Currency_ID == -1)
                {
                    C_Currency_ID = line.GetC_Currency_ID();
                }
                else if (C_Currency_ID != line.GetC_Currency_ID())
                {
                    doc._error = "Different Currencies of Order Lines";
                    _log.Log(Level.SEVERE, doc._error);
                    return(null);
                }
                Decimal cost = Decimal.Multiply(line.GetAmtSource(), multiplier);
                total = Decimal.Add(total, cost);

                //	Account
                MAccount expense = line.GetAccount(ProductCost.ACCTTYPE_P_Expense, as1);
                fact.CreateLine(line, expense, C_Currency_ID, null, cost);
            }
            //	Offset
            MAccount offset = doc.GetAccount(ACCTTYPE_CommitmentOffset, as1);

            if (offset == null)
            {
                doc._error = "@NotFound@ @CommitmentOffset_Acct@";
                _log.Log(Level.SEVERE, doc._error);
                return(null);
            }
            fact.CreateLine(null, offset, C_Currency_ID, total, null);
            return(fact);
        }
Exemple #24
0
        /// <summary>
        /// Update ProductPO PriceLastPO
        /// </summary>
        /// <param name="as1">accounting schema</param>
        private void UpdateProductPO(MAcctSchema as1)
        {
            MClientInfo ci = MClientInfo.Get(GetCtx(), as1.GetAD_Client_ID());

            if (ci.GetC_AcctSchema1_ID() != as1.GetC_AcctSchema_ID())
            {
                return;
            }

            StringBuilder sql = new StringBuilder(
                "UPDATE M_Product_PO po "
                + "SET PriceLastPO = (SELECT currencyConvert(ol.PriceActual,ol.C_Currency_ID,po.C_Currency_ID,o.DateOrdered,o.C_ConversionType_ID,o.AD_Client_ID,o.AD_Org_ID) "
                + "FROM C_Order o, C_OrderLine ol "
                + "WHERE o.C_Order_ID=ol.C_Order_ID"
                + " AND po.M_Product_ID=ol.M_Product_ID AND po.C_BPartner_ID=o.C_BPartner_ID");

            //	AND ROWNUM=1 AND o.C_Order_ID=").Append(get_ID()).Append(") ")
            if (DataBase.DB.IsOracle()) //jz
            {
                sql.Append(" AND ROWNUM=1 ");
            }
            else
            {
                sql.Append(" AND o.UPDATED IN (SELECT MAX(o1.UPDATED) "
                           + "FROM C_Order o1, C_OrderLine ol1 "
                           + "WHERE o1.C_Order_ID=ol1.C_Order_ID"
                           + " AND po.M_Product_ID=ol1.M_Product_ID AND po.C_BPartner_ID=o1.C_BPartner_ID")
                .Append("  AND o1.C_Order_ID=").Append(Get_ID()).Append(") ");
            }

            sql.Append(" AND o.C_Order_ID=").Append(Get_ID()).Append(") ")
            .Append("WHERE EXISTS (SELECT * "
                    + "FROM C_Order o, C_OrderLine ol "
                    + "WHERE o.C_Order_ID=ol.C_Order_ID"
                    + " AND po.M_Product_ID=ol.M_Product_ID AND po.C_BPartner_ID=o.C_BPartner_ID"
                    + " AND o.C_Order_ID=").Append(Get_ID()).Append(")");
            int no = DataBase.DB.ExecuteQuery(sql.ToString(), null, GetTrx());

            log.Fine("Updated=" + no);
        }
        /// <summary>
        /// Create Facts (the accounting logic) for
        ///  GLJ.
        ///  (only for the accounting scheme, it was created)
        ///  <pre>
        ///     account     DR          CR
        ///  </pre>
        /// </summary>
        /// <param name="?"></param>
        /// <returns>fact</returns>
        public override List <Fact> CreateFacts(MAcctSchema as1)
        {
            List <Fact> facts = new List <Fact>();
            //	Other Acct Schema
            // need to Post GL Journal for Multiple Accounting Schema that's why commented this section
            //if (as1.GetC_AcctSchema_ID() != _C_AcctSchema_ID)
            //{
            //    return facts;
            //}

            //  create Fact Header
            Fact fact = new Fact(this, as1, _PostingType);

            //  GLJ
            if (GetDocumentType().Equals(MDocBaseType.DOCBASETYPE_GLJOURNAL))
            {
                //  account     DR      CR
                for (int i = 0; i < _lines.Length; i++)
                {
                    // need to Post GL Journal for Multiple Accounting Schema that's why commented this condition
                    //if (_lines[i].GetC_AcctSchema_ID() == as1.GetC_AcctSchema_ID())
                    //{
                    fact.CreateLine(_lines[i],
                                    _lines[i].GetAccount(),
                                    GetC_Currency_ID(),
                                    _lines[i].GetAmtSourceDr(),
                                    _lines[i].GetAmtSourceCr());
                    //}
                }       //	for all lines
            }
            else
            {
                _error = "DocumentType unknown: " + GetDocumentType();
                log.Log(Level.SEVERE, _error);
                fact = null;
            }
            //
            facts.Add(fact);
            return(facts);
        }
Exemple #26
0
        /// <summary>
        /// Create Facts (the accounting logic) for
        /// </summary>
        /// <param name="?"></param>
        /// <returns>Fact</returns>
        public override List <Fact> CreateFacts(MAcctSchema as1)
        {
            //  create Fact Header
            List <Fact> facts = new List <Fact>();

            if (GetDocumentType().Equals(MDocBaseType.DOCBASETYPE_INCOMETAX))
            {
                //	Decimal grossAmt = getAmount(Doc.AMTTYPE_Gross);
                //  Commitment
                Fact    fact   = new Fact(this, as1, Fact.POST_Actual);
                Decimal total  = Env.ZERO;
                Decimal amount = Env.ZERO;

                for (int i = 0; i < _lines.Length; i++)
                {
                    DocLine         dline = _lines[i];
                    MIncomeTaxLines line  = new MIncomeTaxLines(GetCtx(), dline.Get_ID(), null);
                    amount = Util.GetValueOfDecimal(line.GetIncomeTaxAmount());
                    if (amount != Env.ZERO)
                    {
                        total = Decimal.Add(total, amount);
                    }

                    //	Account
                    MAccount expense = MAccount.Get(GetCtx(), line.GetC_IncomeTax_Acct());
                    fact.CreateLine(dline, expense, GetC_Currency_ID(), amount);
                }

                if (total != Env.ZERO)
                {
                    int      validComID = Util.GetValueOfInt(DB.ExecuteScalar(@"SELECT T_Due_Acct FROM C_Tax_Acct WHERE C_AcctSchema_ID=" + as1.GetC_AcctSchema_ID() + " AND AD_Client_ID = " + GetAD_Client_ID()));
                    MAccount acct       = MAccount.Get(GetCtx(), validComID);
                    fact.CreateLine(null, acct, GetC_Currency_ID(), Decimal.Negate(total));
                }

                facts.Add(fact);
            }
            return(facts);
        }
        /// <summary>
        /// Create Facts (the accounting logic) for POR.
        /// <pre>
        /// Reservation
        ///     Expense		CR
        ///     Offset			DR
        /// </pre>
        /// </summary>
        /// <param name="as1"></param>
        /// <returns>fact</returns>
        public override List <Fact> CreateFacts(MAcctSchema as1)
        {
            List <Fact> facts = new List <Fact>();
            Fact        fact  = new Fact(this, as1, Fact.POST_Reservation);

            SetC_Currency_ID(as1.GetC_Currency_ID());
            //
            //	Decimal grossAmt =
            GetAmount(Doc.AMTTYPE_Gross);
            // Commitment
            if (as1.IsCreateReservation())
            {
                Decimal total = Env.ZERO;
                for (int i = 0; i < _lines.Length; i++)
                {
                    DocLine line = _lines[i];
                    Decimal cost = line.GetAmtSource();
                    total = Decimal.Add(total, cost);
                    // Account
                    MAccount expense = line.GetAccount(ProductCost.ACCTTYPE_P_Expense, as1);
                    //
                    fact.CreateLine(line, expense, as1.GetC_Currency_ID(), cost, null);
                }
                // Offset
                MAccount offset = GetAccount(ACCTTYPE_CommitmentOffset, as1);
                if (offset == null)
                {
                    _error = "@NotFound@ @CommitmentOffset_Acct@";
                    log.Log(Level.SEVERE, _error);
                    return(null);
                }
                fact.CreateLine(null, offset, GetC_Currency_ID(), null, total);
                facts.Add(fact);
            }

            return(facts);
        }
Exemple #28
0
        /// <summary>
        /// Get Account
        /// </summary>
        /// <param name="AcctType"></param>
        /// <param name="as1"></param>
        /// <returns>Account</returns>
        public MAccount GetAccount(int AcctType, MAcctSchema as1)
        {
            if (AcctType < 0 || AcctType > 4)
            {
                return(null);
            }
            //
            String sql = "SELECT T_Due_Acct, T_Liability_Acct, T_Credit_Acct, T_Receivables_Acct, T_Expense_Acct "
                         + "FROM C_Tax_Acct WHERE C_Tax_ID=" + _C_Tax_ID + " AND C_AcctSchema_ID=" + as1.GetC_AcctSchema_ID();
            int         validCombination_ID = 0;
            IDataReader idr = null;

            try
            {
                idr = DataBase.DB.ExecuteReader(sql, null, null);
                if (idr.Read())
                {
                    validCombination_ID = Utility.Util.GetValueOfInt(idr[AcctType]);// .getInt(AcctType + 1);    //  1..5
                }
                idr.Close();
            }
            catch (Exception e)
            {
                if (idr != null)
                {
                    idr.Close();
                    idr = null;
                }
                log.Log(Level.SEVERE, sql, e);
            }
            if (validCombination_ID == 0)
            {
                return(null);
            }
            return(MAccount.Get(as1.GetCtx(), validCombination_ID));
        }
        /// <summary>
        /// Process
        /// </summary>
        /// <returns>message</returns>
        protected override String DoIt()
        {
            log.Info("C_AcctSchema_ID=" + _C_AcctSchema_ID);
            if (_C_AcctSchema_ID == 0)
            {
                throw new Exception("C_AcctSchema_ID=0");
            }
            MAcctSchema as1 = MAcctSchema.Get(GetCtx(), _C_AcctSchema_ID);

            if (as1.Get_ID() == 0)
            {
                throw new Exception("Not Found - C_AcctSchema_ID=" + _C_AcctSchema_ID);
            }

            //	Update
            String sql = "UPDATE M_Product_Acct pa "
                         + "SET (P_Revenue_Acct,P_Expense_Acct,P_CostAdjustment_Acct,P_InventoryClearing_Acct,P_Asset_Acct,P_COGS_Acct,"
                         + " P_PurchasePriceVariance_Acct,P_InvoicePriceVariance_Acct,"
                         + " P_TradeDiscountRec_Acct,P_TradeDiscountGrant_Acct "
                         // Added **************** Lokesh Chauhan ****************
                         + "  ,P_Resource_Absorption_Acct , P_MaterialOverhd_Acct "
                         // Added ****************
                         + " )="
                         + " (SELECT P_Revenue_Acct,P_Expense_Acct,P_CostAdjustment_Acct,P_InventoryClearing_Acct,P_Asset_Acct,P_COGS_Acct,"
                         + " P_PurchasePriceVariance_Acct,P_InvoicePriceVariance_Acct,"
                         + " P_TradeDiscountRec_Acct,P_TradeDiscountGrant_Acct"
                         // Added **************** Lokesh Chauhan ****************
                         + " ,P_Resource_Absorption_Acct , P_MaterialOverhd_Acct "
                         // Added ****************
                         + " FROM M_Product_Category_Acct pca"
                         + " WHERE pca.M_Product_Category_ID=" + _M_Product_Category_ID
                         + " AND pca.C_AcctSchema_ID=" + _C_AcctSchema_ID
                         + "), Updated=SysDate, UpdatedBy=0 "
                         + "WHERE pa.C_AcctSchema_ID=" + _C_AcctSchema_ID
                         + " AND EXISTS (SELECT * FROM M_Product p "
                         + "WHERE p.M_Product_ID=pa.M_Product_ID"
                         + " AND p.M_Product_Category_ID=" + _M_Product_Category_ID + ")";
            int updated = DataBase.DB.ExecuteQuery(sql, null, Get_TrxName());

            AddLog(0, null, new Decimal(updated), "@Updated@");

            //	Insert new Products
            sql = "INSERT INTO M_Product_Acct "
                  + "(M_Product_ID, C_AcctSchema_ID,"
                  + " AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy,"
                  + " P_Revenue_Acct, P_Expense_Acct, P_CostAdjustment_Acct, P_InventoryClearing_Acct, P_Asset_Acct, P_CoGs_Acct,"
                  + " P_PurchasePriceVariance_Acct, P_InvoicePriceVariance_Acct,"
                  + " P_TradeDiscountRec_Acct, P_TradeDiscountGrant_Acct "
                  //Added
                  + "  ,P_Resource_Absorption_Acct, P_MaterialOverhd_Acct "
                  + ") "
                  + "SELECT p.M_Product_ID, acct.C_AcctSchema_ID,"
                  + " p.AD_Client_ID, p.AD_Org_ID, 'Y', SysDate, 0, SysDate, 0,"
                  + " acct.P_Revenue_Acct, acct.P_Expense_Acct, acct.P_CostAdjustment_Acct, acct.P_InventoryClearing_Acct, acct.P_Asset_Acct, acct.P_CoGs_Acct,"
                  + " acct.P_PurchasePriceVariance_Acct, acct.P_InvoicePriceVariance_Acct,"
                  + " acct.P_TradeDiscountRec_Acct, acct.P_TradeDiscountGrant_Acct "
                  + " ,acct.P_Resource_Absorption_Acct, acct.P_MaterialOverhd_Acct"
                  + " FROM M_Product p"
                  + " INNER JOIN M_Product_Category_Acct acct ON (acct.M_Product_Category_ID=p.M_Product_Category_ID)"
                  + "WHERE acct.C_AcctSchema_ID=" + _C_AcctSchema_ID            //	#
                  + " AND p.M_Product_Category_ID=" + _M_Product_Category_ID    //	#
                  + " AND NOT EXISTS (SELECT * FROM M_Product_Acct pa "
                  + "WHERE pa.M_Product_ID=p.M_Product_ID"
                  + " AND pa.C_AcctSchema_ID=acct.C_AcctSchema_ID)";
            int created = DataBase.DB.ExecuteQuery(sql, null, Get_TrxName());

            AddLog(0, null, new Decimal(created), "@Created@");

            return("@Created@=" + created + ", @Updated@=" + updated);
        }
Exemple #30
0
        /// <summary>
        /// Load Invoice Line
        /// </summary>
        /// <param name="journal"></param>
        /// <returns>DocLine Array</returns>
        private DocLine[] LoadLines(MJournal journal)
        {
            MAcctSchema    mSc  = new MAcctSchema(GetCtx(), _C_AcctSchema_ID, null);
            List <DocLine> list = new List <DocLine>();

            MJournalLine[] lines = journal.GetLines(false);
            record_Id = lines[0].GetGL_Journal_ID();

            for (int i = 0; i < lines.Length; i++)
            {
                MJournalLine line = lines[i];

                if (line.GetElementType() == null)
                {
                    DocLine docLine = new DocLine(line, this);
                    //  --  Source Amounts
                    docLine.SetAmount(line.GetAmtAcctDr(), line.GetAmtAcctCr());
                    //  --  Converted Amounts
                    // no need to update converted amount here
                    //docLine.SetConvertedAmt(_C_AcctSchema_ID, line.GetAmtAcctDr(), line.GetAmtAcctCr());
                    //  --  Account
                    MAccount account = line.GetAccount();
                    docLine.SetAccount(account);
                    //  -- Quantity
                    docLine.SetQty(line.GetQty(), false);
                    // -- Date
                    docLine.SetDateAcct(journal.GetDateAcct());
                    //	--	Organization of Line was set to Org of Account
                    list.Add(docLine);
                }
                else
                {
                    string  sql = "SELECT * FROM GL_LineDimension WHERE GL_JournalLine_ID=" + line.Get_ID();
                    DataSet ds  = DB.ExecuteDataset(sql);
                    if (ds != null && ds.Tables[0].Rows.Count > 0)
                    {
                        for (int m = 0; m < ds.Tables[0].Rows.Count; m++)
                        {
                            DataRow            dr   = ds.Tables[0].Rows[m];
                            X_GL_LineDimension lDim = new X_GL_LineDimension(GetCtx(), dr, null);

                            DocLine docLine = new DocLine(lDim, this);
                            //  --  Source Amounts


                            decimal cRate = line.GetCurrencyRate();
                            if (cRate == 0)
                            {
                                cRate = 1;
                            }
                            decimal amtAcctCr = 0;
                            decimal amtAcctDr = 0;

                            //MAcctSchema mSc = new MAcctSchema(GetCtx(), _C_AcctSchema_ID, null);


                            if (line.GetAmtSourceDr() != 0)
                            {
                                amtAcctDr = lDim.GetAmount() * cRate;
                                docLine.SetAmount(amtAcctDr, 0);
                                amtAcctDr = Decimal.Round(amtAcctDr, mSc.GetStdPrecision());
                            }
                            else
                            {
                                amtAcctCr = lDim.GetAmount() * cRate;
                                docLine.SetAmount(0, amtAcctCr);
                                amtAcctCr = Decimal.Round(amtAcctCr, mSc.GetStdPrecision());
                            }
                            //  --  Converted Amounts
                            // no need to update converted amount here
                            //docLine.SetConvertedAmt(_C_AcctSchema_ID, amtAcctDr, amtAcctCr);
                            //  --  Account
                            MAccount account = line.GetAccount();


                            docLine.SetAccount(account);
                            //  -- Quantity
                            docLine.SetQty(lDim.GetQty(), false);
                            // -- Date
                            docLine.SetDateAcct(journal.GetDateAcct());

                            // -- User Dimension
                            docLine = SetUserDimension(lDim, docLine);

                            //	--	Organization of Line was set to Org of Account
                            list.Add(docLine);
                        }
                    }
                }
            }
            //	Return Array
            int size = list.Count;

            DocLine[] dls = new DocLine[size];
            dls = list.ToArray();
            return(dls);
        }