IDempiere Accounting

From iDempiere en

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.