Class Doc

java.lang.Object
org.compiere.acct.Doc
Direct Known Subclasses:
Doc_AllocationHdr, Doc_AssetAddition, Doc_AssetDisposed, Doc_AssetReval, Doc_AssetTransfer, Doc_BankStatement, Doc_Cash, Doc_DepreciationEntry, Doc_GLJournal, Doc_InOut, Doc_Inventory, Doc_Invoice, Doc_MatchInv, Doc_MatchPO, Doc_Movement, Doc_Order, Doc_Payment, Doc_Production, Doc_ProjectIssue, Doc_Requisition

public abstract class Doc extends Object
Abstract base class for posting of accounting document.
  Table               Base Document Types (C_DocType.DocBaseType and AD_Reference_ID=183)
      Class           AD_Table_ID
  ------------------  ------------------------------
  C_Invoice:          ARI, ARC, ARF, API, APC
      Doc_Invoice     318 - has C_DocType_ID

  C_Payment:          ARP, APP
      Doc_Payment     335 - has C_DocType_ID

  C_Order:            SOO, POO,  POR (Requisition)
      Doc_Order       259 - has C_DocType_ID

  M_InOut:            MMS, MMR
      Doc_InOut       319 - DocType derived

  M_Inventory:        MMI
      Doc_Inventory   321 - DocType fixed

  M_Movement:         MMM
      Doc_Movement    323 - DocType fixed

  M_Production:       MMP
      Doc_Production  325 - DocType fixed

 M_Production:        MMO
      Doc_CostCollector  330 - DocType fixed

  C_BankStatement:    CMB
      Doc_Bank        392 - DocType fixed

  C_Cash:             CMC
      Doc_Cash        407 - DocType fixed

  C_Allocation:       CMA
      Doc_Allocation  390 - DocType fixed

  GL_Journal:         GLJ
      Doc_GLJournal   224 = has C_DocType_ID

  Matching Invoice    MXI
      M_MatchInv      472 - DocType fixed

  Matching PO         MXP
      M_MatchPO       473 - DocType fixed

        Project Issue           PJI
                C_ProjectIssue  623 - DocType fixed

  
