/// <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); }
/// <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); }