Difference between revisions of "IDempiere Accounting"

From iDempiere en
m
 
(18 intermediate revisions by 3 users not shown)
Line 13: Line 13:
  
 
|-
 
|-
| Payment || || || || Based on C_AllocationHdr y C_AllocationLine
+
| Payment || || || || Based on C_AllocationHdr and C_AllocationLine
 
|-
 
|-
 
| Payment Without Invoice || || || if C_Invoice_ID = 0 (no invoice) Payment Only<br>if C_Payment.C_DocType->DocBaseType ||  
 
| Payment Without Invoice || || || if C_Invoice_ID = 0 (no invoice) Payment Only<br>if C_Payment.C_DocType->DocBaseType ||  
 
|-
 
|-
| || C_BankAccount_Acct -> B_PaymentSelect_Acct || || DocBaseType=APP ||[[File:B_PaymentSelect_Acct.jpeg]]
+
| || C_BankAccount_Acct -> B_PaymentSelect_Acct || || DocBaseType=APP ||
 
|-
 
|-
| || C_BP_Customer_Acct -> C_Prepayment_Acct || || DocBaseType<>APP and isPrepayment and isReceipt || [[File:C_Prepayment_Acct.jpeg]]
+
| || C_BP_Customer_Acct -> C_Prepayment_Acct || || DocBaseType<>APP and isPrepayment and isReceipt ||
 
|-
 
|-
| || C_BP_Vendor_Acct -> V_Prepayment_Acct || || DocBaseType<>APP and isPrepayment || [[File:V_Prepayment_Acct.jpeg]]
+
| || C_BP_Vendor_Acct -> V_Prepayment_Acct || || DocBaseType<>APP and isPrepayment ||
 
|-
 
|-
| || || C_BankAccount_Acct -> B_UnallocatedCash_Acct || || [[File:B_UnallocatedCash_Acct.jpeg]]
+
| || || C_BankAccount_Acct -> B_UnallocatedCash_Acct || ||
 
|-
 
|-
| Receipt Customer Invoice || || || if C_Invoice_ID and isSOTrx || Adempiere won't post clearing if C_AcctSchema.isPostIfClearingEqual = N AND (clearing account C_BankAccount_Acct -> B_UnallocatedCash_Acct is equal to C_BP_Customer_Acct -> C_Receivable_Acct)
+
| Receipt Customer Invoice || || || if C_Invoice_ID and isSOTrx || iDempiere won't post clearing if C_AcctSchema.isPostIfClearingEqual = N AND (clearing account C_BankAccount_Acct -> B_UnallocatedCash_Acct is equal to C_BP_Customer_Acct -> C_Receivable_Acct)
 
|-
 
|-
 
| || || || if C_Payment_ID > 0 ||  
 
| || || || if C_Payment_ID > 0 ||  
Line 36: Line 36:
 
|-
 
|-
 
| || C_BankAccount_Acct -> B_UnallocatedCash_Acct || || else ||  
 
| || C_BankAccount_Acct -> B_UnallocatedCash_Acct || || else ||  
|-
 
| || C_CashBook_Acct -> CB_CashTransfer_Acct || || if C_CashLine_ID > 0 ||
 
 
|-
 
|-
 
| || C_BP_Group_Acct -> PayDiscount_Exp_Acct || || if there is discount || value of DiscountAmt
 
| || C_BP_Group_Acct -> PayDiscount_Exp_Acct || || if there is discount || value of DiscountAmt
Line 45: Line 43:
 
| || || C_BP_Customer_Acct -> C_Receivable_Acct || if c_acctschema.isAccrual || value of AmtSource + DiscountAmt + WriteOffAmt
 
| || || C_BP_Customer_Acct -> C_Receivable_Acct || if c_acctschema.isAccrual || value of AmtSource + DiscountAmt + WriteOffAmt
 
|-
 
|-
| || || || when the schema is not accrual Adempiere generates different posting in createCashBasedAcct (still not described in this document) ||  
+
| || || || when the schema is not accrual iDempiere generates different posting in createCashBasedAcct (still not described in this document) ||  
 
|-
 
|-
| Payment Purchase Invoice || || || || Adempiere won't post clearing if C_AcctSchema.isPostIfClearingEqual = N AND (clearing account C_BankAccount_Acct -> B_PaymentSelect_Acct is equal to C_BP_Vendor_Acct -> V_Liability_Acct)
+
| Payment Purchase Invoice || || || || iDempiere won't post clearing if C_AcctSchema.isPostIfClearingEqual = N AND (clearing account C_BankAccount_Acct -> B_PaymentSelect_Acct is equal to C_BP_Vendor_Acct -> V_Liability_Acct)
 
|-
 
|-
 
| || C_BP_Vendor_Acct -> V_Liability_Acct || || if c_acctschema.isAccrual ||  
 
| || C_BP_Vendor_Acct -> V_Liability_Acct || || if c_acctschema.isAccrual ||  
Line 60: Line 58:
 
|-
 
|-
 
| || || C_BankAccount_Acct -> B_UnallocatedCash_Acct || else ||  
 
| || || C_BankAccount_Acct -> B_UnallocatedCash_Acct || else ||  
|-
 
| || || C_CashBook_Acct -> CB_CashTransfer_Acct || if C_CashLine_ID > 0 ||
 
 
|-
 
|-
 
| || || C_BP_Group_Acct -> PayDiscount_Rev_Acct || if there is discount ||  
 
| || || C_BP_Group_Acct -> PayDiscount_Rev_Acct || if there is discount ||  
Line 97: Line 93:
  
 
|-
 