Version:
$Id: Doc.java,v 1.6 2006/07/30 00:53:33 jjanke Exp $
Author:
Jorg Janke, victor.perez@e-evolution.com, e-Evolution http://www.e-evolution.com
  • FR [ 2520591 ] Support multiples calendar for Org
    • Field Details

      • DOC_TYPE_BY_DOC_BASE_TYPE_SQL

        public static final String DOC_TYPE_BY_DOC_BASE_TYPE_SQL
        Document Types -------------- C_DocType.DocBaseType and AD_Reference_ID=183 C_Invoice: ARI, ARC, ARF, API, APC C_Payment: ARP, APP C_Order: SOO, POO M_Transaction: MMI, MMM, MMS, MMR C_BankStatement: CMB C_Cash: CMC C_Allocation: CMA GL_Journal: GLJ C_ProjectIssue PJI M_Requisition POR
        See Also:
      • DOCTYPE_ARInvoice

        public static final String DOCTYPE_ARInvoice
        AR Invoices - ARI
        See Also:
      • DOCTYPE_ARCredit

        public static final String DOCTYPE_ARCredit
        AR Credit Memo
        See Also:
      • DOCTYPE_ARReceipt

        public static final String DOCTYPE_ARReceipt
        AR Receipt
        See Also:
      • DOCTYPE_ARProForma

        public static final String DOCTYPE_ARProForma
        AR ProForma
        See Also:
      • DOCTYPE_APInvoice

        public static final String DOCTYPE_APInvoice
        AP Invoices
        See Also:
      • DOCTYPE_APCredit

        public static final String DOCTYPE_APCredit
        AP Credit Memo
        See Also:
      • DOCTYPE_APPayment

        public static final String DOCTYPE_APPayment
        AP Payment
        See Also:
      • DOCTYPE_BankStatement

        public static final String DOCTYPE_BankStatement
        CashManagement Bank Statement
        See Also:
      • DOCTYPE_CashJournal

        public static final String DOCTYPE_CashJournal
        CashManagement Cash Journals
        See Also:
      • DOCTYPE_Allocation

        public static final String DOCTYPE_Allocation
        CashManagement Allocations
        See Also:
      • DOCTYPE_MatShipment

        public static final String DOCTYPE_MatShipment
        Material Shipment
        See Also:
      • DOCTYPE_MatReceipt

        public static final String DOCTYPE_MatReceipt
        Material Receipt
        See Also:
      • DOCTYPE_MatInventory

        public static final String DOCTYPE_MatInventory
        Material Inventory
        See Also:
      • DOCTYPE_MatMovement

        public static final String DOCTYPE_MatMovement
        Material Movement
        See Also:
      • DOCTYPE_MatProduction

        public static final String DOCTYPE_MatProduction
        Material Production
        See Also:
      • DOCTYPE_MatMatchInv

        public static final String DOCTYPE_MatMatchInv
        Match Invoice
        See Also:
      • DOCTYPE_MatMatchPO

        public static final String DOCTYPE_MatMatchPO
        Match PO
        See Also:
      • DOCTYPE_GLJournal

        public static final String DOCTYPE_GLJournal
        GL Journal
        See Also:
      • DOCTYPE_POrder

        public static final String DOCTYPE_POrder
        Purchase Order
        See Also:
      • DOCTYPE_SOrder

        public static final String DOCTYPE_SOrder
        Sales Order
        See Also:
      • DOCTYPE_ProjectIssue

        public static final String DOCTYPE_ProjectIssue
        Project Issue
        See Also:
      • DOCTYPE_PurchaseRequisition

        public static final String DOCTYPE_PurchaseRequisition
        Purchase Requisition
        See Also:
      • STATUS_NotPosted

        public static final String STATUS_NotPosted
        Document Status
        See Also:
      • STATUS_NotBalanced

        public static final String STATUS_NotBalanced
        Document Status
        See Also:
      • STATUS_NotConvertible

        public static final String STATUS_NotConvertible
        Document Status
        See Also:
      • STATUS_PeriodClosed

        public static final String STATUS_PeriodClosed
        Document Status
        See Also:
      • STATUS_InvalidAccount

        public static final String STATUS_InvalidAccount
        Document Status
        See Also:
      • STATUS_PostPrepared

        public static final String STATUS_PostPrepared
        Document Status
        See Also:
      • STATUS_Posted

        public static final String STATUS_Posted
        Document Status
        See Also:
      • STATUS_Error

        public static final String STATUS_Error
        Document Status
        See Also:
      • STATUS_Deferred

        public static final String STATUS_Deferred
        Document Status
        See Also:
      • s_log

        protected static final CLogger s_log
        Static Log
      • log

        protected transient CLogger log
        Log per Document
      • p_po

        protected PO p_po
        The Document
      • p_lines

        protected DocLine[] p_lines
        Contained Doc Lines
      • NO_CURRENCY

        protected static final int NO_CURRENCY
        No Currency in Document Indicator (-1)
        See Also:
      • p_Status

        protected String p_Status
        Actual Document Status
      • p_Error

        protected String p_Error
        Error Message
      • AMTTYPE_Gross

        public static final int AMTTYPE_Gross
        Amount Type - Invoice - Gross
        See Also:
      • AMTTYPE_Net

        public static final int AMTTYPE_Net
        Amount Type - Invoice - Net
        See Also:
      • AMTTYPE_Charge

        public static final int AMTTYPE_Charge
        Amount Type - Invoice - Charge
        See Also:
      • ACCTTYPE_Charge

        public static final int ACCTTYPE_Charge
        Account Type - Invoice - Charge
        See Also:
      • ACCTTYPE_C_Receivable

        public static final int ACCTTYPE_C_Receivable
        Account Type - Invoice - AR
        See Also:
      • ACCTTYPE_V_Liability

        public static final int ACCTTYPE_V_Liability
        Account Type - Invoice - AP
        See Also:
      • ACCTTYPE_V_Liability_Services

        public static final int ACCTTYPE_V_Liability_Services
        Account Type - Invoice - AP Service
        See Also:
      • ACCTTYPE_C_Receivable_Services

        public static final int ACCTTYPE_C_Receivable_Services
        Account Type - Invoice - AR Service
        See Also:
      • ACCTTYPE_UnallocatedCash

        public static final int ACCTTYPE_UnallocatedCash
        Account Type - Payment - Unallocated
        See Also:
      • ACCTTYPE_BankInTransit

        public static final int ACCTTYPE_BankInTransit
        Account Type - Payment - Transfer
        See Also:
      • ACCTTYPE_PaymentSelect

        public static final int ACCTTYPE_PaymentSelect
        Account Type - Payment - Selection
        See Also:
      • ACCTTYPE_C_Prepayment

        public static final int ACCTTYPE_C_Prepayment
        Account Type - Payment - Prepayment
        See Also:
      • ACCTTYPE_V_Prepayment

        public static final int ACCTTYPE_V_Prepayment
        Account Type - Payment - Prepayment
        See Also:
      • ACCTTYPE_CashAsset

        public static final int ACCTTYPE_CashAsset
        Account Type - Cash - Asset
        See Also:
      • ACCTTYPE_CashTransfer

        public static final int ACCTTYPE_CashTransfer
        Account Type - Cash - Transfer
        See Also:
      • ACCTTYPE_CashExpense

        public static final int ACCTTYPE_CashExpense
        Account Type - Cash - Expense
        See Also:
      • ACCTTYPE_CashReceipt

        public static final int ACCTTYPE_CashReceipt
        Account Type - Cash - Receipt
        See Also:
      • ACCTTYPE_CashDifference

        public static final int ACCTTYPE_CashDifference
        Account Type - Cash - Difference
        See Also:
      • ACCTTYPE_DiscountExp

        public static final int ACCTTYPE_DiscountExp
        Account Type - Allocation - Discount Expense (AR)
        See Also:
      • ACCTTYPE_DiscountRev

        public static final int ACCTTYPE_DiscountRev
        Account Type - Allocation - Discount Revenue (AP)
        See Also:
      • ACCTTYPE_WriteOff

        public static final int ACCTTYPE_WriteOff
        Account Type - Allocation - Write Off
        See Also:
      • ACCTTYPE_BankAsset

        public static final int ACCTTYPE_BankAsset
        Account Type - Bank Statement - Asset
        See Also:
      • ACCTTYPE_InterestRev

        public static final int ACCTTYPE_InterestRev
        Account Type - Bank Statement - Interest Revenue
        See Also:
      • ACCTTYPE_InterestExp

        public static final int ACCTTYPE_InterestExp
        Account Type - Bank Statement - Interest Exp
        See Also:
      • ACCTTYPE_InvDifferences

        public static final int ACCTTYPE_InvDifferences
        Inventory Accounts - Differences
        See Also:
      • ACCTTYPE_NotInvoicedReceipts

        public static final int ACCTTYPE_NotInvoicedReceipts
        Inventory Accounts - NIR
        See Also:
      • ACCTTYPE_ProjectAsset

        public static final int ACCTTYPE_ProjectAsset
        Project Accounts - Assets
        See Also:
      • ACCTTYPE_ProjectWIP

        public static final int ACCTTYPE_ProjectWIP
        Project Accounts - WIP
        See Also:
      • ACCTTYPE_PPVOffset

        public static final int ACCTTYPE_PPVOffset
        GL Accounts - PPV Offset
        See Also:
      • ACCTTYPE_CommitmentOffset

        public static final int ACCTTYPE_CommitmentOffset
        GL Accounts - Commitment Offset
        See Also:
      • ACCTTYPE_CommitmentOffsetSales

        public static final int ACCTTYPE_CommitmentOffsetSales
        GL Accounts - Commitment Offset Sales
        See Also:
    • Constructor Details

      • Doc

        public Doc(MAcctSchema as, Class<?> clazz, ResultSet rs, String defaultDocumentType, String trxName)
        Constructor
        Parameters:
        as - accounting schema
        clazz - Document Class
        rs - result set
        defaultDocumentType - default document type or null
        trxName - trx
    • Method Details

      • get

        public static Doc get(MAcctSchema as, int AD_Table_ID, int Record_ID, String trxName)
        Create Posting document
        Parameters:
        as - accounting schema
        AD_Table_ID - Table ID of Documents
        Record_ID - record ID to load
        trxName - transaction name
        Returns:
        new Posting Document instance or null
      • get

        public static Doc get(MAcctSchema as, int AD_Table_ID, ResultSet rs, String trxName)
        Create Posting document
        Parameters:
        as - accounting schema
        AD_Table_ID - Table ID of Documents
        rs - ResultSet
        trxName - transaction name
        Returns:
        new Posting Document instance or null
        Throws:
        AdempiereUserError
      • postImmediate

        public static String postImmediate(MAcctSchema[] ass, int AD_Table_ID, int Record_ID, boolean force, String trxName)
        Post document immediately
        Parameters:
        ass - accounting schema
        AD_Table_ID - Transaction table
        Record_ID - Record ID of this document
        force - force posting
        trxName - transaction
        Returns:
        null if the document was posted or error message
      • manualPosting

        public static String manualPosting(int WindowNo, int AD_Client_ID, int AD_Table_ID, int Record_ID, boolean force)
        Manual posting by user
        Parameters:
        WindowNo -
        AD_Client_ID -
        AD_Table_ID -
        Record_ID -
        force -
        Returns:
        error message ( if any )
      • getPostStatus

        public String getPostStatus()
      • getCtx

        public Properties getCtx()
        Get Context
        Returns:
        context
      • get_TableName

        public String get_TableName()
        Get Table Name
        Returns:
        table name
      • get_Table_ID

        public int get_Table_ID()
        Get Table ID
        Returns:
        table id
      • get_ID

        public int get_ID()
        Get Record_ID
        Returns:
        record id
      • getPO

        public PO getPO()
        Get Persistent Object
        Returns:
        po
      • post

        public final String post(boolean force, boolean repost)
        Post Document.
          - try to lock document (Processed='Y' (AND Processing='N' AND Posted='N'))
               - if not ok - return false
                  - postlogic (for all Accounting Schema)
                      - create Fact lines
                  - postCommit
                      - commits Fact lines and Document and sets Processing = 'N'
                      - if error - create Note
          
        Parameters:
        force - if true ignore that locked
        repost - if true ignore that already posted
        Returns:
        error message or null
      • deleteAcct

        protected int deleteAcct()
        Delete fact records
        Returns:
        number of records deleted
      • getTrxName

        public String getTrxName()
        Get Trx Name
        Returns:
        Trx Name
      • getDocumentType

        public String getDocumentType()
        Load Document Type and GL Info. Set p_DocumentType and p_GL_Category_ID
        Returns:
        document type (i.e. C_DocType.DocBaseType)
      • setDocumentType

        public void setDocumentType(String DocumentType)
        Load Document Type and GL Info. Set p_DocumentType and p_GL_Category_ID
        Parameters:
        DocumentType -
      • isBalanced

        public boolean isBalanced()
        Is the Source Document Balanced
        Returns:
        true if (source) balanced
      • isConvertible

        public boolean isConvertible(MAcctSchema acctSchema)
        Is Document convertible to currency and Conversion Type
        Parameters:
        acctSchema - accounting schema
        Returns:
        true, if convertible to accounting currency
      • setPeriod

        public void setPeriod()
        Calculate Period from DateAcct. m_C_Period_ID is set to -1 if not open, to 0 if not found
      • getC_Period_ID

        public int getC_Period_ID()
        Get C_Period_ID
        Returns:
        C_Period_ID
      • isPeriodOpen

        public boolean isPeriodOpen()
        Is Period Open
        Returns:
        true if period is open
      • getAmount

        public BigDecimal getAmount(int AmtType)
        Get the Amount (loaded in loadDocumentDetails)
        Parameters:
        AmtType - see AMTTYPE_*
        Returns:
        Amount
      • setAmount

        public void setAmount(int AmtType, BigDecimal amt)
        Set the Amount
        Parameters:
        AmtType - see AMTTYPE_*
        amt - Amount
      • getAmount

        public BigDecimal getAmount()
        Get Amount with index 0
        Returns:
        Amount (primary document amount)
      • setQty

        public void setQty(BigDecimal qty)
        Set Quantity
        Parameters:
        qty - Quantity
      • getQty

        public BigDecimal getQty()
        Get Quantity
        Returns:
        Quantity
      • getValidCombination_ID

        public int getValidCombination_ID(int AcctType, MAcctSchema as)
        Get valid combination id by account type and accounting schema
        Parameters:
        AcctType - see ACCTTYPE_*
        as - accounting schema
        Returns:
        C_ValidCombination_ID
      • getAccount

        public final MAccount getAccount(int AcctType, MAcctSchema as)
        Get account record by accounting schema and account type
        Parameters:
        AcctType - see ACCTTYPE_*
        as - accounting schema
        Returns:
        MAccount
      • getDocLine

        public DocLine getDocLine(int Record_ID)
        Get DocLine with ID
        Parameters:
        Record_ID - Record ID
        Returns:
        DocLine
      • toString

        public String toString()
        String Representation
        Overrides:
        toString in class Object
        Returns:
        String
      • getAD_Client_ID

        public int getAD_Client_ID()
        Get AD_Client_ID
        Returns:
        AD_Client_ID
      • getAD_Org_ID

        public int getAD_Org_ID()
        Get AD_Org_ID
        Returns:
        AD_Org_ID
      • getDocumentNo

        public String getDocumentNo()
        Get Document No
        Returns:
        document No
      • getDescription

        public String getDescription()
        Get Description
        Returns:
        Description
      • getC_Currency_ID

        public int getC_Currency_ID()
        Get C_Currency_ID
        Returns:
        C_Currency_ID
      • setC_Currency_ID

        public void setC_Currency_ID(int C_Currency_ID)
        Set C_Currency_ID
        Parameters:
        C_Currency_ID - id
      • isMultiCurrency

        public boolean isMultiCurrency()
        Is Multi Currency
        Returns:
        mc
      • setIsMultiCurrency

        public void setIsMultiCurrency(boolean mc)
        Set Multi Currency
        Parameters:
        mc - multi currency
      • isTaxIncluded

        public boolean isTaxIncluded()
        Is Tax Included
        Returns:
        tax incl
      • setIsTaxIncluded

        public void setIsTaxIncluded(boolean ti)
        Set Tax Included
        Parameters:
        ti - Tax Included
      • getC_ConversionType_ID

        public int getC_ConversionType_ID()
        Get C_ConversionType_ID
        Returns:
        C_ConversionType_ID
      • getCurrencyRate

        public BigDecimal getCurrencyRate()
        Returns:
        currency rate or null
      • getGL_Category_ID

        public int getGL_Category_ID()
        Get GL_Category_ID
        Returns:
        GL_Category_ID
      • getGL_Budget_ID

        public int getGL_Budget_ID()
        Get getGL_Budget_ID
        Returns:
        GL_Budget_ID or 0
      • getDateAcct

        public Timestamp getDateAcct()
        Get Accounting Date
        Returns:
        DateAcct or null
      • setDateAcct

        public void setDateAcct(Timestamp da)
        Set Date Acct
        Parameters:
        da - accounting date
      • getDateDoc

        public Timestamp getDateDoc()
        Get Document Date
        Returns:
        document date
      • setDateDoc

        public void setDateDoc(Timestamp dd)
        Set Date Doc
        Parameters:
        dd - document date
      • isPosted

        public boolean isPosted()
        Is Document Posted
        Returns:
        true if posted
      • isSOTrx

        public boolean isSOTrx()
        Is Sales Trx
        Returns:
        true if it is sales trx
      • getC_DocType_ID

        public int getC_DocType_ID()
        Get C_DocType_ID
        Returns:
        C_DocType_ID or 0
      • getC_Charge_ID

        public int getC_Charge_ID()
        Get header level C_Charge_ID
        Returns:
        C_Charge_ID or 0
      • getSalesRep_ID

        public int getSalesRep_ID()
        Get SalesRep_ID
        Returns:
        SalesRep_ID or 0
      • getC_BankAccount_ID

        public int getC_BankAccount_ID()
        Get C_BankAccount_ID
        Returns:
        C_BankAccount_ID or 0
      • setC_BankAccount_ID

        public void setC_BankAccount_ID(int C_BankAccount_ID)
        Set C_BankAccount_ID
        Parameters:
        C_BankAccount_ID - bank acct
      • getC_CashBook_ID

        public int getC_CashBook_ID()
        Get C_CashBook_ID
        Returns:
        C_CashBook_ID or 0
      • setC_CashBook_ID

        public void setC_CashBook_ID(int C_CashBook_ID)
        Set C_CashBook_ID
        Parameters:
        C_CashBook_ID - cash book
      • getM_Warehouse_ID

        public int getM_Warehouse_ID()
        Get M_Warehouse_ID
        Returns:
        M_Warehouse_ID or 0
      • getC_BPartner_ID

        public int getC_BPartner_ID()
        Get C_BPartner_ID
        Returns:
        C_BPartner_ID or 0
      • setC_BPartner_ID

        public void setC_BPartner_ID(int C_BPartner_ID)
        Set C_BPartner_ID
        Parameters:
        C_BPartner_ID - bp
      • getC_BPartner_Location_ID

        public int getC_BPartner_Location_ID()
        Get C_BPartner_Location_ID
        Returns:
        C_BPartner_Location_ID or 0
      • getC_Project_ID

        public int getC_Project_ID()
        Get C_Project_ID
        Returns:
        C_Project_ID or 0
      • getC_ProjectPhase_ID

        public int getC_ProjectPhase_ID()
        Get C_ProjectPhase_ID
        Returns:
        C_ProjectPhase_ID or 0
      • getC_ProjectTask_ID

        public int getC_ProjectTask_ID()
        Get C_ProjectTask_ID
        Returns:
        C_ProjectTask_ID or 0
      • getC_SalesRegion_ID

        public int getC_SalesRegion_ID()
        Get C_SalesRegion_ID
        Returns:
        C_SalesRegion_ID or 0
      • getBP_C_SalesRegion_ID

        public int getBP_C_SalesRegion_ID()
        Get C_SalesRegion_ID
        Returns:
        C_SalesRegion_ID or 0
      • setBP_C_SalesRegion_ID

        public void setBP_C_SalesRegion_ID(int C_SalesRegion_ID)
        Set C_SalesRegion_ID
        Parameters:
        C_SalesRegion_ID - id
      • getC_Activity_ID

        public int getC_Activity_ID()
        Get C_Activity_ID
        Returns:
        C_Activity_ID or 0
      • getC_Campaign_ID

        public int getC_Campaign_ID()
        Get C_Campaign_ID
        Returns:
        C_Campaign_ID or 0
      • getM_Product_ID

        public int getM_Product_ID()
        Get M_Product_ID
        Returns:
        M_Product_ID or 0
      • getAD_OrgTrx_ID

        public int getAD_OrgTrx_ID()
        Get AD_OrgTrx_ID
        Returns:
        AD_OrgTrx_ID or 0
      • getC_LocFrom_ID

        public int getC_LocFrom_ID()
        Get C_LocFrom_ID
        Returns:
        from C_Location_ID or 0
      • setC_LocFrom_ID

        public void setC_LocFrom_ID(int C_LocFrom_ID)
        Set C_LocFrom_ID
        Parameters:
        C_LocFrom_ID - loc from
      • getC_LocTo_ID

        public int getC_LocTo_ID()
        Get C_LocTo_ID
        Returns:
        to C_Location_ID or 0
      • setC_LocTo_ID

        public void setC_LocTo_ID(int C_LocTo_ID)
        Set C_LocTo_ID
        Parameters:
        C_LocTo_ID - loc to
      • getUser1_ID

        public int getUser1_ID()
        Get User1_ID
        Returns:
        User1_ID or 0
      • getUser2_ID

        public int getUser2_ID()
        Get User2_ID
        Returns:
        User2_ID or 0
      • getValue

        public int getValue(String ColumnName)
        Get value by column name
        Parameters:
        ColumnName -
        Returns:
        column value or 0 (if column doesn't exists)
      • loadDocumentDetails

        protected abstract String loadDocumentDetails()
        Load Document Details
        Returns:
        error message or null
      • getBalance

        public abstract BigDecimal getBalance()
        Get Source Currency Balance - subtracts line (and tax) amounts from total - no rounding
        Returns:
        positive amount, if total header is bigger than lines
      • createFacts

        public abstract ArrayList<Fact> createFacts(MAcctSchema as)
        Create Facts (the accounting logic)
        Parameters:
        as - accounting schema
        Returns:
        Facts
      • getFacts

        public ArrayList<Fact> getFacts()
        Get Facts (the accounting logic)
        Returns:
        Facts
      • getAcctSchema

        protected MAcctSchema getAcctSchema()
        Returns:
        MAcctSchema
      • isDeferPosting

        public boolean isDeferPosting()
        Returns:
        true if posting of document should be deferred to next run of accounting posting