Difference between revisions of "ADempiere Accounting"
From ADempiere
This Wiki is read-only for reference purposes to avoid broken links.
(→Movement) |
m |
||
(31 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
− | |||
− | |||
Contributed by:<br> | Contributed by:<br> | ||
Quality Systems & Solutions - QSS Ltda.<br> | Quality Systems & Solutions - QSS Ltda.<br> | ||
Line 6: | Line 4: | ||
== Allocation == | == Allocation == | ||
+ | {| border="1" | ||
+ | |- | ||
+ | !width="100pt"|Description of Document | ||
+ | !width="150pt"|DR | ||
+ | !width="150pt"|CR | ||
+ | !width="150pt"|Conditions | ||
+ | !width="200pt"|Comments | ||
+ | |||
+ | |- | ||
+ | | Payment || || || || Based on C_AllocationHdr y C_AllocationLine | ||
+ | |- | ||
+ | | 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_BP_Customer_Acct -> C_Prepayment_Acct || || DocBaseType<>APP and isPrepayment and isReceipt || [[File:C_Prepayment_Acct.jpeg]] | ||
+ | |- | ||
+ | | || C_BP_Vendor_Acct -> V_Prepayment_Acct || || DocBaseType<>APP and isPrepayment || [[File:V_Prepayment_Acct.jpeg]] | ||
+ | |- | ||
+ | | || || C_BankAccount_Acct -> B_UnallocatedCash_Acct || || [[File:B_UnallocatedCash_Acct.jpeg]] | ||
+ | |- | ||
+ | | 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) | ||
+ | |- | ||
+ | | || || || 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_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 -> 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 Adempiere 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) | ||
+ | |- | ||
+ | | || 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_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 -> 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.<br> | ||
+ | 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<br> | ||
+ | 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 == | == Bank == | ||
+ | {| border="1" | ||
+ | |- | ||
+ | !width="100pt"|Description of Document | ||
+ | !width="150pt"|DB | ||
+ | !width="150pt"|CR | ||
+ | !width="150pt"|Conditions | ||
+ | !width="200pt"|Comments | ||
+ | |||
+ | |- | ||
+ | | Bank Statement || || || || Based in C_BankStatement y 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) | ||
+ | |- | ||
+ | | || || 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_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_InterestRev_Acct || C_BankAccount_Acct -> B_InterestRev_Acct || if C_BankStatementLine.InterestAmt > 0 || DB or CR depending on the sign of the quantity | ||
+ | |||
+ | |} | ||
== Cash == | == Cash == | ||
+ | {| border="1" | ||
+ | |- | ||
+ | !width="100pt"|Description of Document | ||
+ | !width="150pt"|DB | ||
+ | !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 | ||
+ | |||
+ | |} | ||
== GLJournal == | == GLJournal == | ||
+ | {| border="1" | ||
+ | |- | ||
+ | !width="100pt"|Description of Document | ||
+ | !width="150pt"|DB | ||
+ | !width="150pt"|CR | ||
+ | !width="150pt"|Conditions | ||
+ | !width="200pt"|Comments | ||
− | == InOut ( | + | |- |
+ | | GL Journal || || || || Based in GL_Journal y GL_JournalLine | ||
+ | |- | ||
+ | | Journal || GL_JournalLine -> account_id || GL_JournalLine -> account_id || || | ||
+ | |||
+ | |} | ||
+ | |||
+ | == InOut (Shipments and Receipts) == | ||
+ | {| border="1" | ||
+ | |- | ||
+ | !width="100pt"|Description of Document | ||
+ | !width="150pt"|DB | ||
+ | !width="150pt"|CR | ||
+ | !width="150pt"|Conditions | ||
+ | !width="200pt"|Comments | ||
+ | |||
+ | |- | ||
+ | | Shipments and Receipts || || || || Based in M_InOut y 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 == | == Inventory == | ||
+ | {| border="1" | ||
+ | |- | ||
+ | !width="100pt"|Description of Document | ||
+ | !width="150pt"|DB | ||
+ | !width="150pt"|CR | ||
+ | !width="150pt"|Conditions | ||
+ | !width="200pt"|Comments | ||
+ | |||
+ | |- | ||
+ | | Internal Use and Physical Inventory || || || || Based in M_Inventory y 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 and amt > 0 || | ||
+ | |- | ||
+ | | || || C_Charge_Acct -> CH_Revenue_Acct || if C_Charge_ID <> 0 and amt < 0 || | ||
+ | |- | ||
+ | | || || M_Warehouse_Acct -> W_Differences_Acct || || recreate M_CostDetail | ||
+ | |||
+ | |} | ||
== Invoice == | == Invoice == | ||
+ | {| border="1" | ||
+ | |- | ||
+ | !width="100pt"|Description of Document | ||
+ | !width="150pt"|DB | ||
+ | !width="150pt"|CR | ||
+ | !width="150pt"|Conditions | ||
+ | !width="200pt"|Comments | ||
+ | |||
+ | |- | ||
+ | | Invoice || || || there is no accounting for not accrual || Based in C_Invoice, C_InvoiceTax y C_InvoiceLine | ||
+ | |- | ||
+ | | Sales Invoice (Customer) (DOC ARInvoice or ARProForma) || || || || | ||
+ | |- | ||
+ | | || || || Header Charge || | ||
+ | |- | ||
+ | | || || 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 || | ||
+ | |- | ||
+ | | || || 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 | ||
+ | |- | ||
+ | | || 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) || || || || | ||
+ | |- | ||
+ | | || || || Header Charge || | ||
+ | |- | ||
+ | | || 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 || | ||
+ | |- | ||
+ | | || 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 | ||
+ | |- | ||
+ | | || || 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) || || || || | ||
+ | |- | ||
+ | | || 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 || | ||
+ | |- | ||
+ | | || 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 || || | ||
+ | |- | ||
+ | | || || 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) || || || || | ||
+ | |- | ||
+ | | || || 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 || | ||
+ | |- | ||
+ | | || || 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 || || | ||
+ | |- | ||
+ | | || || 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 || || || | ||
+ | |- | ||
+ | | || || M_Product_Acct -> P_Expense_Acct || || | ||
+ | |- | ||
+ | | || || M_Product_Acct -> P_InventoryClearing_Acct || || | ||
+ | |||
+ | |} | ||
== MatchInv == | == MatchInv == | ||
+ | {| border="1" | ||
+ | |- | ||
+ | !width="100pt"|Description of Document | ||
+ | !width="150pt"|DB | ||
+ | !width="150pt"|CR | ||
+ | !width="150pt"|Conditions | ||
+ | !width="200pt"|Comments | ||
+ | |||
+ | |- | ||
+ | | Match Inventory || || || || Based in M_MatchInv, C_InvoiceLine y 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) | ||
+ | |- | ||
+ | | || || || 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 Adempiere 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 y 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 == | == MatchPO == | ||
+ | {| border="1" | ||
+ | |- | ||
+ | !width="100pt"|Description of Document | ||
+ | !width="150pt"|DB | ||
+ | !width="150pt"|CR | ||
+ | !width="150pt"|Conditions | ||
+ | !width="200pt"|Comments | ||
+ | |||
+ | |- | ||
+ | | 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) | ||
+ | |- | ||
+ | | || 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 == | == Movement == | ||
Line 148: | Line 500: | ||
| || C_Project_Acct -> PJ_WIP_Acct || || || | | || C_Project_Acct -> PJ_WIP_Acct || || || | ||
|- | |- | ||
− | | || C_Project_Acct -> PJ_Asset_Acct || || if | + | | || 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_Expense_Acct || if product.isService || | ||
Line 195: | Line 547: | ||
== Default Accounts Usage== | == Default Accounts Usage== | ||
See also [[Default_Accounts_Usage]] | See also [[Default_Accounts_Usage]] | ||
+ | |||
+ | [[Category:Accounting]] |
Latest revision as of 11:07, 23 December 2010
Contributed by:
Quality Systems & Solutions - QSS Ltda.
Carlos Ruiz
Contents
Allocation
Bank
Description of Document | DB | CR | Conditions | Comments |
---|---|---|---|---|
Bank Statement | Based in C_BankStatement y C_BankStatementLine | |||
Bank Charges | C_BankAccount_Acct -> B_Asset_Acct | Bank (if debit or credit is determined according to the sign of value StmtAmt) 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) | ||
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_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_InterestRev_Acct | C_BankAccount_Acct -> B_InterestRev_Acct | if C_BankStatementLine.InterestAmt > 0 | DB or CR depending on the sign of the quantity |
Cash
Description of Document | DB | CR | Conditions | 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 |
GLJournal
Description of Document | DB | CR | Conditions | Comments |
---|---|---|---|---|
GL Journal | Based in GL_Journal y GL_JournalLine | |||
Journal | GL_JournalLine -> account_id | GL_JournalLine -> account_id |
InOut (Shipments and Receipts)
Description of Document | DB | CR | Conditions | Comments |
---|---|---|---|---|
Shipments and Receipts | Based in M_InOut y 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 | DB | CR | Conditions | Comments |
---|---|---|---|---|
Internal Use and Physical Inventory | Based in M_Inventory y 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 and amt > 0 | |||
C_Charge_Acct -> CH_Revenue_Acct | if C_Charge_ID <> 0 and amt < 0 | |||
M_Warehouse_Acct -> W_Differences_Acct | recreate M_CostDetail |
Invoice
Description of Document | DB | CR | Conditions | Comments |
---|---|---|---|---|
Invoice | there is no accounting for not accrual | Based in C_Invoice, C_InvoiceTax y C_InvoiceLine | ||
Sales Invoice (Customer) (DOC ARInvoice or ARProForma) | ||||
Header Charge | ||||
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 | |||
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 | |||
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) | ||||
Header Charge | ||||
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 | |||
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 | |||
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) | ||||
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 | |||
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 | ||||
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) | ||||
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 | |||
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 | ||||
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 | |||
M_Product_Acct -> P_Expense_Acct | ||||
M_Product_Acct -> P_InventoryClearing_Acct |
MatchInv
Description of Document | DB | CR | Conditions | Comments |
---|---|---|---|---|
Match Inventory | Based in M_MatchInv, C_InvoiceLine y 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) | |||
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 Adempiere 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 y 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 | DB | CR | Conditions | Comments |
---|---|---|---|---|
Match Purchase Order | Just for standard costing 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) | |||
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 | DB | CR | Conditions | Comments |
---|---|---|---|---|
Inventory Movement | Based in M_Movement y 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 | DB | CR | Conditions | Comments |
---|---|---|---|---|
Order | Based in C_Order, C_OrderTax y 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 | DB | 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 and amt > 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_BankAccount_Acct -> B_UnallocatedCash_Acct | else | |||
Payment (DOC APP - APPayment) | ||||
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 | |||
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 | DB | CR | Conditions | Comments
|
---|---|---|---|---|
Production | Based in M_Production, M_ProductionPlan y 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 | DB | 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 */) | ||||
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 | DB | CR | Conditions | Comments |
---|---|---|---|---|
Requisitions | Based in M_Requisition y 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 | DB | 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 |
Default Accounts Usage
See also Default_Accounts_Usage