|-
| Bank Statement || || || || Based in C_BankStatement y C_BankStatementLine
+
| Bank Statement || || || || Based in C_BankStatement and C_BankStatementLine
 
|-
 
|-
| Bank Charges || C_BankAccount_Acct -> B_Asset_Acct || || || Bank (if debit or credit is determined according to the sign of value StmtAmt) <br><br> Adempiere won't post clearing if C_AcctSchema.isPostIfClearingEqual = N AND (clearing account  C_BankAccount_Acct -> B_InTransit_Acct is equal to C_BankAccount_Acct -> B_Asset_Acct)
+
| Bank Charges || C_BankAccount_Acct -> B_Asset_Acct || || || Bank (if debit or credit is determined according to the sign of value StmtAmt) <br><br> iDempiere won't post clearing if C_AcctSchema.isPostIfClearingEqual = N AND (clearing account  C_BankAccount_Acct -> B_InTransit_Acct is equal to C_BankAccount_Acct -> B_Asset_Acct)
 
|-
 
|-
 
| || || C_BankAccount_Acct -> B_InTransit_Acct || || Payment (value TrxAmt, DB or CR depending on the sign)
 
| || || C_BankAccount_Acct -> B_InTransit_Acct || || Payment (value TrxAmt, DB or CR depending on the sign)
 
|-
 
|-
| || || C_Charge_Acct -> CH_Expense_Acct || if C_Charge_ID <> 0 and amt > 0 || value ChargeAmt, DB or CR depending on the sign
+
| || || C_Charge_Acct -> CH_Expense_Acct || if C_Charge_ID <> 0 || value ChargeAmt, DB or CR depending on the sign
|-
 
| || || C_Charge_Acct -> CH_Revenue_Acct || if C_Charge_ID <> 0 and amt < 0 ||
 
 
|-
 
|-
 
| || C_BankAccount_Acct -> B_InterestExp_Acct || C_BankAccount_Acct -> B_InterestExp_Acct || if C_BankStatementLine.InterestAmt < 0 || DB or CR depending on the sign of the quantity (value InterestAmt)
 
| || C_BankAccount_Acct -> B_InterestExp_Acct || C_BankAccount_Acct -> B_InterestExp_Acct || if C_BankStatementLine.InterestAmt < 0 || DB or CR depending on the sign of the quantity (value InterestAmt)
 
|-
 
|-
 
| || C_BankAccount_Acct -> B_InterestRev_Acct || C_BankAccount_Acct -> B_InterestRev_Acct || if C_BankStatementLine.InterestAmt > 0 || DB or CR depending on the sign of the quantity
 
| || C_BankAccount_Acct -> B_InterestRev_Acct || C_BankAccount_Acct -> B_InterestRev_Acct || if C_BankStatementLine.InterestAmt > 0 || DB or CR depending on the sign of the quantity
 
|}
 
 
== Cash ==
 
{| border="1"
 
|-
 
!width="100pt"|Description of Document
 
!width="150pt"|DR
 
!width="150pt"|CR
 
!width="150pt"|Conditions
 
!width="200pt"|Comments
 
 
|-
 
| Cash || || || || Based in C_Cash y C_CashLine
 
|-
 
| Expenses (CASH EXPENSE) || C_CashBook_Acct -> CB_Expense_Acct || || if C_CashLine.CashType = E ||
 
|-
 
| Receipts (CASH RECEIPT) || || C_CashBook_Acct -> CB_Receipt_Acct || if C_CashLine.CashType = R ||
 
|-
 
| Charges (CASH CHARGE) || || || if C_CashLine.CashType = C ||
 
|-
 
| || C_Charge_Acct -> CH_Expense_Acct || || if C_Charge_ID <> 0 and amt > 0 ||
 
|-
 
| || C_Charge_Acct -> CH_Revenue_Acct || || if C_Charge_ID <> 0 and amt < 0 ||
 
|-
 
| Difference in cash (CASH DIFFERENCE) || C_CashBook_Acct -> CB_Differences_Acct || || if C_CashLine.CashType = D ||
 
|-
 
| Invoice (CASH INVOICE) || C_CashBook_Acct -> CB_CashTransfer_Acct || || ||
 
|-
 
| || C_CashBook_Acct -> CB_Asset_Acct || || if currency is different than document currency ||
 
|-
 
| Bank Transfer (CASH TRANSFER) || C_BankAccount_Acct -> B_InTransit_Acct || || ||
 
|-
 
| || C_CashBook_Acct -> CB_Asset_Acct || || if currency is different than document currency ||
 
|-
 
| || || C_CashBook_Acct -> CB_Asset_Acct || || Finally it creates a record in DB or CR depending on the difference between the registered movements
 
  
 
|}
 
|}
Line 159: Line 117:
  
 
|-
 
|-
| GL Journal || || || || Based in GL_Journal y GL_JournalLine
+
| GL Journal || || || || Based in GL_Journal and GL_JournalLine
 
|-
 
|-
 
| Journal || GL_JournalLine -> account_id || GL_JournalLine -> account_id || ||  
 
| Journal || GL_JournalLine -> account_id || GL_JournalLine -> account_id || ||  
Line 175: Line 133:
  
 
|-
 
|-
| Shipments and Receipts || || || || Based in M_InOut y M_InOutLine
+
| Shipments and Receipts || || || || Based in M_InOut and M_InOutLine
 
|-
 
|-
 
| Sales shipment (DOC MatShipment) || M_Product_Acct -> P_Cogs_Acct || M_Product_Acct -> P_Asset_Acct || Sales - Shipment || calculates the cost based in M_Cost. If is a product create register in M_CostDetail
 
