Class PO

java.lang.Object
org.compiere.model.PO
All Implemented Interfaces:
Serializable, Cloneable, Comparator<Object>, Evaluatee
Direct Known Subclasses:
DocActionTemplate, GenericPO, X_A_Asset, X_A_Asset_Acct, X_A_Asset_Addition, X_A_Asset_Change, X_A_Asset_Class, X_A_Asset_Delivery, X_A_Asset_Disposed, X_A_Asset_Group, X_A_Asset_Group_Acct, X_A_Asset_Info_Fin, X_A_Asset_Info_Ins, X_A_Asset_Info_Lic, X_A_Asset_Info_Oth, X_A_Asset_Info_Tax, X_A_Asset_Product, X_A_Asset_Retirement, X_A_Asset_Reval, X_A_Asset_Reval_Entry, X_A_Asset_Reval_Index, X_A_Asset_Split, X_A_Asset_Transfer, X_A_Asset_Type, X_A_Asset_Use, X_A_Depreciation, X_A_Depreciation_Build, X_A_Depreciation_Convention, X_A_Depreciation_Entry, X_A_Depreciation_Exp, X_A_Depreciation_Forecast, X_A_Depreciation_Method, X_A_Depreciation_Table_Detail, X_A_Depreciation_Table_Header, X_A_Depreciation_Workfile, X_A_FundingMode, X_A_FundingMode_Acct, X_A_Registration, X_A_RegistrationAttribute, X_A_RegistrationProduct, X_A_RegistrationValue, X_AD_AccessLog, X_AD_Alert, X_AD_AlertProcessor, X_AD_AlertProcessorLog, X_AD_AlertRecipient, X_AD_AlertRule, X_AD_AllClients_V, X_AD_AllUsers_V, X_AD_Archive, X_AD_Attachment, X_AD_AttachmentNote, X_AD_Attribute, X_AD_Attribute_Value, X_AD_AuthorizationAccount, X_AD_AuthorizationCredential, X_AD_AuthorizationProvider, X_AD_AuthorizationScopeProv, X_AD_BroadcastMessage, X_AD_ChangeLog, X_AD_Chart, X_AD_ChartDatasource, X_AD_Client, X_AD_ClientInfo, X_AD_ClientShare, X_AD_Color, X_AD_Column, X_AD_Column_Access, X_AD_CtxHelp, X_AD_CtxHelpMsg, X_AD_CtxHelpSuggestion, X_AD_Document_Action_Access, X_AD_Element, X_AD_EntityType, X_AD_Error, X_AD_Field, X_AD_FieldGroup, X_AD_FieldSuggestion, X_AD_Find, X_AD_Form, X_AD_Form_Access, X_AD_HouseKeeping, X_AD_Image, X_AD_ImpFormat, X_AD_ImpFormat_Row, X_AD_ImportTemplate, X_AD_ImportTemplateAccess, X_AD_IndexColumn, X_AD_InfoColumn, X_AD_InfoProcess, X_AD_InfoRelated, X_AD_InfoWindow, X_AD_InfoWindow_Access, X_AD_Issue, X_AD_Label, X_AD_LabelAssignment, X_AD_LabelCategory, X_AD_LabelCategoryTable, X_AD_LabelPrinter, X_AD_LabelPrinterFunction, X_AD_Language, X_AD_LdapAccess, X_AD_LdapProcessor, X_AD_LdapProcessorLog, X_AD_Menu, X_AD_Message, X_AD_MigrationScript, X_AD_ModelGeneratorTemplate, X_AD_ModelValidator, X_AD_Modification, X_AD_Note, X_AD_Org, X_AD_OrgInfo, X_AD_OrgType, X_AD_Package_Exp, X_AD_Package_Exp_Detail, X_AD_Package_Imp, X_AD_Package_Imp_Backup, X_AD_Package_Imp_Detail, X_AD_Package_Imp_Inst, X_AD_Package_Imp_Proc, X_AD_Package_UUID_Map, X_AD_Password_History, X_AD_PasswordRule, X_AD_PInstance, X_AD_PInstance_Log, X_AD_PInstance_Para, X_AD_PostIt, X_AD_Preference, X_AD_PrintColor, X_AD_PrintFont, X_AD_PrintForm, X_AD_PrintFormat, X_AD_PrintFormatItem, X_AD_PrintGraph, X_AD_PrintHeaderFooter, X_AD_PrintLabel, X_AD_PrintLabelLine, X_AD_PrintPaper, X_AD_PrintTableFormat, X_AD_Private_Access, X_AD_Process, X_AD_Process_Access, X_AD_Process_DrillRule, X_AD_Process_DrillRule_Para, X_AD_Process_Para, X_AD_RecentItem, X_AD_Record_Access, X_AD_Ref_List, X_AD_Ref_Table, X_AD_Reference, X_AD_Registration, X_AD_RelationType, X_AD_Replication, X_AD_Replication_Log, X_AD_Replication_Run, X_AD_ReplicationDocument, X_AD_ReplicationStrategy, X_AD_ReplicationTable, X_AD_ReportView, X_AD_ReportView_Col, X_AD_ReportView_Column, X_AD_Role, X_AD_Role_Included, X_AD_Role_OrgAccess, X_AD_Rule, X_AD_Schedule, X_AD_Scheduler, X_AD_Scheduler_Para, X_AD_SchedulerLog, X_AD_SchedulerRecipient, X_AD_SearchDefinition, X_AD_Sequence, X_AD_Sequence_Audit, X_AD_Sequence_No, X_AD_Session, X_AD_SMTP, X_AD_StatusLine, X_AD_StatusLineUsedIn, X_AD_StorageProvider, X_AD_Style, X_AD_StyleLine, X_AD_SysConfig, X_AD_System, X_AD_Tab, X_AD_Tab_Customization, X_AD_Table, X_AD_Table_Access, X_AD_Table_ScriptValidator, X_AD_TableIndex, X_AD_TablePartition, X_AD_TableValRule, X_AD_Task, X_AD_Task_Access, X_AD_TaskInstance, X_AD_ToolBarButton, X_AD_ToolBarButtonRestrict, X_AD_Tree, X_AD_Tree_Favorite, X_AD_Tree_Favorite_Node, X_AD_TreeBar, X_AD_TreeNode, X_AD_TreeNodeBP, X_AD_TreeNodeCMC, X_AD_TreeNodeCMM, X_AD_TreeNodeCMS, X_AD_TreeNodeCMT, X_AD_TreeNodeMM, X_AD_TreeNodePR, X_AD_TreeNodeU1, X_AD_TreeNodeU2, X_AD_TreeNodeU3, X_AD_TreeNodeU4, X_AD_User, X_AD_User_OrgAccess, X_AD_User_Roles, X_AD_User_Substitute, X_AD_UserBPAccess, X_AD_UserDef_Field, X_AD_UserDef_Info, X_AD_UserDef_Info_Column, X_AD_UserDef_Info_Related, X_AD_UserDef_Proc, X_AD_UserDef_Proc_Parameter, X_AD_UserDef_Tab, X_AD_UserDef_Win, X_AD_UserMail, X_AD_UserPreference, X_AD_UserQuery, X_AD_Val_Rule, X_AD_VerifyMigration, X_AD_ViewColumn, X_AD_ViewComponent, X_AD_WF_Activity, X_AD_WF_ActivityApprover, X_AD_WF_ActivityResult, X_AD_WF_Block, X_AD_WF_EventAudit, X_AD_WF_NextCondition, X_AD_WF_Node, X_AD_WF_Node_Para, X_AD_WF_NodeNext, X_AD_WF_Process, X_AD_WF_ProcessData, X_AD_WF_Responsible, X_AD_Window, X_AD_Window_Access, X_AD_WizardProcess, X_AD_Wlistbox_Customization, X_AD_Workflow, X_AD_Workflow_Access, X_AD_WorkflowProcessor, X_AD_WorkflowProcessorLog, X_AD_ZoomCondition, X_ASP_ClientException, X_ASP_ClientLevel, X_ASP_Field, X_ASP_Form, X_ASP_Level, X_ASP_Module, X_ASP_Process, X_ASP_Process_Para, X_ASP_Ref_List, X_ASP_Tab, X_ASP_Task, X_ASP_Window, X_ASP_Workflow, X_B_Bid, X_B_BidComment, X_B_Buyer, X_B_BuyerFunds, X_B_Offer, X_B_Seller, X_B_SellerFunds, X_B_Topic, X_B_TopicCategory, X_B_TopicType, X_C_1099Box, X_C_AcctProcessor, X_C_AcctProcessorLog, X_C_AcctSchema, X_C_AcctSchema_Default, X_C_AcctSchema_Element, X_C_AcctSchema_GL, X_C_Activity, X_C_AddressTransaction, X_C_AddressValidation, X_C_AddressValidationCfg, X_C_AllocationHdr, X_C_AllocationLine, X_C_Bank, X_C_BankAccount, X_C_BankAccount_Acct, X_C_BankAccount_Processor, X_C_BankAccountDoc, X_C_BankStatement, X_C_BankStatementLine, X_C_BankStatementLoader, X_C_BankStatementMatcher, X_C_BankTransfer, X_C_BP_BankAccount, X_C_BP_Customer_Acct, X_C_BP_EDI, X_C_BP_Employee_Acct, X_C_BP_Group, X_C_BP_Group_Acct, X_C_BP_Relation, X_C_BP_ShippingAcct, X_C_BP_Vendor_Acct, X_C_BP_Withholding, X_C_BPartner, X_C_BPartner_Location, X_C_BPartner_Product, X_C_Calendar, X_C_Campaign, X_C_Cash, X_C_CashBook, X_C_CashBook_Acct, X_C_CashLine, X_C_CashPlan, X_C_CashPlanLine, X_C_Channel, X_C_Charge, X_C_Charge_Acct, X_C_ChargeType, X_C_ChargeType_DocType, X_C_City, X_C_Commission, X_C_CommissionAmt, X_C_CommissionDetail, X_C_CommissionLine, X_C_CommissionRun, X_C_ContactActivity, X_C_Conversion_Rate, X_C_ConversionType, X_C_Country, X_C_CountryGroup, X_C_CountryGroupCountry, X_C_Currency, X_C_Currency_Acct, X_C_Cycle, X_C_CyclePhase, X_C_CycleStep, X_C_DepositBatch, X_C_DepositBatchLine, X_C_DocBaseGroup, X_C_DocBaseGroupLine, X_C_DocType, X_C_DocTypeCounter, X_C_Dunning, X_C_DunningLevel, X_C_DunningRun, X_C_DunningRunEntry, X_C_DunningRunLine, X_C_Element, X_C_ElementValue, X_C_Greeting, X_C_InterOrg_Acct, X_C_Invoice, X_C_InvoiceBatch, X_C_InvoiceBatchLine, X_C_InvoiceLine, X_C_InvoicePaySchedule, X_C_InvoiceSchedule, X_C_InvoiceTax, X_C_Job, X_C_JobAssignment, X_C_JobCategory, X_C_JobRemuneration, X_C_LandedCost, X_C_LandedCostAllocation, X_C_Location, X_C_NonBusinessDay, X_C_OnlineTrxHistory, X_C_Opportunity, X_C_Order, X_C_OrderLandedCost, X_C_OrderLandedCostAllocation, X_C_OrderLine, X_C_OrderPaySchedule, X_C_OrderSource, X_C_OrderTax, X_C_OrgAssignment, X_C_Payment, X_C_PaymentAllocate, X_C_PaymentBatch, X_C_PaymentProcessor, X_C_PaymentTerm, X_C_PaymentTransaction, X_C_PaySchedule, X_C_PaySelection, X_C_PaySelectionCheck, X_C_PaySelectionLine, X_C_Period, X_C_PeriodControl, X_C_Phase, X_C_POS, X_C_POSKey, X_C_POSKeyLayout, X_C_POSPayment, X_C_POSTenderType, X_C_Project, X_C_Project_Acct, X_C_ProjectIssue, X_C_ProjectIssueMA, X_C_ProjectLine, X_C_ProjectPhase, X_C_ProjectTask, X_C_ProjectType, X_C_Recurring, X_C_Recurring_Run, X_C_RecurringGroup, X_C_Region, X_C_Remuneration, X_C_RevenueRecog_Service, X_C_RevenueRecognition, X_C_RevenueRecognition_Plan, X_C_RevenueRecognition_Run, X_C_RfQ, X_C_RfQ_Topic, X_C_RfQ_TopicSubscriber, X_C_RfQ_TopicSubscriberOnly, X_C_RfQLine, X_C_RfQLineQty, X_C_RfQResponse, X_C_RfQResponseLine, X_C_RfQResponseLineQty, X_C_SalesRegion, X_C_SalesStage, X_C_ServiceLevel, X_C_ServiceLevelLine, X_C_SubAcct, X_C_Subscription, X_C_Subscription_Delivery, X_C_SubscriptionType, X_C_Task, X_C_Tax, X_C_Tax_Acct, X_C_TaxBase, X_C_TaxCategory, X_C_TaxDeclaration, X_C_TaxDeclarationAcct, X_C_TaxDeclarationLine, X_C_TaxDefinition, X_C_TaxGroup, X_C_TaxPostal, X_C_TaxProvider, X_C_TaxProviderCfg, X_C_TaxType, X_C_UOM, X_C_UOM_Conversion, X_C_UserRemuneration, X_C_ValidCombination, X_C_Withholding, X_C_Withholding_Acct, X_C_Year, X_CM_Chat, X_CM_ChatEntry, X_CM_ChatType, X_CM_ChatTypeUpdate, X_CM_ChatUpdate, X_DD_NetworkDistribution, X_DD_NetworkDistributionLine, X_DD_Order, X_DD_OrderLine, X_EXP_Format, X_EXP_FormatLine, X_EXP_Processor, X_EXP_Processor_Type, X_EXP_ProcessorParameter, X_Fact_Acct, X_Fact_Acct_Summary, X_Fact_Reconciliation, X_GL_Budget, X_GL_BudgetControl, X_GL_Category, X_GL_Distribution, X_GL_DistributionLine, X_GL_Fund, X_GL_FundRestriction, X_GL_Journal, X_GL_JournalBatch, X_GL_JournalGenerator, X_GL_JournalGeneratorLine, X_GL_JournalGeneratorSource, X_GL_JournalLine, X_HR_Attribute, X_HR_Concept, X_HR_Concept_Acct, X_HR_Concept_Category, X_HR_Contract, X_HR_Department, X_HR_Employee, X_HR_Job, X_HR_List, X_HR_ListLine, X_HR_ListType, X_HR_ListVersion, X_HR_Movement, X_HR_Payroll, X_HR_PayrollConcept, X_HR_Period, X_HR_Process, X_HR_Year, X_I_Asset, X_I_BankStatement, X_I_BPartner, X_I_Conversion_Rate, X_I_ElementValue, X_I_FAJournal, X_I_FixedAsset, X_I_GLJournal, X_I_HR_Movement, X_I_InOutLineConfirm, X_I_Inventory, X_I_Invoice, X_I_Movement, X_I_Order, X_I_Payment, X_I_PriceList, X_I_Product, X_I_ProductPlanning, X_I_ReportLine, X_IMP_Processor, X_IMP_Processor_Type, X_IMP_ProcessorLog, X_IMP_ProcessorParameter, X_M_Attribute, X_M_AttributeInstance, X_M_AttributeInstanceLine, X_M_AttributeSearch, X_M_AttributeSet, X_M_AttributeSetExclude, X_M_AttributeSetInstance, X_M_AttributeUse, X_M_AttributeValue, X_M_BOM, X_M_BOMAlternative, X_M_BOMProduct, X_M_BP_Price, X_M_ChangeNotice, X_M_ChangeRequest, X_M_CommodityShipment, X_M_Cost, X_M_CostDetail, X_M_CostElement, X_M_CostHistory, X_M_CostQueue, X_M_CostType, X_M_Demand, X_M_DemandDetail, X_M_DemandLine, X_M_DiscountSchema, X_M_DiscountSchemaBreak, X_M_DiscountSchemaLine, X_M_DistributionList, X_M_DistributionListLine, X_M_DistributionRun, X_M_DistributionRunLine, X_M_Forecast, X_M_ForecastLine, X_M_Freight, X_M_FreightCategory, X_M_InOut, X_M_InOutConfirm, X_M_InOutLine, X_M_InOutLineConfirm, X_M_InOutLineMA, X_M_Inventory, X_M_InventoryLine, X_M_InventoryLineMA, X_M_Locator, X_M_LocatorType, X_M_Lot, X_M_LotCtl, X_M_LotCtlExclude, X_M_MatchInv, X_M_MatchPO, X_M_Movement, X_M_MovementConfirm, X_M_MovementLine, X_M_MovementLineConfirm, X_M_MovementLineMA, X_M_OperationResource, X_M_Package, X_M_PackageLine, X_M_PackageMPS, X_M_PartType, X_M_PerpetualInv, X_M_PriceList, X_M_PriceList_Version, X_M_Product, X_M_Product_Acct, X_M_Product_BOM, X_M_Product_Category, X_M_Product_Category_Acct, X_M_Product_PO, X_M_Product_QualityTest, X_M_ProductDownload, X_M_Production, X_M_ProductionLine, X_M_ProductionLineMA, X_M_ProductionPlan, X_M_ProductOperation, X_M_ProductPrice, X_M_ProductPriceVendorBreak, X_M_QualityTest, X_M_QualityTestResult, X_M_RelatedProduct, X_M_Replenish, X_M_Requisition, X_M_RequisitionLine, X_M_RMA, X_M_RMALine, X_M_RMATax, X_M_RMAType, X_M_SerNoCtl, X_M_SerNoCtlExclude, X_M_Shipper, X_M_ShipperCfg, X_M_ShipperLabels, X_M_ShipperLabelsCfg, X_M_ShipperPackaging, X_M_ShipperPackagingCfg, X_M_ShipperPickupTypes, X_M_ShipperPickupTypesCfg, X_M_ShippingProcessor, X_M_ShippingProcessorCfg, X_M_ShippingTransaction, X_M_ShippingTransactionLine, X_M_StorageOnHand, X_M_StorageReservation, X_M_StorageReservationLog, X_M_Substitute, X_M_Transaction, X_M_TransactionAllocation, X_M_Warehouse, X_M_Warehouse_Acct, X_MFA_Method, X_MFA_RegisteredDevice, X_MFA_Registration, X_MFA_Rule, X_PA_Achievement, X_PA_Benchmark, X_PA_BenchmarkData, X_PA_ColorSchema, X_PA_DashboardContent, X_PA_DashboardContent_Access, X_PA_DashboardPreference, X_PA_DocumentStatus, X_PA_DocumentStatusAccess, X_PA_Goal, X_PA_GoalRestriction, X_PA_Hierarchy, X_PA_Measure, X_PA_MeasureCalc, X_PA_Ratio, X_PA_RatioElement, X_PA_Report, X_PA_ReportColumn, X_PA_ReportColumnSet, X_PA_ReportCube, X_PA_ReportLine, X_PA_ReportLineSet, X_PA_ReportSource, X_PA_SLA_Criteria, X_PA_SLA_Goal, X_PA_SLA_Measure, X_PP_Cost_Collector, X_PP_Cost_CollectorMA, X_PP_MRP, X_PP_Order, X_PP_Order_BOM, X_PP_Order_BOMLine, X_PP_Order_Cost, X_PP_Order_Node, X_PP_Order_Node_Asset, X_PP_Order_Node_Product, X_PP_Order_NodeNext, X_PP_Order_Workflow, X_PP_Product_BOM, X_PP_Product_BOMLine, X_PP_Product_Planning, X_PP_WF_Node_Asset, X_PP_WF_Node_Product, X_QM_Specification, X_QM_SpecificationLine, X_R_Category, X_R_CategoryUpdates, X_R_ContactInterest, X_R_Group, X_R_GroupUpdates, X_R_InterestArea, X_R_IssueKnown, X_R_IssueProject, X_R_IssueRecommendation, X_R_IssueStatus, X_R_IssueSystem, X_R_IssueUser, X_R_MailText, X_R_Request, X_R_RequestAction, X_R_RequestProcessor, X_R_RequestProcessor_Route, X_R_RequestProcessorLog, X_R_RequestType, X_R_RequestTypeUpdates, X_R_RequestUpdate, X_R_RequestUpdates, X_R_Resolution, X_R_StandardResponse, X_R_Status, X_R_StatusCategory, X_RV_BPartner, X_RV_WarehousePrice, X_S_ExpenseType, X_S_Resource, X_S_ResourceAssignment, X_S_ResourceType, X_S_ResourceUnAvailable, X_S_TimeExpense, X_S_TimeExpenseLine, X_S_TimeType, X_S_Training, X_S_Training_Class, X_SSO_PrincipalConfig, X_T_1099Extract, X_T_Aging, X_T_BankRegister, X_T_BOM_Indented, X_T_BOMLine, X_T_CashFlow, X_T_DistributionRunDetail, X_T_InventoryValue, X_T_InvoiceGL, X_T_MRP_CRP, X_T_Reconciliation, X_T_Replenish, X_T_Report, X_T_ReportStatement, X_T_Transaction, X_T_TrialBalance, X_Test, X_TestUU, X_TestUUDet, X_U_BlackListCheque, X_U_POSTerminal, X_U_RoleMenu, X_U_Web_Properties, X_U_WebMenu, X_WS_WebService, X_WS_WebService_Para, X_WS_WebServiceFieldInput, X_WS_WebServiceFieldOutput, X_WS_WebServiceMethod, X_WS_WebServiceType, X_WS_WebServiceTypeAccess

