Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <summary>
        /// Create Facts (the accounting logic) for
        /// SOO, POO.
        /// <pre>
        /// Reservation (release)
        /// Expense			DR
        /// Offset					CR
        /// Commitment
        /// (to be released by Invoice Matching)
        /// Expense					CR
        /// Offset			DR
        /// </pre>
        /// </summary>
        /// <param name="as1">accounting schema</param>
        /// <returns>Fact</returns>
        public override List <Fact> CreateFacts(MAcctSchema as1)
        {
            List <Fact> facts = new List <Fact>();

            //  Purchase Order
            if (GetDocumentType().Equals(MDocBaseType.DOCBASETYPE_PURCHASEORDER))
            {
                UpdateProductPO(as1);

                //	Decimal grossAmt = getAmount(Doc.AMTTYPE_Gross);

                //  Commitment
                if (as1.IsCreateCommitment())
                {
                    Fact    fact  = new Fact(this, as1, Fact.POST_Commitment);
                    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, 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);
                }

                //  Reverse Reservation
                if (as1.IsCreateReservation())
                {
                    Fact    fact  = new Fact(this, as1, Fact.POST_Reservation);
                    Decimal total = Env.ZERO;
                    if (_requisitions == null)
                    {
                        _requisitions = LoadRequisitions();
                    }
                    for (int i = 0; i < _requisitions.Length; i++)
                    {
                        DocLine line = _requisitions[i];
                        Decimal cost = line.GetAmtSource();
                        total = Decimal.Add(total, cost);

                        //	Account
                        MAccount expense = line.GetAccount(ProductCost.ACCTTYPE_P_Expense, as1);
                        fact.CreateLine(line, expense, GetC_Currency_ID(), null, cost);
                    }
                    //	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(), total, null);
                    //
                    facts.Add(fact);
                }       //	reservations
            }
            //	SO
            return(facts);
        }