| Sales shipment (DOC MatShipment) || M_Product_Acct -> P_Cogs_Acct || M_Product_Acct -> P_Asset_Acct || Sales - Shipment || calculates the cost based in M_Cost. If is a product create register in M_CostDetail
Line 199: Line 157:
  
 
|-
 
|-
| Internal Use and Physical Inventory || || || || Based in M_Inventory y M_InventoryLine
+
| Internal Use and Physical Inventory || || || || Based in M_Inventory and M_InventoryLine
 
|-
 
|-
 
| || M_Product_Acct -> P_Asset_Acct || || || calculates the cost based in M_CostDetail
 
| || M_Product_Acct -> P_Asset_Acct || || || calculates the cost based in M_CostDetail
 
|-
 
|-
| || || C_Charge_Acct -> CH_Expense_Acct || if C_Charge_ID <> 0 and amt > 0 ||
+
| || || C_Charge_Acct -> CH_Expense_Acct || if C_Charge_ID <> 0 ||  
|-
 
| || || C_Charge_Acct -> CH_Revenue_Acct || if C_Charge_ID <> 0 and amt < 0 ||  
 
 
|-
 
|-
 
| || || M_Warehouse_Acct -> W_Differences_Acct || || recreate M_CostDetail
 
| || || M_Warehouse_Acct -> W_Differences_Acct || || recreate M_CostDetail
Line 215: Line 171:
 
|-
 
|-
 
!width="100pt"|Description of Document
 
!width="100pt"|Description of Document
!width="150pt"|DB
+
!width="150pt"|DR
 
!width="150pt"|CR
 
!width="150pt"|CR
 
!width="150pt"|Conditions
 
!width="150pt"|Conditions
Line 221: Line 177:
  
 
|-
 
|-
| Invoice || || || there is no accounting for not accrual || Based in C_Invoice, C_InvoiceTax y C_InvoiceLine
+
| Invoice || || || there is no accounting for not accrual || Based in C_Invoice, C_InvoiceTax and C_InvoiceLine
 
|-
 
|-
 
| Sales Invoice (Customer) (DOC ARInvoice or ARProForma) || || || ||  
 
| Sales Invoice (Customer) (DOC ARInvoice or ARProForma) || || || ||  
Line 227: Line 183:
 
| || || || Header Charge ||  
 
| || || || Header Charge ||  
 
|-
 
|-
| || || C_Charge_Acct -> CH_Expense_Acct || if C_Charge_ID <> 0 and amt < 0 ||
+
| || || C_Charge_Acct -> CH_Expense_Acct || if C_Charge_ID <> 0 ||  
|-
 
| || || C_Charge_Acct -> CH_Revenue_Acct || if C_Charge_ID <> 0 and amt > 0 ||  
 
 
|-
 
|-
 
| || || C_Tax_Acct -> T_Due_Acct || for each tax ||  
 
| || || C_Tax_Acct -> T_Due_Acct || for each tax ||  
Line 244: Line 198:
 
|-
 
|-
 
| || C_BP_Customer_Acct -> C_Receivable_Acct || || || post the value of products
 
| || C_BP_Customer_Acct -> C_Receivable_Acct || || || post the value of products
|-
 
| || C_BP_Customer_Acct -> C_Receivable_Services_Acct || || only posted if C_AcctSchema.isPostServices and there are non-item products || post the value of services and charges
 
 
|-
 
|-
 
| Credit Note (Customer) (DOC ARCredit) || || || ||  
 
| Credit Note (Customer) (DOC ARCredit) || || || ||  
Line 251: Line 203:
 
| || || || Header Charge ||  
 
| || || || Header Charge ||  
 
|-
 
|-
| || C_Charge_Acct -> CH_Expense_Acct || || if C_Charge_ID <> 0 and amt > 0 ||
+
| || C_Charge_Acct -> CH_Expense_Acct || || if C_Charge_ID <> 0 ||  
|-
 
| || C_Charge_Acct -> CH_Revenue_Acct || || if C_Charge_ID <> 0 and amt < 0 ||  
 
 
|-
 
|-
 
| || C_Tax_Acct -> T_Due_Acct || || for each tax ||  
 
| || C_Tax_Acct -> T_Due_Acct || || for each tax ||  
Line 266: Line 216:
 
|-
 
|-
 
| || || C_BP_Customer_Acct -> C_Receivable_Acct || || post the value of products
 
| || || C_BP_Customer_Acct -> C_Receivable_Acct || || post the value of products
|-
 
| || || C_BP_Customer_Acct -> C_Receivable_Services_Acct || only posted if C_AcctSchema.isPostServices and there are non-item products || post the value of services and charges
 
 
|-
 
|-
 
| Purchase Invoice (Vendor) (DOC APInvoice) || || || ||  
 
| Purchase Invoice (Vendor) (DOC APInvoice) || || || ||  
 
|-
 
|-
| || C_Charge_Acct -> CH_Expense_Acct || || if C_Charge_ID <> 0 and amt > 0 ||
+
| || C_Charge_Acct -> CH_Expense_Acct || || if C_Charge_ID <> 0 ||  
|-
 
| || C_Charge_Acct -> CH_Revenue_Acct || || if C_Charge_ID <> 0 and amt < 0 ||  
 
 
|-
 
|-
 
| || C_Tax_Acct -> T_Credit_Acct o T_Expense_Acct (if sales tax) || || for each tax ||  
 
| || C_Tax_Acct -> T_Credit_Acct o T_Expense_Acct (if sales tax) || || for each tax ||  
Line 288: Line 234:
 