public abstract class PO extends Object implements Serializable, Comparator<Object>, Evaluatee, Cloneable
Abstract base class for Persistent Object.
Version:
$Id: PO.java,v 1.12 2006/08/09 16:38:47 jjanke Exp $
Author:
Jorg Janke, Teo Sarca, SC ARHIPAC SERVICE SRL
  • FR [ 1675490 ] ModelValidator on modelChange after events
  • BF [ 1704828 ] PO.is_Changed() and PO.is_ValueChanged are not consistent
  • FR [ 1720995 ] Add PO.saveEx() and PO.deleteEx() methods
  • BF [ 1990856 ] PO.set_Value* : truncate string more than needed
  • FR [ 2042844 ] PO.get_Translation improvements
  • FR [ 2818369 ] Implement PO.get_ValueAs*(columnName) https://sourceforge.net/p/adempiere/feature-requests/754/
  • BF [ 2849122 ] PO.AfterSave is not rollback on error https://sourceforge.net/p/adempiere/bugs/2073/
  • BF [ 2859125 ] Can't set AD_OrgBP_ID https://sourceforge.net/p/adempiere/bugs/2095/
  • BF [ 2866493 ] VTreePanel is not saving who did the node move https://sourceforge.net/p/adempiere/bugs/2135/, Teo Sarca, teo.sarca@gmail.com
  • BF [ 2876259 ] PO.insertTranslation query is not correct https://sourceforge.net/p/adempiere/bugs/2168/, Victor Perez, e-Evolution SC
  • [ 2195894 ] Improve performance in PO engine
  • https://sourceforge.net/p/adempiere/feature-requests/555/
  • BF [2947622] The replication ID (Primary Key) is not working
  • https://sourceforge.net/p/adempiere/bugs/2308/
  • See Also:
    • Field Details

      • UUID_NEW_RECORD

        public static final String UUID_NEW_RECORD
        String key to create a new record based in UUID constructor
        See Also:
      • LOCAL_TRX_PREFIX

        public static final String LOCAL_TRX_PREFIX
        See Also:
      • ENTITYTYPE_UserMaintained

        public static final String ENTITYTYPE_UserMaintained
        User Maintained Entity Type
        See Also:
      • ENTITYTYPE_Dictionary

        public static final String ENTITYTYPE_Dictionary
        Dictionary Maintained Entity Type
        See Also:
      • log

        protected transient CLogger log
        Logger
      • p_ctx

        protected transient Properties p_ctx
        Context
      • p_info

        protected transient volatile POInfo p_info
        Model Info
      • I_ZERO

        protected static final Integer I_ZERO
        Zero Integer
      • ACCESSLEVEL_SYSTEM

        public static final int ACCESSLEVEL_SYSTEM
        Access Level S__ 100 4 System info
        See Also:
      • ACCESSLEVEL_CLIENT

        public static final int ACCESSLEVEL_CLIENT
        Access Level _C_ 010 2 Client info
        See Also:
      • ACCESSLEVEL_ORG

        public static final int ACCESSLEVEL_ORG
        Access Level __O 001 1 Organization info
        See Also:
      • ACCESSLEVEL_ALL

        public static final int ACCESSLEVEL_ALL
        Access Level SCO 111 7 System shared info
        See Also:
      • ACCESSLEVEL_SYSTEMCLIENT

        public static final int ACCESSLEVEL_SYSTEMCLIENT
        Access Level SC_ 110 6 System/Client info
        See Also:
      • ACCESSLEVEL_CLIENTORG

        public static final int ACCESSLEVEL_CLIENTORG
        Access Level _CO 011 3 Client shared info
        See Also:
      • XML_ATTRIBUTE_AD_Table_ID

        protected static final String XML_ATTRIBUTE_AD_Table_ID
        Table ID Attribute
        See Also:
      • XML_ATTRIBUTE_Record_ID

        protected static final String XML_ATTRIBUTE_Record_ID
        Record ID Attribute
        See Also:
    • Constructor Details

      • PO

        public PO(Properties ctx)
        Create New Persistent Object
        Parameters:
        ctx - context
      • PO

        public PO(Properties ctx, int ID, String trxName)
        Create or Load existing Persistent Object
        Parameters:
        ctx - context
        ID - The unique ID of the object
        trxName - transaction name
      • PO

        public PO(Properties ctx, String UUID, String trxName)
        Create or Load existing Persistent Object
        Parameters:
        ctx - context
        UUID - The unique UUID of the object
        trxName - transaction name
      • PO

        public PO(Properties ctx, int ID, String trxName, String... virtualColumns)
        Create or load existing Persistent Object
        Parameters:
        ctx - Context
        ID - Unique ID of the object
        trxName - Transaction name
        virtualColumns - names of virtual columns to load along with the regular table columns
      • PO

        public PO(Properties ctx, String UUID, String trxName, String... virtualColumns)
        Create or load existing Persistent Object
        Parameters:
        ctx - Context
        UUID - Unique UUID of the object
        trxName - Transaction name
        virtualColumns - names of virtual columns to load along with the regular table columns
      • PO

        public PO(Properties ctx, ResultSet rs, String trxName)
        Create or Load existing Persistent Object.
        Parameters:
        ctx - context
        rs - optional - load from current result set position. If null, a new record is created.
        trxName - transaction name
      • PO

        public PO(Properties ctx, int ID, String trxName, ResultSet rs, String... virtualColumns)
        Create or Load existing Persistent Object.
          You load
            - an existing single key record with   new PO (ctx, Record_ID)
                   or                              new PO (ctx, Record_ID, trxName)
                   or                              new PO (ctx, rs, trxName)
            - a new single key record with         new PO (ctx, 0)
            - an existing multi key record with    new PO (ctx, rs, trxName)
            - a new multi key record with          new PO (ctx, null)
          The ID for new single key records is created automatically,
          you need to set the IDs for multi-key records explicitly.
                
        Parameters:
        ctx - context
        ID - the ID or 0 to create new record. Ignore if rs is not null.
        trxName - transaction name
        rs - optional - load from current result set position
        virtualColumns - optional - names of virtual columns to load along with the regular table columns
      • PO

        public PO(Properties ctx, String UUID, String trxName, ResultSet rs, String... virtualColumns)
        Create or Load existing Persistent Object.
          You load an existing record with       new PO (ctx, UUID)
                or                               new PO (ctx, UUID, trxName)
                or                               new PO (ctx, rs, trxName)
          The UUID for new records is created automatically,
          you need to set the IDs for multi-key records explicitly.
                
        Parameters:
        ctx - context
        UUID - the UUID or "" to create new record. Ignore if rs is not null.
        trxName - transaction name
        rs - optional - load from current result set position
        virtualColumns - optional - names of virtual columns to load along with the regular table columns
      • PO

        public PO(Properties ctx, PO source, int AD_Client_ID, int AD_Org_ID)
        Create New PO by Copying existing (key not copied).
        Parameters:
        ctx - context
        source - source object
        AD_Client_ID - client
        AD_Org_ID - org
    • Method Details

      • setDocWorkflowMgr

        public static void setDocWorkflowMgr(DocWorkflowMgr docWFMgr)
        Set Document Value Workflow Manager
        Parameters:
        docWFMgr - mgr
      • copyPO

        protected void copyPO(PO copy)
        Copy all properties from copy. Method to help the implementation of copy constructor.
        Parameters:
        copy -
      • initPO

        protected abstract POInfo initPO(Properties ctx)
        Initialize and return POInfo
        Parameters:
        ctx - context
        Returns:
        Meta data of PO
      • get_AccessLevel

        protected abstract int get_AccessLevel()
        Get Table Access Level
        Returns:
        Access Level
      • toString

        public String toString()
        String representation
        Overrides:
        toString in class Object
        Returns:
        String representation
      • equals

        public boolean equals(Object cmp)
        Equals based on ID
        Specified by:
        equals in interface Comparator<Object>
        Overrides:
        equals in class Object
        Parameters:
        cmp - comparator
        Returns:
        true if ID the same
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • compare

        public int compare(Object o1, Object o2)
        Compare based on DocumentNo, Value, Name, Description
        Specified by:
        compare in interface Comparator<Object>
        Parameters:
        o1 - Object 1
        o2 - Object 2
        Returns:
        -1 if o1 < o2
      • get_TableName

        public String get_TableName()
        Get TableName.
        Returns:
        table name
      • get_KeyColumns

        public String[] get_KeyColumns()
        Get Key Columns.
        Returns:
        table name
      • get_Table_ID

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

        public int get_ID()
        Get Single Key Record ID
        Returns:
        ID or 0
      • get_IDOld

        public int get_IDOld()
        Get old Single Key Record ID
        Returns:
        ID or 0
      • get_UUID

        public String get_UUID()
        Get UUID
        Returns:
        UUID value
      • getCtx

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

        public CLogger get_Logger()
        Get Logger
        Returns:
        logger
      • get_Value

        public final Object get_Value(int index)
        Get Value
        Parameters:
        index - column index
        Returns:
        column value
      • get_ValueAsInt

        public int get_ValueAsInt(int index)
        Get Value as int
        Parameters:
        index - column index
        Returns:
        int value or 0
      • get_Value

        public final Object get_Value(String columnName)
        Get Value
        Parameters:
        columnName - column name
        Returns:
        value or null
      • get_ValueE

        protected final Object get_ValueE(String columnName)
        Get Encrypted Value
        Parameters:
        columnName - column name
        Returns:
        value or null
      • get_ValueAsString

        public String get_ValueAsString(String columnName)
        Get String Value
        Specified by:
        get_ValueAsString in interface Evaluatee
        Parameters:
        columnName -
        Returns:
        String value
      • get_ValueAsString

        public String get_ValueAsString(int idx)
        Get String Value
        Parameters:
        idx - column index
        Returns:
        String value or ""
      • get_ValueOfColumn

        public final Object get_ValueOfColumn(int AD_Column_ID)
        Get Value
        Parameters:
        AD_Column_ID - column id
        Returns:
        value or null
      • get_ValueOld

        public final Object get_ValueOld(int index)
        Get Old Value
        Parameters:
        index - column index
        Returns:
        old value
      • get_ValueOld

        public final Object get_ValueOld(String columnName)
        Get Old Value
        Parameters:
        columnName - column name
        Returns:
        old value or null
      • get_ValueOldAsInt

        public int get_ValueOldAsInt(String columnName)
        Get Old Value as int
        Parameters:
        columnName - column name
        Returns:
        int value or 0
      • is_ValueChanged

        public final boolean is_ValueChanged(int index)
        Is Value Changed
        Parameters:
        index - column index
        Returns:
        true if changed
      • is_ValueChanged

        public final boolean is_ValueChanged(String columnName)
        Is Value Changed
        Parameters:
        columnName - column name
        Returns:
        true if changed
      • get_ValueDifference

        public final Object get_ValueDifference(int index)
        Get new - old.
        - New Value if Old Value is null
        - New Value - Old Value if Number
        - otherwise null
        Parameters:
        index - index
        Returns:
        new - old or null if not appropriate or not changed
      • get_ValueDifference

        public final Object get_ValueDifference(String columnName)
        Get new - old.
        - New Value if Old Value is null
        - New Value - Old Value if Number
        - otherwise null
        Parameters:
        columnName - column name
        Returns:
        new - old or null if not appropriate or not changed
      • set_Value

        protected final boolean set_Value(String ColumnName, Object value)
        Set Value
        Parameters:
        ColumnName - column name
        value - value to set
        Returns:
        true if value set
      • set_Value

        protected final boolean set_Value(String ColumnName, Object value, boolean checkWritable)
        Set Value
        Parameters:
        ColumnName - column name
        value - value to set
        checkWritable - true to check is column writable
        Returns:
        true if value set
      • set_ValueE

        protected final boolean set_ValueE(String ColumnName, Object value)
        Set Encrypted Value
        Parameters:
        ColumnName - column name
        value - value
        Returns:
        true if value set
      • set_Value

        protected final boolean set_Value(int index, Object value)
        Set Value if updateable and correct class. (and to NULL if not mandatory)
        Parameters:
        index - column index
        value - value to set
        Returns:
        true if value set
      • set_Value

        protected final boolean set_Value(int index, Object value, boolean checkWritable)
        Set Value if updateable and correct class. (and to NULL if not mandatory)
        Parameters:
        index - column index
        value - value to set
        checkWritable -
        Returns:
        true if value set
      • setProcessedOn

        public void setProcessedOn(String ColumnName, Object value, Object oldValue)
        FR 2962094 - Finish implementation of weighted average costing.
        Fill the column ProcessedOn (if it exists) with a bigdecimal representation of current timestamp (with nanoseconds).
        Parameters:
        ColumnName - update ProcessedOn if ColumnName is Processed
        value - new value of Processed column
        oldValue - old value of Processed column
      • set_ValueNoCheck

        public final boolean set_ValueNoCheck(String ColumnName, Object value)
        Set Value w/o check (update, r/o, ..).
        Used when Column is R/O.
        Required for key and parent values.
        Parameters:
        ColumnName - column name
        value - value to set
        Returns:
        true if value set
      • set_ValueNoCheckE

        protected final boolean set_ValueNoCheckE(String ColumnName, Object value)
        Set Encrypted Value w/o check (update, r/o, ..).
        Used when Column is R/O.
        Required for key and parent values.
        Parameters:
        ColumnName - column name
        value - value to set
        Returns:
        true if value set
      • set_ValueOfColumn

        public final void set_ValueOfColumn(String columnName, Object value)
        Set value of Column
        Parameters:
        columnName -
        value -
      • set_ValueOfColumnReturningBoolean

        public final boolean set_ValueOfColumnReturningBoolean(String columnName, Object value)
        Set value of Column returning boolean
        Parameters:
        columnName -
        value -
      • set_ValueOfColumn

        public final void set_ValueOfColumn(int AD_Column_ID, Object value)
        Set Value of Column
        Parameters:
        AD_Column_ID - column
        value - value to set
      • set_ValueOfColumnReturningBoolean

        public final boolean set_ValueOfColumnReturningBoolean(int AD_Column_ID, Object value)
        Set Value of Column
        Parameters:
        AD_Column_ID - column
        value - value to set
      • set_CustomColumn

        public final void set_CustomColumn(String columnName, Object value)
        Set Custom Column (column not in AD_Column).
        Parameters:
        columnName - column
        value - value to set
      • set_CustomColumnReturningBoolean

        public final boolean set_CustomColumnReturningBoolean(String columnName, Object value)
        Set Custom Column (column not in AD_Column) returning boolean.
        Parameters:
        columnName - column
        value - value to set
      • get_ColumnCount

        public int get_ColumnCount()
        Get Column Count
        Returns:
        column count
      • get_ColumnName

        public String get_ColumnName(int index)
        Get Column Name
        Parameters:
        index - column index
        Returns:
        ColumnName
      • get_ColumnLabel

        protected String get_ColumnLabel(int index)
        Get Column Label
        Parameters:
        index - column index
        Returns:
        Column Label
      • get_ColumnDescription

        protected String get_ColumnDescription(int index)
        Get Column Description
        Parameters:
        index - column index
        Returns:
        column description
      • isColumnMandatory

        protected boolean isColumnMandatory(int index)
        Is Column Mandatory
        Parameters:
        index - column index
        Returns:
        true if column is mandatory
      • isColumnUpdateable

        protected boolean isColumnUpdateable(int index)
        Is Column Updateable
        Parameters:
        index - column index
        Returns:
        true if column is updateable
      • set_ColumnUpdateable

        protected void set_ColumnUpdateable(int index, boolean updateable)
        Set Column Updateable
        Parameters:
        index - column index
        updateable - column updateable
      • setUpdateable

        protected void setUpdateable(boolean updateable)
        Set all columns updateable
        Parameters:
        updateable - updateable
      • get_ColumnDisplayType

        protected int get_ColumnDisplayType(int index)
        Get Column DisplayType
        Parameters:
        index - column index
        Returns:
        display type
      • get_ColumnLookup

        protected Lookup get_ColumnLookup(int index)
        Get Lookup
        Parameters:
        index - column index
        Returns:
        Lookup or null
      • get_ColumnIndex

        public final int get_ColumnIndex(String columnName)
        Get Column Index
        Parameters:
        columnName - column name
        Returns:
        index of column with ColumnName or -1 if not found
      • get_DisplayValue

        public String get_DisplayValue(String columnName, boolean currentValue)
        Get Display Text of column
        Parameters:
        columnName - columnName
        currentValue - current value
        Returns:
        display text or "./." for null
      • copyValues

        protected static void copyValues(PO from, PO to, int AD_Client_ID, int AD_Org_ID)
        Copy old values of From to new values of To.
        Does not copy Keys.
        Parameters:
        from - source PO
        to - target PO
        AD_Client_ID - client
        AD_Org_ID - org
      • copyValues

        public static void copyValues(PO from, PO to)
        Copy old values of From to new values of To.
        Does not copy Keys and AD_Client_ID/AD_Org_ID.
        Parameters:
        from - source PO
        to - target PO
      • load

        protected void load(int ID, String trxName, String... virtualColumns)
        Load record with ID
        Parameters:
        ID - ID
        trxName - transaction name
        virtualColumns - names of virtual columns to load along with the regular table columns
      • loadByUU

        public void loadByUU(String uuID, String trxName, String... virtualColumns)
        Load record with UUID
        Parameters:
        uuID - universally unique identifier
        trxName - transaction name
        virtualColumns - names of virtual columns to load along with the regular table columns
      • load

        public boolean load(String trxName, String... virtualColumns)
        (re)Load record with m_ID[*]
        Parameters:
        trxName - transaction
        virtualColumns - names of virtual columns to load along with the regular table columns
        Returns:
        true if loaded
      • loadPO

        protected boolean loadPO(String uuID, String trxName, String... virtualColumns)
        (re)Load record with uuID or m_IDs
        Parameters:
        uuID - RecrodUU if not null, load by uuID, otherwise by m_IDs
        trxName - transaction
        virtualColumns - names of virtual columns to load along with the regular table columns
        Returns:
        true if loaded
      • load

        protected boolean load(ResultSet rs)
        Load from the current position of a ResultSet
        Parameters:
        rs - result set
        Returns:
        true if loaded
      • load

        protected boolean load(HashMap<String,String> hmIn)
        Get values from HashMap
        Parameters:
        hmIn - hash map
        Returns:
        true if loaded
      • checkImmutable

        protected void checkImmutable()
        Throw exception if PO is immutable.
      • get_HashMap

        protected HashMap<String,String> get_HashMap()
        Create hash map with column name as value and column value as value (converted to string)
        Returns:
        HashMap
      • loadSpecial

        protected Object loadSpecial(ResultSet rs, int index) throws SQLException
        Load data for custom Java type that has no build in implementation (images, ..). To be implemented in sub-classes (default implementation is nop and just return null).
        Parameters:
        rs - result set
        index - column index
        Returns:
        value loaded value
        Throws:
        SQLException
      • loadComplete

        protected void loadComplete(boolean success)
        Call when load of PO is complete.
        Default implementation is nop, to be implemented in sub-classes that needed it.
        Parameters:
        success - success
      • loadDefaults

        protected void loadDefaults()
        Load default value of columns.
      • setStandardDefaults

        protected void setStandardDefaults()
        Set standard default values.
        Client, Org, Created/Updated, *By, IsActive, Processed, Processing and Posted.
      • isMandatoryOK

        protected boolean isMandatoryOK()
        Is all mandatory Fields filled (i.e. can we save)?.
        Stops at first null mandatory field.
        Returns:
        true if all mandatory fields are ok
      • setAD_Client_ID

        protected final void setAD_Client_ID(int AD_Client_ID)
        Set AD_Client
        Parameters:
        AD_Client_ID - client
      • getAD_Client_ID

        public final int getAD_Client_ID()
        Get AD_Client
        Returns:
        AD_Client_ID
      • setAD_Org_ID

        public final void setAD_Org_ID(int AD_Org_ID)
        Set AD_Org
        Parameters:
        AD_Org_ID - org
      • getAD_Org_ID

        public int getAD_Org_ID()
        Get AD_Org
        Returns:
        AD_Org_ID
      • setClientOrg

        protected void setClientOrg(int AD_Client_ID, int AD_Org_ID)
        Overwrite Client Org if different
        Parameters:
        AD_Client_ID - client
        AD_Org_ID - org
      • setClientOrg

        protected void setClientOrg(PO po)
        Overwrite Client Org if different
        Parameters:
        po - source persistent object
      • setIsActive

        public final void setIsActive(boolean active)
        Set Active
        Parameters:
        active -
      • isActive

        public final boolean isActive()
        Is Active
        Returns:
        is active
      • getCreated

        public final Timestamp getCreated()
        Get Created
        Returns:
        created
      • getUpdated

        public final Timestamp getUpdated()
        Get Updated
        Returns:
        updated
      • getCreatedBy

        public final int getCreatedBy()
        Get CreatedBy
        Returns:
        AD_User_ID
      • getUpdatedBy

        public final int getUpdatedBy()
        Get UpdatedBy
        Returns:
        AD_User_ID
      • setUpdatedBy

        protected final void setUpdatedBy(int AD_User_ID)
        Set UpdatedBy
        Parameters:
        AD_User_ID - user
      • get_Translation

        public String get_Translation(String columnName, String AD_Language)
        Get translated value for column
        Parameters:
        columnName -
        AD_Language -
        Returns:
        translated value
      • get_Translation

        public String get_Translation(String columnName, String AD_Language, boolean reload, boolean fallback)
        Get Translation of column (if needed).
        It checks if the base language is used or the column is not translated.
        If there is no translation then it fallback to original value.
        Parameters:
        columnName -
        AD_Language -
        reload - don't use cache, reload from DB
        fallback - fallback to base if no translation found
        Returns:
        translated string
        Throws:
        IllegalArgumentException - if columnName or AD_Language is null or model has multiple PK
      • get_Translation

        public String get_Translation(String columnName)
        Get Translation of column
        Parameters:
        columnName -
        Returns:
        translated text
      • get_Translation

        public String get_Translation(String columnName, String AD_Language, boolean reload)
        Get Translation of column
        Parameters:
        columnName -
        AD_Language -
        reload - don't use cache, reload from DB
        Returns:
        translated text
      • get_Translation

        public String get_Translation(String columnName, boolean fallback)
        Get Translation of column
        Parameters:
        columnName -
        fallback - fallback to base if no translation found
        Returns:
        translation
      • is_new

        public boolean is_new()
        Is new record
        Returns:
        true if new
      • save

        public boolean save()
        Update or insert new record.
        To reload call load().
        Returns:
        true if saved
      • saveEx

        public void saveEx() throws AdempiereException
        Update or insert new record.
        Throws:
        AdempiereException - if save fail
        See Also:
      • saveCrossTenantSafe

        public boolean saveCrossTenantSafe()
        Update or insert new record, used when writing a cross tenant record.
        Throws:
        AdempiereException
        See Also:
      • saveCrossTenantSafeEx

        public void saveCrossTenantSafeEx()
        Update or insert new record, used when writing a cross tenant record.
        Throws:
        AdempiereException - if save fail
        See Also:
      • save

        public boolean save(String trxName)
        Update or insert new record.
        To reload call load().
        Parameters:
        trxName - transaction
        Returns:
        true if saved
      • saveReplica

        public void saveReplica(boolean isFromReplication) throws AdempiereException
        Save for replication.
        Parameters:
        isFromReplication -
        Throws:
        AdempiereException
      • saveCrossTenantSafeEx

        public void saveCrossTenantSafeEx(String trxName)
        Update or insert new record, used when writing a cross tenant record.
        Parameters:
        trxName - transaction
        Throws:
        AdempiereException - if save fail
        See Also:
      • saveEx

        public void saveEx(String trxName) throws AdempiereException
        Update or insert new record.
        Parameters:
        trxName - transaction
        Throws:
        AdempiereException - if save fail
        See Also:
      • is_Changed

        public boolean is_Changed()
        Is there changes to be saved?
        Returns:
        true if record changed
      • beforeSave

        protected boolean beforeSave(boolean newRecord)
        Called before Save for Pre-Save Operation.
        Default implementation is nop, to be implemented in sub-classes that needed it.
        Parameters:
        newRecord - true if it is a new record
        Returns:
        true if record can be saved
      • afterSave

        protected boolean afterSave(boolean newRecord, boolean success)
        Called after Save for Post-Save Operation.
        Default implementation is nop, to be implemented in sub-classes that needed it.
        Parameters:
        newRecord - true if it is a new record
        success - true if save operation was success
        Returns:
        if save was a success
      • saveUpdate

        protected boolean saveUpdate()
        Update Record
        Returns:
        true if updated
      • is_UseOptimisticLocking

        public boolean is_UseOptimisticLocking()
        Is this PO instance using optimistic locking
        Returns:
        true if optimistic locking is enable
      • set_UseOptimisticLocking

        public void set_UseOptimisticLocking(boolean enable)
        Enable/disable optimistic locking
        Parameters:
        enable -
      • get_OptimisticLockingColumns

        public String[] get_OptimisticLockingColumns()
        Get columns for optimistic locking
        Returns:
        optimistic locking columns
      • set_OptimisticLockingColumns

        public void set_OptimisticLockingColumns(String[] columns)
        Set columns use for optimistic locking (auto add to where clause for update and delete).
        Parameters:
        columns -
      • toInsertSQL

        public String toInsertSQL(String database)
        Export data as insert SQL statement
        Parameters:
        database -
        Returns:
        SQL insert statement
      • buildInsertSQL

        protected int buildInsertSQL(StringBuilder sqlInsert, boolean withValues, List<Object> params, MSession session, int AD_ChangeLog_ID, boolean generateScriptOnly, String database)
        Build insert SQL statement and capture change log
        Parameters:
        sqlInsert -
        withValues - true to create statement with column values, false to use parameter binding (i.e with ?)
        params - statement parameters when withValues is false
        session - to capture change log. null when call from toInsertSQL (i.e to build sql only, not for real insert to DB)
        AD_ChangeLog_ID - initial change log id
        generateScriptOnly - true if it is to generate sql script only, false for real DB insert
        Returns:
        last AD_ChangeLog_ID
      • saveNew_getID

        protected int saveNew_getID()
        Get ID for new record during save.
        You can overwrite this to explicitly set the ID.
        Returns:
        ID to be used or 0 for default logic
      • saveNew_afterSetID

        protected void saveNew_afterSetID()
        Call after ID have been assigned for new record.
        Default implementation is nop, to be implemented in sub-classes that needed it.
      • get_WhereClause

        public String get_WhereClause(boolean withValues)
        Create Single/Multi Key Where Clause
        Parameters:
        withValues - if true uses column values, otherwise uses parameter binding (i.e with ?)
        Returns:
        where clause
      • get_WhereClause

        public String get_WhereClause(boolean withValues, String uuID)
        Create Where Clause with UUID. If UUID is null, fall back to single/multi key where clause.
        Parameters:
        withValues - if true uses column values, otherwise uses parameter binding (i.e with ?)
        uuID - RecordUU
        Returns:
        where clause
      • saveNewSpecial

        protected String saveNewSpecial(Object value, int index)
        Save data for custom Java type that have no build in implementation.
        To be extended by sub-classes (default implementation just call value.toString()).
        Parameters:
        value - value to set
        index - column index
        Returns:
        SQL code for INSERT VALUES clause
      • delete

        public boolean delete(boolean force)
        Delete Current Record
        Parameters:
        force - delete also processed records
        Returns:
        true if deleted
      • deleteEx

        public void deleteEx(boolean force) throws AdempiereException
        Delete Current Record
        Parameters:
        force - delete also processed records
        Throws:
        AdempiereException - if delete fail
        See Also:
      • delete

        public boolean delete(boolean force, String trxName)
        Delete Current Record
        Parameters:
        force - delete also processed records
        trxName - transaction
        Returns:
        true if deleted
      • deleteEx

        public void deleteEx(boolean force, String trxName) throws AdempiereException
        Delete Current Record
        Parameters:
        force - delete also processed records
        trxName - transaction
        Throws:
        AdempiereException - if delete fail
      • beforeDelete

        protected boolean beforeDelete()
        Execute before Delete operations.
        Default implementation is nop, to be implemented in sub-classes that needed it.
        Returns:
        true if record can be deleted
      • afterDelete

        protected boolean afterDelete(boolean success)
        Execute after Delete operations.
        Default implementation is nop, to be implemented in sub-classes that needed it.
        Parameters:
        success - true if record deleted
        Returns:
        true if delete is a success
      • postDelete

        protected boolean postDelete()
        Execute after the Delete operation have been committed to database.
        Default implementation is nop, to be implemented in sub-classes that needed it.
        Returns:
        true if post delete is a success
      • insert_Accounting

        protected boolean insert_Accounting(String acctTableName, String acctBaseTable, String whereClause)
        Insert Accounting Records
        Parameters:
        acctTableName - accounting sub table
        acctBaseTable - accounting base table to get data from
        whereClause - optional where clause with alias "p" for acctBaseTable
        Returns:
        true if records inserted
      • delete_Accounting

        @Deprecated protected boolean delete_Accounting(String acctTable)
        Deprecated.
        Delete Accounting records. NOP - done by database constraints
        Parameters:
        acctTable - accounting sub table
        Returns:
        true
      • insert_Tree

        protected boolean insert_Tree(String treeType)
        Insert id data into Tree
        Parameters:
        treeType - MTree TREETYPE_*
        Returns:
        true if inserted
      • insert_Tree

        protected boolean insert_Tree(String treeType, int C_Element_ID)
        Insert id data into Tree
        Parameters:
        treeType - MTree TREETYPE_*
        C_Element_ID - element for accounting element values
        Returns:
        true if inserted
      • update_Tree

        public void update_Tree(String treeType)
        Update parent key and seqno based on value if the tree is driven by value
        Parameters:
        treeType - MTree TREETYPE_*
      • retrieveIdOfParentValue

        public static int retrieveIdOfParentValue(String value, String tableName, int clientID, String trxName)
        Get parent id with the corresponding value
        Parameters:
        value -
        tableName -
        clientID -
        trxName -
      • retrieveIdOfParentValue

        public static int retrieveIdOfParentValue(String value, String tableName, String linkCol, int linkID, int clientID, String trxName)
        Get parent id with the corresponding value
        Parameters:
        value - value to match (partial/starting with or exact match)
        tableName -
        linkCol - optional link column name
        linkID - link id value, ignore if linkCol is null
        clientID -
        trxName -
        Returns:
        parent id
      • delete_Tree

        protected boolean delete_Tree(String treeType)
        Delete ID Tree Nodes
        Parameters:
        treeType - MTree TREETYPE_*
        Returns:
        true if deleted
      • lock

        public boolean lock()
        Lock record by update of processing column to Y (not using trx).
        The method do nothing if PO has no Processing column or existing value of Processing is Y.
        Note that this is just a logical lock and doesn't acquire real DB lock. To acquire real DB lock, use DB.getDatabase().forUpdate instead.
        Returns:
        true if locked
      • unlock

        public boolean unlock(String trxName)
        UnLock record by update of processing column to N.
        The method do nothing if PO has no Processing column.
        Parameters:
        trxName - transaction
        Returns:
        true if unlocked (false only if unlock fails)
      • set_TrxName

        public void set_TrxName(String trxName)
        Set Trx
        Parameters:
        trxName - transaction
      • get_TrxName

        public String get_TrxName()
        Get Trx
        Returns:
        transaction
      • getAttachment

        public MAttachment getAttachment()
        Get Attachment.
        An attachment is a zip archive with one or more entries.
        Returns:
        Attachment or null
      • getAttachment

        public MAttachment getAttachment(boolean requery)
        Get Attachment
        Parameters:
        requery - true to reload from DB
        Returns:
        Attachment or null
      • createAttachment

        public MAttachment createAttachment()
        Create/return Attachment for PO.
        If not exist, create new.
        Returns:
        attachment
      • isAttachment

        public boolean isAttachment(String extension)
        Do we have a Attachment of type
        Parameters:
        extension - file extension e.g. .pdf
        Returns:
        true if there is a attachment of type
      • getAttachmentData

        public byte[] getAttachmentData(String extension)
        Get first Attachment Data of type
        Parameters:
        extension - extension e.g. .pdf
        Returns:
        data or null
      • isPdfAttachment

        public boolean isPdfAttachment()
        Do we have a PDF Attachment
        Returns:
        true if there is a PDF attachment
      • getPdfAttachment

        public byte[] getPdfAttachment()
        Get first PDF Attachment Data
        Returns:
        data or null
      • dump

        public void dump()
        Dump (with log level finest) where clause and column values
      • dump

        public void dump(int index)
        Dump (with log level finest) column (index:columnName=oldValue (newValue))
        Parameters:
        index - column index
      • getAllIDs

        public static int[] getAllIDs(String TableName, String WhereClause, String trxName)
        Get All IDs of Table. Used for listing of all records
        
        	 	int[] IDs = PO.getAllIDs ("AD_PrintFont", null);
        		for (int i = 0; i < IDs.length; i++)
        		{
        			pf = new MPrintFont(Env.getCtx(), IDs[i]);
        			System.out.println(IDs[i] + " = " + pf.getFont());
        		}
        	
        Parameters:
        TableName - table name (key column with _ID)
        WhereClause - optional where clause
        trxName - transaction
        Returns:
        array of IDs or null
      • getFindParameter

        protected static String getFindParameter(String query)
        Convert query value.
        Convert to upper case and add % at the end.
        Parameters:
        query - in string
        Returns:
        converted query value
      • get_xmlString

        public StringBuffer get_xmlString(StringBuffer xml)
        Get PO xml representation as string
        Parameters:
        xml - optional string buffer
        Returns:
        updated/new string buffer header is only added once
      • get_xmlDocument

        public Document get_xmlDocument(boolean noComment)
        Get XML Document representation
        Parameters:
        noComment - do not add comment
        Returns:
        XML document
      • setDoc

        public void setDoc(Doc doc)
        Set the accounting document associated to the PO - for use in POST ModelValidator
        Parameters:
        doc - Document
      • setReplication

        public void setReplication(boolean isFromReplication)
        Set replication flag
        Parameters:
        isFromReplication -
      • isReplication

        public boolean isReplication()
        Is for replication
        Returns:
        true if it is for replication
      • getDoc

        public Doc getDoc()
        Get the accounting document associated to the PO - for use in POST ModelValidator
        Returns:
        Doc Document
      • set_TrxName

        public static void set_TrxName(PO[] lines, String trxName)
        Set given trxName to an array of POs
      • get_ValueAsInt

        public int get_ValueAsInt(String columnName)
        Get Value as int
        Parameters:
        columnName -
        Returns:
        int value
      • get_ValueAsBoolean

        public boolean get_ValueAsBoolean(String columnName)
        Get value as boolean
        Parameters:
        columnName -
        Returns:
        boolean value
      • getUUIDColumnName

        public String getUUIDColumnName()
        Get UUID column name
        Returns:
        uuid column name
      • getUUIDColumnName

        public static String getUUIDColumnName(String tableName)
        Get UUID column name
        Parameters:
        tableName -
        Returns:
        uuid column name
      • clone

        @Deprecated protected Object clone() throws CloneNotSupportedException
        Deprecated.
        Overrides:
        clone in class Object
        Throws:
        CloneNotSupportedException
      • set_Attribute

        public void set_Attribute(String attributeName, Object value)
        set attribute value
        Parameters:
        attributeName -
        value -
      • get_Attribute

        public Object get_Attribute(String attributeName)
        Get attribute value
        Parameters:
        attributeName -
        Returns:
        attribute value
      • get_Attributes

        public HashMap<String,Object> get_Attributes()
        Get attribute map
        Returns:
        map of attributes
      • makeImmutable

        protected void makeImmutable()
        Mark PO as immutable.
        For PO that have been marked as immutable, checkImmutable() will throw exception.
      • is_Immutable

        public boolean is_Immutable()
        Is PO immutable
        Returns:
        true if PO is immutable, false otherwise
      • setCrossTenantSafe

        public static void setCrossTenantSafe()
        Turn on cross tenant safe thread local flag
      • clearCrossTenantSafe

        public static void clearCrossTenantSafe()
        Clear cross tenant safe thread local flag
      • validForeignKeys

        public boolean validForeignKeys()
        Validate Foreign keys for cross tenant.
        To be called programmatically before saving in programs that can receive arbitrary values in IDs.
        This is an expensive operation in terms of database, use it wisely.
         TODO: there is huge room for performance improvement, for example:
         - caching the valid values found on foreign tables
         - caching the column ID of the foreign column
         - caching the systemAccess
         
        Returns:
        true if all the foreign keys are valid
      • columnExists

        public boolean columnExists(String columnName, boolean throwException)
        Verify if a column exists
        Parameters:
        columnName -
        throwException - true to throw exception when the column doesn't exist
        Returns:
        true if column exists
      • columnExists

        public boolean columnExists(String columnName)
        Verify if a column exists
        Parameters:
        columnName -
        Returns:
        true if column exists