|-
 
|-
 
| || || C_BP_Vendor_Acct -> V_Liability_Acct || ||  
 
| || || C_BP_Vendor_Acct -> V_Liability_Acct || ||  
|-
 
| || || C_BP_Vendor_Acct -> V_Liability_Services_Acct || only posted if C_AcctSchema.isPostServices and there are non-item products ||
 
 
|-
 
|-
 
| Credit Note (Vendor) (DOC APCredit) || || || ||  
 
| Credit Note (Vendor) (DOC APCredit) || || || ||  
 
|-
 
|-
| || || C_Charge_Acct -> CH_Expense_Acct || if C_Charge_ID <> 0 and amt > 0 ||
+
| || || C_Charge_Acct -> CH_Expense_Acct || if C_Charge_ID <> 0 ||  
|-
 
| || || C_Charge_Acct -> CH_Revenue_Acct || if C_Charge_ID <> 0 and amt < 0 ||  
 
 
|-
 
|-
 
| || || C_Tax_Acct -> T_Credit_Acct o T_Expense_Acct (if sales tax) || TaxCredit ||  
 
| || || C_Tax_Acct -> T_Credit_Acct o T_Expense_Acct (if sales tax) || TaxCredit ||  
Line 309: Line 251:
 
| || || || Liability ||  
 
| || || || Liability ||  
 
|-
 
|-
| || || C_BP_Vendor_Acct -> V_Liability_Acct || ||
+
| || C_BP_Vendor_Acct -> V_Liability_Acct
|-
+
| || ||  
| || || C_BP_Vendor_Acct -> V_Liability_Services_Acct || only posted if C_AcctSchema.isPostServices and there are non-item products ||  
 
 
|-
 
|-
 
| Landed Cost Posting || M_Product_Acct -> P_CostAdjustment_Acct || || ||  
 
| Landed Cost Posting || M_Product_Acct -> P_CostAdjustment_Acct || || ||  
Line 325: Line 266:
 
|-
 
|-
 
!width="100pt"|Description of Document
 
!width="100pt"|Description of Document
!width="150pt"|DB
+
!width="150pt"|DR
 
!width="150pt"|CR
 
!width="150pt"|CR
 
!width="150pt"|Conditions
 
!width="150pt"|Conditions
Line 331: Line 272:
  
 
|-
 
|-
| Match Inventory || || || || Based in M_MatchInv, C_InvoiceLine y M_InOutLine
+
| Match Invoice || || || || Based in M_MatchInv, C_InvoiceLine and M_InOutLine
 
|-
 
|-
| || C_BP_Group_Acct -> NotInvoicedReceipts_Acct || || || Adempiere won't post clearing if C_AcctSchema.isPostIfClearingEqual = N AND (clearing account  C_BP_Group_Acct -> NotInvoicedReceipts_Acct is equal to  M_Product_Acct -> P_InventoryClearing_Acct)
+
| || C_BP_Group_Acct -> NotInvoicedReceipts_Acct || || || iDempiere won't post clearing if C_AcctSchema.isPostIfClearingEqual = N AND (clearing account  C_BP_Group_Acct -> NotInvoicedReceipts_Acct is equal to  M_Product_Acct -> P_InventoryClearing_Acct)
 
|-
 
|-
 
| || || || if isAccrual ||  
 
| || || || if isAccrual ||  
Line 341: Line 282:
 
| || || M_Product_Acct -> P_Expense_Acct || if non-item ||  
 
| || || M_Product_Acct -> P_Expense_Acct || if non-item ||  
 
|-
 
|-
| || || || when the schema is not accrual Adempiere generates different posting in createCashBasedAcct (still not described in this document) ||  
+
| || || || when the schema is not accrual iDempiere generates different posting in createCashBasedAcct (still not described in this document) ||  
 
|-
 
|-
 
| || M_Product_Acct -> P_InvoicePriceVariance_Acct || || Invoice Price Variance difference || Update M_Product_Costing
 
| || M_Product_Acct -> P_InvoicePriceVariance_Acct || || Invoice Price Variance difference || Update M_Product_Costing
Line 347: Line 288:
 
| || || || Commitment release ||  
 
| || || || Commitment release ||  
 
|-
 
|-
| || || || if isAccrual y isCreateCommitment ||  
+
| || || || if isAccrual and isCreateCommitment ||  
 
|-
 
|-
 
| || || M_Product_Acct -> P_Expense_Acct || for each commitment, this is each C_OrderLine that matches with an C_InvoiceLine or with a M_MatchPO ||  
 
| || || M_Product_Acct -> P_Expense_Acct || for each commitment, this is each C_OrderLine that matches with an C_InvoiceLine or with a M_MatchPO ||  
Line 361: Line 302:
 
|-
 
|-
 
!width="100pt"|Description of Document
 
!width="100pt"|Description of Document
!width="150pt"|DB
+
!width="150pt"|DR
 
!width="150pt"|CR
 
!width="150pt"|CR
 
!width="150pt"|Conditions
 
!width="150pt"|Conditions
Line 367: Line 308:
  
 
|-
 
|-
| Match Purchase Order || || || || Just for standard costing<br>Adempiere won't post this if C_AcctSchema.isPostIfClearingEqual = N AND (clearing account M_Product_Acct -> P_PurchasePriceVariance_Acct is equal to C_AcctSchema_GL -> PPVOffset_Acct)
+
| Match Purchase Order || || || || Just for standard costing<br>iDempiere won't post this if C_AcctSchema.isPostIfClearingEqual = N AND (clearing account M_Product_Acct -> P_PurchasePriceVariance_Acct is equal to C_AcctSchema_GL -> PPVOffset_Acct)
 
|-
 
|-
 
| || M_Product_Acct -> P_PurchasePriceVariance_Acct || C_AcctSchema_GL -> PPVOffset_Acct || || post the difference between the cost of the order line vs the standard cost
 
| || M_Product_Acct -> P_PurchasePriceVariance_Acct || C_AcctSchema_GL -> PPVOffset_Acct || || post the difference between the cost of the order line vs the standard cost
Line 379: Line 320:
 
|-
 
|-
 
!width="100pt"|Description of Document
 
!width="100pt"|Description of Document
!width="150pt"|DB
+
!width="150pt"|DR
 
!width="150pt"|CR
 
!width="150pt"|CR
 
!width="150pt"|Conditions
 
!width="150pt"|Conditions
Line 385: Line 326:
  
 
|-
 
|-
| Inventory Movement || || || || Based in M_Movement y M_MovementLine
+
| Inventory Movement || || || || Based in M_Movement and M_MovementLine
 
|-
 
|-
 
| || M_Product_Acct -> P_Asset_Acct || M_Product_Acct -> P_Asset_Acct || Inventory || DB or CR depending on thevalue, moving from a locator to another in accounting dimension
 
| || M_Product_Acct -> P_Asset_Acct || M_Product_Acct -> P_Asset_Acct || Inventory || DB or CR depending on thevalue, moving from a locator to another in accounting dimension
Line 399: Line 340:
 
|-
 
|-
 
!width="100pt"|Description of Document
 
!width="100pt"|Description of Document
!width="150pt"|DB
+
!width="150pt"|DR
 
!width="150pt"|CR
 
!width="150pt"|CR
 
!width="150pt"|Conditions
 
!width="150pt"|Conditions
Line 405: Line 346:
  
 
|-
 
|-
| Order || || || || Based in C_Order, C_OrderTax y C_OrderLine (goes to M_RequisitionLine)
+
| Order || || || || Based in C_Order, C_OrderTax and C_OrderLine (goes to M_RequisitionLine)
 
|-
 
|-
 
| Purchase Order (DOC Porder) || || || || update M_Product_PO.PriceLastPO, M_Product_Costing.PriceLastPO
 
| Purchase Order (DOC Porder) || || || || update M_Product_PO.PriceLastPO, M_Product_Costing.PriceLastPO
Line 427: Line 368:
 
|-
 
|-
 
!width="100pt"|Description of Document
 
!width="100pt"|Description of Document
!width="150pt"|DB
+
!width="150pt"|DR
 
!width="150pt"|CR
 
!width="150pt"|CR
 
!width="150pt"|Conditions
 
!width="150pt"|Conditions
Line 437: Line 378:
 
| Receipt (DOC ARR - ARReceipt) || C_BankAccount_Acct -> B_InTransit_Acct || || ||  
 
| Receipt (DOC ARR - ARReceipt) || C_BankAccount_Acct -> B_InTransit_Acct || || ||  
 
|-
 
|-
| || || C_Charge_Acct -> CH_Expense_Acct || if C_Charge_ID <> 0 and amt > 0 ||
+
| || || C_Charge_Acct -> CH_Expense_Acct || if C_Charge_ID <> 0 ||  
|-
 
| || || C_Charge_Acct -> CH_Revenue_Acct || if C_Charge_ID <> 0 and amt < 0 ||  
 
 
|-
 
|-
 
| || || C_BP_Customer_Acct -> C_Prepayment_Acct || if C_Payment.isPrepayment ||  
 
| || || C_BP_Customer_Acct -> C_Prepayment_Acct || if C_Payment.isPrepayment ||  
Line 447: Line 386:
 
| Payment (DOC APP - APPayment) || || || ||  
 
| Payment (DOC APP - APPayment) || || || ||  
 
|-
 
|-
| || C_Charge_Acct -> CH_Expense_Acct || || if C_Charge_ID <> 0 and amt > 0 ||
+
| || C_Charge_Acct -> CH_Expense_Acct || || if C_Charge_ID <> 0 ||  
|-
 
| || C_Charge_Acct -> CH_Revenue_Acct || || if C_Charge_ID <> 0 and amt < 0 ||  
 
 
|-
 
|-
 
| || C_BP_Vendor_Acct -> V_Prepayment_Acct || || if C_Payment.isPrepayment ||  
 
| || C_BP_Vendor_Acct -> V_Prepayment_Acct || || if C_Payment.isPrepayment ||  
Line 463: Line 400:
 
|-
 
|-
 
!width="100pt"|Description of Document
 
!width="100pt"|Description of Document
!width="150pt"|DB
+
!width="150pt"|DR
 
!width="150pt"|CR
 
!width="150pt"|CR
 
!width="150pt"|Conditions
 
!width="150pt"|Conditions
Line 470: Line 407:
  
 
|-
 
|-
| Production || || || || Based in M_Production, M_ProductionPlan y M_ProductionLine
+
| Production || || || || Based in M_Production, M_ProductionPlan and M_ProductionLine
 
|-
 
|-
 
| || M_Product_Acct -> P_Asset_Acct || M_Product_Acct -> P_Asset_Acct || Inventory || cost the BOM or the products
 
| || M_Product_Acct -> P_Asset_Acct || M_Product_Acct -> P_Asset_Acct || Inventory || cost the BOM or the products
Line 484: Line 421:
 
|-
 
|-
 
!width="100pt"|Description of Document
 
!width="100pt"|Description of Document
!width="150pt"|DB
+
!width="150pt"|DR
 
!width="150pt"|CR
 
!width="150pt"|CR
 
!width="150pt"|Conditions
 
!width="150pt"|Conditions
Line 515: Line 452:
 
|-
 
|-
 
!width="100pt"|Description of Document
 
!width="100pt"|Description of Document
!width="70pt"|DB
+
!width="70pt"|DR
 
!width="70pt"|CR
 
!width="70pt"|CR
 
!width="100pt"|Conditions
 
!width="100pt"|Conditions
 
!width="100pt"|Comments
 
!width="100pt"|Comments
 
|-
 
|-
| Requisitions || || || || Based in M_Requisition y M_RequisitionLine
+
| Requisitions || || || || Based in M_Requisition and M_RequisitionLine
 
|-
 
|-
 
| || || || if C_AcctSchema isCreateReservation post this with Reservation type ||  
 
| || || || if C_AcctSchema isCreateReservation post this with Reservation type ||  
Line 533: Line 470:
 
|-
 
|-
 
!width="100pt"|Description of Document
 
!width="100pt"|Description of Document
!width="70pt"|DB
+
!width="70pt"|DR
 
!width="70pt"|CR
 
!width="70pt"|CR
 
!width="200pt"|Conditions
 
!width="200pt"|Conditions
Line 550: Line 487:
 
* [[Accounting_Schema_(Window_ID-125)|Accounting Schema Window]]
 
* [[Accounting_Schema_(Window_ID-125)|Accounting Schema Window]]
  
[[Category:Accounting]]
+
 
 +
[[Category: Financial accounting]]
 +
[[Category: Accounting]]
 +
[[Category: Development]]

Latest revision as of 20:48, 8 June 2023

Contributed by:
Quality Systems & Solutions - QSS Ltda.
Carlos Ruiz

Allocation

Description of Document DR CR Conditions Comments
Payment Based on C_AllocationHdr and C_AllocationLine
Payment Without Invoice if C_Invoice_ID = 0 (no invoice) Payment Only
if C_Payment.C_DocType->DocBaseType
C_BankAccount_Acct -> B_PaymentSelect_Acct DocBaseType=APP
C_BP_Customer_Acct -> C_Prepayment_Acct DocBaseType<>APP and isPrepayment and isReceipt
C_BP_Vendor_Acct -> V_Prepayment_Acct DocBaseType<>APP and isPrepayment
C_BankAccount_Acct -> B_UnallocatedCash_Acct
Receipt Customer Invoice if C_Invoice_ID and isSOTrx iDempiere won't post clearing if C_AcctSchema.isPostIfClearingEqual = N AND (clearing account C_BankAccount_Acct -> B_UnallocatedCash_Acct is equal to C_BP_Customer_Acct -> C_Receivable_Acct)
if C_Payment_ID > 0
C_BankAccount_Acct -> B_PaymentSelect_Acct =APP
C_BP_Customer_Acct -> C_Prepayment_Acct <>APP and isPrepayment and isReceipt
C_BP_Vendor_Acct -> V_Prepayment_Acct <>APP and isPrepayment
C_BankAccount_Acct -> B_UnallocatedCash_Acct else
C_BP_Group_Acct -> PayDiscount_Exp_Acct if there is discount value of DiscountAmt
C_BP_Group_Acct -> WriteOff_Acct if there is writeoff value of WriteOffAmt
C_BP_Customer_Acct -> C_Receivable_Acct if c_acctschema.isAccrual value of AmtSource + DiscountAmt + WriteOffAmt
when the schema is not accrual iDempiere generates different posting in createCashBasedAcct (still not described in this document)
Payment Purchase Invoice iDempiere won't post clearing if C_AcctSchema.isPostIfClearingEqual = N AND (clearing account C_BankAccount_Acct -> B_PaymentSelect_Acct is equal to C_BP_Vendor_Acct -> V_Liability_Acct)
C_BP_Vendor_Acct -> V_Liability_Acct if c_acctschema.isAccrual
if C_Payment_ID > 0
C_BankAccount_Acct -> B_PaymentSelect_Acct =APP
C_BP_Customer_Acct -> C_Prepayment_Acct <>APP and isPrepayment and isReceipt
C_BP_Vendor_Acct -> V_Prepayment_Acct <>APP and isPrepayment
C_BankAccount_Acct -> B_UnallocatedCash_Acct else
C_BP_Group_Acct -> PayDiscount_Rev_Acct if there is discount
C_BP_Group_Acct -> WriteOff_Acct if there is writeoff
Tax Correction Posting if there is invoice and c_acctschema.isTaxCorrection value to correct taxCorrectionAmt depends on isTaxCorrectionDiscount and isTaxCorrectionWriteOff.

To find the value to correct looks in Fact_Acct the posting of that invoice and compares with actual posting

C_BP_Group_Acct -> PayDiscount_Exp_Acct if sales invoice
C_BP_Group_Acct -> PayDiscount_Rev_Acct if purchase invoice
C_BP_Group_Acct -> WriteOff_Acct
acct Against the account used in Fact_Acct to reverse

Movements are DB or CR depending on the sign (negative or positive) or correction

Realized Gain & Loss Posting if there is invoice and payment is in different currency than accounting schema or invoice currency Looks the sum of DB and CR in Fact_Acct of corresponding invoice, find the currency conversion in C_Conversion_Rate for the accounting date and conversion type selected in invoice
C_AcctSchema_Default -> RealizedLoss_Acct C_AcctSchema_Default -> RealizedGain_Acct if sales invoice
acct acct against the account that originally was posted in invoice

Bank

Description of Document DR CR Conditions Comments
Bank Statement Based in C_BankStatement and C_BankStatementLine
Bank Charges C_BankAccount_Acct -> B_Asset_Acct Bank (if debit or credit is determined according to the sign of value StmtAmt)

iDempiere won't post clearing if C_AcctSchema.isPostIfClearingEqual = N AND (clearing account C_BankAccount_Acct -> B_InTransit_Acct is equal to C_BankAccount_Acct -> B_Asset_Acct)
C_BankAccount_Acct -> B_InTransit_Acct Payment (value TrxAmt, DB or CR depending on the sign)
C_Charge_Acct -> CH_Expense_Acct if C_Charge_ID <> 0 value ChargeAmt, DB or CR depending on the sign
C_BankAccount_Acct -> B_InterestExp_Acct C_BankAccount_Acct -> B_InterestExp_Acct if C_BankStatementLine.InterestAmt < 0 DB or CR depending on the sign of the quantity (value InterestAmt)
C_BankAccount_Acct -> B_InterestRev_Acct C_BankAccount_Acct -> B_InterestRev_Acct if C_BankStatementLine.InterestAmt > 0 DB or CR depending on the sign of the quantity

GLJournal

Description of Document DR CR Conditions Comments
GL Journal Based in GL_Journal and GL_JournalLine
Journal GL_JournalLine -> account_id GL_JournalLine -> account_id

InOut (Shipments and Receipts)

Description of Document DR CR Conditions Comments
Shipments and Receipts Based in M_InOut and M_InOutLine
Sales shipment (DOC MatShipment) M_Product_Acct -> P_Cogs_Acct M_Product_Acct -> P_Asset_Acct Sales - Shipment calculates the cost based in M_Cost. If is a product create register in M_CostDetail
Material Receipt (DOC MatReceipt) Purchasing - Receipt calculates the cost based in M_Cost
M_Product_Acct -> P_Expense_Acct if product.isService
M_Product_Acct -> P_Asset_Acct else
C_BP_Group_Acct -> NotInvoicedReceipts_Acct

Inventory

Description of Document DR CR Conditions Comments
Internal Use and Physical Inventory Based in M_Inventory and M_InventoryLine
M_Product_Acct -> P_Asset_Acct calculates the cost based in M_CostDetail
C_Charge_Acct -> CH_Expense_Acct if C_Charge_ID <> 0
M_Warehouse_Acct -> W_Differences_Acct recreate M_CostDetail

Invoice

Description of Document DR CR Conditions Comments
Invoice there is no accounting for not accrual Based in C_Invoice, C_InvoiceTax and C_InvoiceLine
Sales Invoice (Customer) (DOC ARInvoice or ARProForma)
Header Charge
C_Charge_Acct -> CH_Expense_Acct if C_Charge_ID <> 0
C_Tax_Acct -> T_Due_Acct for each tax
Revenue
M_Product_Acct -> P_Revenue_Acct if c_acctschema.isTradeDiscountPosted use the price list, otherwise use the price
M_Product_Acct -> P_TradeDiscountGrant_Acct if c_acctschema.isTradeDiscountPosted post the discount here
C_BP_Group_Acct -> UnearnedRevenue_Acct if involved product in invoice has defined revenue recognition plan, it changes (in FactLine.beforesave) the account P_Revenue by the account defined in the product and creates a record in C_RevenueRecognition_Plan
Receivables
C_BP_Customer_Acct -> C_Receivable_Acct post the value of products
Credit Note (Customer) (DOC ARCredit)
Header Charge
C_Charge_Acct -> CH_Expense_Acct if C_Charge_ID <> 0
C_Tax_Acct -> T_Due_Acct for each tax
Revenue
M_Product_Acct -> P_Revenue_Acct if c_acctschema.isTradeDiscountPosted use the price list, otherwise use the price
M_Product_Acct -> P_TradeDiscountGrant_Acct if c_acctschema.isTradeDiscountPosted post the discount here
Receivables
C_BP_Customer_Acct -> C_Receivable_Acct post the value of products
Purchase Invoice (Vendor) (DOC APInvoice)
C_Charge_Acct -> CH_Expense_Acct if C_Charge_ID <> 0
C_Tax_Acct -> T_Credit_Acct o T_Expense_Acct (if sales tax) for each tax
M_Product_Acct -> P_Expense_Acct M_Product_Acct -> P_Expense_Acct Expense, if C_AcctSchema.isExplicitCostAdjustment calculates the cost based in M_CostDetail
M_Product_Acct -> P_InventoryClearing_Acct if item
M_Product_Acct -> P_Expense_Acct if non-item
M_Product_Acct -> P_TradeDiscountRec_Acct if c_acctschema.isTradeDiscountPosted post the discount here and use the price list for the expense or clearing
Liability
C_BP_Vendor_Acct -> V_Liability_Acct
Credit Note (Vendor) (DOC APCredit)
C_Charge_Acct -> CH_Expense_Acct if C_Charge_ID <> 0
C_Tax_Acct -> T_Credit_Acct o T_Expense_Acct (if sales tax) TaxCredit
M_Product_Acct -> P_Expense_Acct M_Product_Acct -> P_Expense_Acct Expense, if C_AcctSchema.isExplicitCostAdjustment calculates the cost based in M_CostDetail
M_Product_Acct -> P_InventoryClearing_Acct if item
M_Product_Acct -> P_Expense_Acct if non-item
M_Product_Acct -> P_TradeDiscountRec_Acct if c_acctschema.isTradeDiscountPosted post the discount here and use the price list for the expense or clearing
Liability
C_BP_Vendor_Acct -> V_Liability_Acct
Landed Cost Posting M_Product_Acct -> P_CostAdjustment_Acct
M_Product_Acct -> P_Expense_Acct
M_Product_Acct -> P_InventoryClearing_Acct

MatchInv

Description of Document DR CR Conditions Comments
Match Invoice Based in M_MatchInv, C_InvoiceLine and M_InOutLine
C_BP_Group_Acct -> NotInvoicedReceipts_Acct iDempiere won't post clearing if C_AcctSchema.isPostIfClearingEqual = N AND (clearing account C_BP_Group_Acct -> NotInvoicedReceipts_Acct is equal to M_Product_Acct -> P_InventoryClearing_Acct)
if isAccrual
M_Product_Acct -> P_InventoryClearing_Acct if item
M_Product_Acct -> P_Expense_Acct if non-item
when the schema is not accrual iDempiere generates different posting in createCashBasedAcct (still not described in this document)
M_Product_Acct -> P_InvoicePriceVariance_Acct Invoice Price Variance difference Update M_Product_Costing
Commitment release
if isAccrual and isCreateCommitment
M_Product_Acct -> P_Expense_Acct for each commitment, this is each C_OrderLine that matches with an C_InvoiceLine or with a M_MatchPO
C_AcctSchema_GL -> CommitmentOffset_Acct


MatchPO

Description of Document DR CR Conditions Comments
Match Purchase Order Just for standard costing
iDempiere won't post this if C_AcctSchema.isPostIfClearingEqual = N AND (clearing account M_Product_Acct -> P_PurchasePriceVariance_Acct is equal to C_AcctSchema_GL -> PPVOffset_Acct)
M_Product_Acct -> P_PurchasePriceVariance_Acct C_AcctSchema_GL -> PPVOffset_Acct post the difference between the cost of the order line vs the standard cost


Movement

Description of Document DR CR Conditions Comments
Inventory Movement Based in M_Movement and M_MovementLine
M_Product_Acct -> P_Asset_Acct M_Product_Acct -> P_Asset_Acct Inventory DB or CR depending on thevalue, moving from a locator to another in accounting dimension
if there was movement between organizations and the costing level in C_AcctSchema is organización then it creates movements in M_CostDetail


Order

Description of Document DR CR Conditions Comments
Order Based in C_Order, C_OrderTax and C_OrderLine (goes to M_RequisitionLine)
Purchase Order (DOC Porder) update M_Product_PO.PriceLastPO, M_Product_Costing.PriceLastPO
if C_AcctSchema,isCreateCommitment post this with Commityment Type (to be released by Invoice Matching)
M_Product_Acct -> P_Expense_Acct
C_AcctSchema_GL -> CommitmentOffset_Acct
if C_AcctSchema.isCreateReservation post this with Reservation Type (Release reservation)
M_Product_Acct -> P_Expense_Acct
C_AcctSchema_GL -> CommitmentOffset_Acct

Payment

Description of Document DR CR Conditions Comments
Payment Based in C_Payment
Receipt (DOC ARR - ARReceipt) C_BankAccount_Acct -> B_InTransit_Acct
C_Charge_Acct -> CH_Expense_Acct if C_Charge_ID <> 0
C_BP_Customer_Acct -> C_Prepayment_Acct if C_Payment.isPrepayment
C_BankAccount_Acct -> B_UnallocatedCash_Acct else
Payment (DOC APP - APPayment)
C_Charge_Acct -> CH_Expense_Acct if C_Charge_ID <> 0
C_BP_Vendor_Acct -> V_Prepayment_Acct if C_Payment.isPrepayment
C_BankAccount_Acct -> B_PaymentSelect_Acct else
C_BankAccount_Acct -> B_InTransit_Acct

Production

Description of Document DR CR Conditions Comments


Production Based in M_Production, M_ProductionPlan and M_ProductionLine
M_Product_Acct -> P_Asset_Acct M_Product_Acct -> P_Asset_Acct Inventory cost the BOM or the products



ProjectIssue

Description of Document DR CR Conditions Comments


Project Issue Based in C_ProjectIssue
if the project has M_InOutLine it calculates the cost of products from M_InOutLine, C_Order and C_OrderLine

otherwise verifies if the project has S_TimeExpenseLine and calculates the cost of services (look out /** TODO Labor Cost */)
otherwise, it calculates the normal cost of products

C_Project_Acct -> PJ_WIP_Acct
C_Project_Acct -> PJ_Asset_Acct if project category is AssetProject (A)
M_Product_Acct -> P_Expense_Acct if product.isService
M_Product_Acct -> P_Asset_Acct else



Requisition

Description of Document DR CR Conditions Comments
Requisitions Based in M_Requisition and M_RequisitionLine
if C_AcctSchema isCreateReservation post this with Reservation type
M_Product_Acct -> P_Expense_Acct
C_AcctSchema_GL -> CommitmentOffset_Acct

General Fact

Description of Document DR CR Conditions Comments
All documents inter organization C_AcctSchema_GL -> InterCompanyDueFrom_Acct C_AcctSchema_GL -> InterCompanyDueTo_Acct Posted when the accounting by organization must be balanced and transaction involves more than one organization
All documents with currencies unbalanced C_AcctSchema_GL -> CurrencyBalancing_Acct If the GL schema is marked as currency balancing
All documents unbalanced C_AcctSchema_GL -> SuspenseBalancing_Acct If the GL schema is marked as use suspense balancing - it's posted when the document is unbalanced

See also

See also:

Cookies help us deliver our services. By using our services, you agree to our use of cookies.