Package org.compiere.model
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_Theme
,X_AD_UserDef_Theme_Detail
,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 Summary
Modifier and TypeFieldDescriptionstatic final int
Access Level SCO 111 7 System shared infostatic final int
Access Level _C_ 010 2 Client infostatic final int
Access Level _CO 011 3 Client shared infostatic final int
Access Level __O 001 1 Organization infostatic final int
Access Level S__ 100 4 System infostatic final int
Access Level SC_ 110 6 System/Client infostatic final String
Dictionary Maintained Entity Typestatic final String
User Maintained Entity Typeprotected static final Integer
Zero Integerstatic final String
protected CLogger
Loggerprotected Properties
Contextprotected POInfo
Model Infostatic final String
String key to create a new record based in UUID constructorprotected static final String
Table ID Attributeprotected static final String
Record ID Attribute -
Constructor Summary
ConstructorDescriptionPO
(Properties ctx) Create New Persistent ObjectPO
(Properties ctx, int ID, String trxName) Create or Load existing Persistent ObjectPO
(Properties ctx, int ID, String trxName, String... virtualColumns) Create or load existing Persistent ObjectPO
(Properties ctx, int ID, String trxName, ResultSet rs, String... virtualColumns) Create or Load existing Persistent Object.PO
(Properties ctx, String UUID, String trxName) Create or Load existing Persistent ObjectPO
(Properties ctx, String UUID, String trxName, String... virtualColumns) Create or load existing Persistent ObjectCreate or Load existing Persistent Object.PO
(Properties ctx, ResultSet rs, String trxName) Create or Load existing Persistent Object.PO
(Properties ctx, PO source, int AD_Client_ID, int AD_Org_ID) Create New PO by Copying existing (key not copied). -
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
afterDelete
(boolean success) Execute after Delete operations.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.protected boolean
Execute before Delete operations.
Default implementation is nop, to be implemented in sub-classes that needed it.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.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 logprotected void
Throw exception if PO is immutable.static void
Clear cross tenant safe thread local flagprotected Object
clone()
Deprecated.boolean
columnExists
(String columnName) Verify if a column existsboolean
columnExists
(String columnName, boolean throwException) Verify if a column existsint
Compare based on DocumentNo, Value, Name, Descriptionprotected void
Copy all properties from copy.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.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.Create/return Attachment for PO.
If not exist, create new.boolean
delete
(boolean force) Delete Current Recordboolean
Delete Current Recordprotected boolean
delete_Accounting
(String acctTable) Deprecated.protected boolean
delete_Tree
(String treeType) Delete ID Tree Nodesvoid
deleteEx
(boolean force) Delete Current Recordvoid
Delete Current Recordvoid
dump()
Dump (with log level finest) where clause and column valuesvoid
dump
(int index) Dump (with log level finest) column (index:columnName=oldValue (newValue))boolean
Equals based on IDprotected abstract int
Get Table Access Levelget_Attribute
(String attributeName) Get attribute valueGet attribute mapint
Get Column Countprotected String
get_ColumnDescription
(int index) Get Column Descriptionprotected int
get_ColumnDisplayType
(int index) Get Column DisplayTypefinal int
get_ColumnIndex
(String columnName) Get Column Indexprotected String
get_ColumnLabel
(int index) Get Column Labelprotected Lookup
get_ColumnLookup
(int index) Get Lookupget_ColumnName
(int index) Get Column Nameget_DisplayValue
(String columnName, boolean currentValue) Get Display Text of columnCreate hash map with column name as value and column value as value (converted to string)int
get_ID()
Get Single Key Record IDint
Get old Single Key Record IDString[]
Get Key Columns.Get LoggerString[]
Get columns for optimistic lockingint
Get Table ID.Get TableName.get_Translation
(String columnName) Get Translation of columnget_Translation
(String columnName, boolean fallback) Get Translation of columnget_Translation
(String columnName, String AD_Language) Get translated value for columnget_Translation
(String columnName, String AD_Language, boolean reload) Get Translation of columnget_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.Get Trxget_UUID()
Get UUIDfinal Object
get_Value
(int index) Get Valuefinal Object
Get Valueboolean
get_ValueAsBoolean
(String columnName) Get value as booleanint
get_ValueAsInt
(int index) Get Value as intint
get_ValueAsInt
(String columnName) Get Value as intget_ValueAsString
(int idx) Get String Valueget_ValueAsString
(String columnName) Get String Valuefinal Object
get_ValueDifference
(int index) Get new - old.
- New Value if Old Value is null
- New Value - Old Value if Number
- otherwise nullfinal Object
get_ValueDifference
(String columnName) Get new - old.
- New Value if Old Value is null
- New Value - Old Value if Number
- otherwise nullprotected final Object
get_ValueE
(String columnName) Get Encrypted Valuefinal Object
get_ValueOfColumn
(int AD_Column_ID) Get Valuefinal Object
get_ValueOld
(int index) Get Old Valuefinal Object
get_ValueOld
(String columnName) Get Old Valueint
get_ValueOldAsInt
(String columnName) Get Old Value as intget_WhereClause
(boolean withValues) Create Single/Multi Key Where Clauseget_WhereClause
(boolean withValues, String uuID) Create Where Clause with UUID.get_xmlDocument
(boolean noComment) Get XML Document representationGet PO xml representation as stringfinal int
Get AD_Clientint
Get AD_Orgstatic int[]
Get All IDs of Table.Get Attachment.
An attachment is a zip archive with one or more entries.getAttachment
(boolean requery) Get Attachmentbyte[]
getAttachmentData
(String extension) Get first Attachment Data of typefinal Timestamp
Get Createdfinal int
Get CreatedBygetCtx()
Get ContextgetDoc()
Get the accounting document associated to the PO - for use in POST ModelValidatorprotected static String
getFindParameter
(String query) Convert query value.
Convert to upper case and add % at the end.byte[]
Get first PDF Attachment Datafinal Timestamp
Get Updatedfinal int
Get UpdatedByGet UUID column namestatic String
getUUIDColumnName
(String tableName) Get UUID column nameint
hashCode()
protected abstract POInfo
initPO
(Properties ctx) Initialize and return POInfoprotected boolean
insert_Accounting
(String acctTableName, String acctBaseTable, String whereClause) Insert Accounting Recordsprotected boolean
insert_Tree
(String treeType) Insert id data into Treeprotected boolean
insert_Tree
(String treeType, int C_Element_ID) Insert id data into Treeboolean
Is there changes to be saved?boolean
Is PO immutableboolean
is_new()
Is new recordboolean
Is this PO instance using optimistic lockingfinal boolean
is_ValueChanged
(int index) Is Value Changedfinal boolean
is_ValueChanged
(String columnName) Is Value Changedfinal boolean
isActive()
Is Activeboolean
isAttachment
(String extension) Do we have a Attachment of typeprotected boolean
isColumnMandatory
(int index) Is Column Mandatoryprotected boolean
isColumnUpdateable
(int index) Is Column Updateableprotected boolean
Is all mandatory Fields filled (i.e. can we save)?.boolean
Do we have a PDF Attachmentboolean
Is for replicationprotected void
Load record with IDboolean
(re)Load record with m_ID[*]protected boolean
Load from the current position of a ResultSetprotected boolean
Get values from HashMapvoid
Load record with UUIDprotected void
loadComplete
(boolean success) Call when load of PO is complete.
Default implementation is nop, to be implemented in sub-classes that needed it.protected void
Load default value of columns.protected boolean
(re)Load record with uuID orm_IDs
protected Object
loadSpecial
(ResultSet rs, int index) Load data for custom Java type that has no build in implementation (images, ..).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.protected void
Mark PO as immutable.
For PO that have been marked as immutable,checkImmutable()
will throw exception.protected boolean
Execute after the Delete operation have been committed to database.
Default implementation is nop, to be implemented in sub-classes that needed it.static int
retrieveIdOfParentValue
(String value, String tableName, int clientID, String trxName) Get parent id with the corresponding valuestatic int
retrieveIdOfParentValue
(String value, String tableName, String linkCol, int linkID, int clientID, String trxName) Get parent id with the corresponding valueboolean
save()
Update or insert new record.
To reload call load().boolean
Update or insert new record.
To reload call load().boolean
Update or insert new record, used when writing a cross tenant record.void
Update or insert new record, used when writing a cross tenant record.void
saveCrossTenantSafeEx
(String trxName) Update or insert new record, used when writing a cross tenant record.void
saveEx()
Update or insert new record.void
Update or insert new record.protected void
Call after ID have been assigned for new record.
Default implementation is nop, to be implemented in sub-classes that needed it.protected int
Get ID for new record during save.
You can overwrite this to explicitly set the ID.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()).void
saveReplica
(boolean isFromReplication) Save for replication.protected boolean
Update Recordvoid
set_Attribute
(String attributeName, Object value) set attribute valueprotected void
set_ColumnUpdateable
(int index, boolean updateable) Set Column Updateablefinal void
set_CustomColumn
(String columnName, Object value) Set Custom Column (column not in AD_Column).final boolean
set_CustomColumnReturningBoolean
(String columnName, Object value) Set Custom Column (column not in AD_Column) returning boolean.void
set_OptimisticLockingColumns
(String[] columns) Set columns use for optimistic locking (auto add to where clause for update and delete).void
set_TrxName
(String trxName) Set Trxstatic void
set_TrxName
(PO[] lines, String trxName) Set given trxName to an array of POsvoid
set_UseOptimisticLocking
(boolean enable) Enable/disable optimistic lockingprotected final boolean
Set Value if updateable and correct class.protected final boolean
Set Value if updateable and correct class.protected final boolean
Set Valueprotected final boolean
Set Valueprotected final boolean
set_ValueE
(String ColumnName, Object value) Set Encrypted Valuefinal 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.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.final void
set_ValueOfColumn
(int AD_Column_ID, Object value) Set Value of Columnfinal void
set_ValueOfColumn
(String columnName, Object value) Set value of Columnfinal boolean
set_ValueOfColumnReturningBoolean
(int AD_Column_ID, Object value) Set Value of Columnfinal boolean
set_ValueOfColumnReturningBoolean
(String columnName, Object value) Set value of Column returning booleanprotected final void
setAD_Client_ID
(int AD_Client_ID) Set AD_Clientfinal void
setAD_Org_ID
(int AD_Org_ID) Set AD_Orgprotected void
setClientOrg
(int AD_Client_ID, int AD_Org_ID) Overwrite Client Org if differentprotected void
setClientOrg
(PO po) Overwrite Client Org if differentstatic void
Turn on cross tenant safe thread local flagvoid
Set the accounting document associated to the PO - for use in POST ModelValidatorstatic void
setDocWorkflowMgr
(DocWorkflowMgr docWFMgr) Set Document Value Workflow Managerfinal void
setIsActive
(boolean active) Set Activevoid
setProcessedOn
(String ColumnName, Object value, Object oldValue) FR 2962094 - Finish implementation of weighted average costing.void
setReplication
(boolean isFromReplication) Set replication flagprotected void
Set standard default values.
Client, Org, Created/Updated, *By, IsActive, Processed, Processing and Posted.protected void
setUpdateable
(boolean updateable) Set all columns updateableprotected final void
setUpdatedBy
(int AD_User_ID) Set UpdatedBytoInsertSQL
(String database) Export data as insert SQL statementtoString()
String representationboolean
UnLock record by update of processing column to N.
The method do nothing if PO has no Processing column.void
update_Tree
(String treeType) Update parent key and seqno based on value if the tree is driven by valueboolean
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.Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Comparator
reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
-
Field Details
-
UUID_NEW_RECORD
String key to create a new record based in UUID constructor- See Also:
-
LOCAL_TRX_PREFIX
- See Also:
-
ENTITYTYPE_UserMaintained
User Maintained Entity Type- See Also:
-
ENTITYTYPE_Dictionary
Dictionary Maintained Entity Type- See Also:
-
log
Logger -
p_ctx
Context -
p_info
Model Info -
I_ZERO
Zero Integer -
ACCESSLEVEL_SYSTEM
public static final int ACCESSLEVEL_SYSTEMAccess Level S__ 100 4 System info- See Also:
-
ACCESSLEVEL_CLIENT
public static final int ACCESSLEVEL_CLIENTAccess Level _C_ 010 2 Client info- See Also:
-
ACCESSLEVEL_ORG
public static final int ACCESSLEVEL_ORGAccess Level __O 001 1 Organization info- See Also:
-
ACCESSLEVEL_ALL
public static final int ACCESSLEVEL_ALLAccess Level SCO 111 7 System shared info- See Also:
-
ACCESSLEVEL_SYSTEMCLIENT
public static final int ACCESSLEVEL_SYSTEMCLIENTAccess Level SC_ 110 6 System/Client info- See Also:
-
ACCESSLEVEL_CLIENTORG
public static final int ACCESSLEVEL_CLIENTORGAccess Level _CO 011 3 Client shared info- See Also:
-
XML_ATTRIBUTE_AD_Table_ID
Table ID Attribute- See Also:
-
XML_ATTRIBUTE_Record_ID
Record ID Attribute- See Also:
-
-
Constructor Details
-
PO
Create New Persistent Object- Parameters:
ctx
- context
-
PO
Create or Load existing Persistent Object- Parameters:
ctx
- contextID
- The unique ID of the objecttrxName
- transaction name
-
PO
Create or Load existing Persistent Object- Parameters:
ctx
- contextUUID
- The unique UUID of the objecttrxName
- transaction name
-
PO
Create or load existing Persistent Object- Parameters:
ctx
- ContextID
- Unique ID of the objecttrxName
- Transaction namevirtualColumns
- names of virtual columns to load along with the regular table columns
-
PO
Create or load existing Persistent Object- Parameters:
ctx
- ContextUUID
- Unique UUID of the objecttrxName
- Transaction namevirtualColumns
- names of virtual columns to load along with the regular table columns
-
PO
Create or Load existing Persistent Object.- Parameters:
ctx
- contextrs
- optional - load from current result set position. If null, a new record is created.trxName
- transaction name
-
PO
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
- contextID
- the ID or 0 to create new record. Ignore if rs is not null.trxName
- transaction namers
- optional - load from current result set positionvirtualColumns
- optional - names of virtual columns to load along with the regular table columns
-
PO
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
- contextUUID
- the UUID or "" to create new record. Ignore if rs is not null.trxName
- transaction namers
- optional - load from current result set positionvirtualColumns
- optional - names of virtual columns to load along with the regular table columns
-
PO
Create New PO by Copying existing (key not copied).- Parameters:
ctx
- contextsource
- source objectAD_Client_ID
- clientAD_Org_ID
- org
-
-
Method Details
-
setDocWorkflowMgr
Set Document Value Workflow Manager- Parameters:
docWFMgr
- mgr
-
copyPO
Copy all properties from copy. Method to help the implementation of copy constructor.- Parameters:
copy
-
-
initPO
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
String representation -
equals
Equals based on ID- Specified by:
equals
in interfaceComparator<Object>
- Overrides:
equals
in classObject
- Parameters:
cmp
- comparator- Returns:
- true if ID the same
-
hashCode
public int hashCode() -
compare
Compare based on DocumentNo, Value, Name, Description- Specified by:
compare
in interfaceComparator<Object>
- Parameters:
o1
- Object 1o2
- Object 2- Returns:
- -1 if o1 < o2
-
get_TableName
Get TableName.- Returns:
- table name
-
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
Get UUID- Returns:
- UUID value
-
getCtx
Get Context- Returns:
- context
-
get_Logger
Get Logger- Returns:
- logger
-
get_Value
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
Get Value- Parameters:
columnName
- column name- Returns:
- value or null
-
get_ValueE
Get Encrypted Value- Parameters:
columnName
- column name- Returns:
- value or null
-
get_ValueAsString
Get String Value- Specified by:
get_ValueAsString
in interfaceEvaluatee
- Parameters:
columnName
-- Returns:
- String value
-
get_ValueAsString
Get String Value- Parameters:
idx
- column index- Returns:
- String value or ""
-
get_ValueOfColumn
Get Value- Parameters:
AD_Column_ID
- column id- Returns:
- value or null
-
get_ValueOld
Get Old Value- Parameters:
index
- column index- Returns:
- old value
-
get_ValueOld
Get Old Value- Parameters:
columnName
- column name- Returns:
- old value or null
-
get_ValueOldAsInt
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
Is Value Changed- Parameters:
columnName
- column name- Returns:
- true if changed
-
get_ValueDifference
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
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
Set Value- Parameters:
ColumnName
- column namevalue
- value to set- Returns:
- true if value set
-
set_Value
Set Value- Parameters:
ColumnName
- column namevalue
- value to setcheckWritable
- true to check is column writable- Returns:
- true if value set
-
set_ValueE
Set Encrypted Value- Parameters:
ColumnName
- column namevalue
- value- Returns:
- true if value set
-
set_Value
Set Value if updateable and correct class. (and to NULL if not mandatory)- Parameters:
index
- column indexvalue
- value to set- Returns:
- true if value set
-
set_Value
Set Value if updateable and correct class. (and to NULL if not mandatory)- Parameters:
index
- column indexvalue
- value to setcheckWritable
-- Returns:
- true if value set
-
setProcessedOn
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 Processedvalue
- new value of Processed columnoldValue
- old value of Processed column
-
set_ValueNoCheck
Set Value w/o check (update, r/o, ..).
Used when Column is R/O.
Required for key and parent values.- Parameters:
ColumnName
- column namevalue
- value to set- Returns:
- true if value set
-
set_ValueNoCheckE
Set Encrypted Value w/o check (update, r/o, ..).
Used when Column is R/O.
Required for key and parent values.- Parameters:
ColumnName
- column namevalue
- value to set- Returns:
- true if value set
-
set_ValueOfColumn
Set value of Column- Parameters:
columnName
-value
-
-
set_ValueOfColumnReturningBoolean
Set value of Column returning boolean- Parameters:
columnName
-value
-
-
set_ValueOfColumn
Set Value of Column- Parameters:
AD_Column_ID
- columnvalue
- value to set
-
set_ValueOfColumnReturningBoolean
Set Value of Column- Parameters:
AD_Column_ID
- columnvalue
- value to set
-
set_CustomColumn
Set Custom Column (column not in AD_Column).- Parameters:
columnName
- columnvalue
- value to set
-
set_CustomColumnReturningBoolean
Set Custom Column (column not in AD_Column) returning boolean.- Parameters:
columnName
- columnvalue
- value to set
-
get_ColumnCount
public int get_ColumnCount()Get Column Count- Returns:
- column count
-
get_ColumnName
Get Column Name- Parameters:
index
- column index- Returns:
- ColumnName
-
get_ColumnLabel
Get Column Label- Parameters:
index
- column index- Returns:
- Column Label
-
get_ColumnDescription
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 indexupdateable
- 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
Get Lookup- Parameters:
index
- column index- Returns:
- Lookup or null
-
get_ColumnIndex
Get Column Index- Parameters:
columnName
- column name- Returns:
- index of column with ColumnName or -1 if not found
-
get_DisplayValue
Get Display Text of column- Parameters:
columnName
- columnNamecurrentValue
- current value- Returns:
- display text or "./." for null
-
copyValues
Copy old values of From to new values of To.
Does not copy Keys.- Parameters:
from
- source POto
- target POAD_Client_ID
- clientAD_Org_ID
- org
-
copyValues
Copy old values of From to new values of To.
Does not copy Keys and AD_Client_ID/AD_Org_ID.- Parameters:
from
- source POto
- target PO
-
load
Load record with ID- Parameters:
ID
- IDtrxName
- transaction namevirtualColumns
- names of virtual columns to load along with the regular table columns
-
loadByUU
Load record with UUID- Parameters:
uuID
- universally unique identifiertrxName
- transaction namevirtualColumns
- names of virtual columns to load along with the regular table columns
-
load
(re)Load record with m_ID[*]- Parameters:
trxName
- transactionvirtualColumns
- names of virtual columns to load along with the regular table columns- Returns:
- true if loaded
-
loadPO
(re)Load record with uuID orm_IDs
- Parameters:
uuID
- RecrodUU if not null, load by uuID, otherwise by m_IDstrxName
- transactionvirtualColumns
- names of virtual columns to load along with the regular table columns- Returns:
- true if loaded
-
load
Load from the current position of a ResultSet- Parameters:
rs
- result set- Returns:
- true if loaded
-
load
Get values from HashMap- Parameters:
hmIn
- hash map- Returns:
- true if loaded
-
checkImmutable
protected void checkImmutable()Throw exception if PO is immutable. -
get_HashMap
Create hash map with column name as value and column value as value (converted to string)- Returns:
- HashMap
-
loadSpecial
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 setindex
- 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
- clientAD_Org_ID
- org
-
setClientOrg
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
Get Created- Returns:
- created
-
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
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 DBfallback
- 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
Get Translation of column- Parameters:
columnName
-- Returns:
- translated text
-
get_Translation
Get Translation of column- Parameters:
columnName
-AD_Language
-reload
- don't use cache, reload from DB- Returns:
- translated text
-
get_Translation
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
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
Update or insert new record.
To reload call load().- Parameters:
trxName
- transaction- Returns:
- true if saved
-
saveReplica
Save for replication.- Parameters:
isFromReplication
-- Throws:
AdempiereException
-
saveCrossTenantSafeEx
Update or insert new record, used when writing a cross tenant record.- Parameters:
trxName
- transaction- Throws:
AdempiereException
- if save fail- See Also:
-
saveEx
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 recordsuccess
- 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
Get columns for optimistic locking- Returns:
- optimistic locking columns
-
set_OptimisticLockingColumns
Set columns use for optimistic locking (auto add to where clause for update and delete).- Parameters:
columns
-
-
toInsertSQL
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 falsesession
- 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 idgenerateScriptOnly
- 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
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
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
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 setindex
- 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
Delete Current Record- Parameters:
force
- delete also processed records- Throws:
AdempiereException
- if delete fail- See Also:
-
delete
Delete Current Record- Parameters:
force
- delete also processed recordstrxName
- transaction- Returns:
- true if deleted
-
deleteEx
Delete Current Record- Parameters:
force
- delete also processed recordstrxName
- 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
Insert Accounting Records- Parameters:
acctTableName
- accounting sub tableacctBaseTable
- accounting base table to get data fromwhereClause
- optional where clause with alias "p" for acctBaseTable- Returns:
- true if records inserted
-
delete_Accounting
Deprecated.Delete Accounting records. NOP - done by database constraints- Parameters:
acctTable
- accounting sub table- Returns:
- true
-
insert_Tree
Insert id data into Tree- Parameters:
treeType
- MTree TREETYPE_*- Returns:
- true if inserted
-
insert_Tree
Insert id data into Tree- Parameters:
treeType
- MTree TREETYPE_*C_Element_ID
- element for accounting element values- Returns:
- true if inserted
-
update_Tree
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 namelinkID
- link id value, ignore if linkCol is nullclientID
-trxName
-- Returns:
- parent id
-
delete_Tree
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
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
Set Trx- Parameters:
trxName
- transaction
-
get_TrxName
Get Trx- Returns:
- transaction
-
getAttachment
Get Attachment.
An attachment is a zip archive with one or more entries.- Returns:
- Attachment or null
-
getAttachment
Get Attachment- Parameters:
requery
- true to reload from DB- Returns:
- Attachment or null
-
createAttachment
Create/return Attachment for PO.
If not exist, create new.- Returns:
- attachment
-
isAttachment
Do we have a Attachment of type- Parameters:
extension
- file extension e.g. .pdf- Returns:
- true if there is a attachment of type
-
getAttachmentData
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
Get All IDs of Table. Used for listing of all recordsint[] 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 clausetrxName
- transaction- Returns:
- array of IDs or null
-
getFindParameter
Convert query value.
Convert to upper case and add % at the end.- Parameters:
query
- in string- Returns:
- converted query value
-
get_xmlString
Get PO xml representation as string- Parameters:
xml
- optional string buffer- Returns:
- updated/new string buffer header is only added once
-
get_xmlDocument
Get XML Document representation- Parameters:
noComment
- do not add comment- Returns:
- XML document
-
setDoc
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
Get the accounting document associated to the PO - for use in POST ModelValidator- Returns:
- Doc Document
-
set_TrxName
Set given trxName to an array of POs -
get_ValueAsInt
Get Value as int- Parameters:
columnName
-- Returns:
- int value
-
get_ValueAsBoolean
Get value as boolean- Parameters:
columnName
-- Returns:
- boolean value
-
getUUIDColumnName
Get UUID column name- Returns:
- uuid column name
-
getUUIDColumnName
Get UUID column name- Parameters:
tableName
-- Returns:
- uuid column name
-
clone
Deprecated.- Overrides:
clone
in classObject
- Throws:
CloneNotSupportedException
-
set_Attribute
set attribute value- Parameters:
attributeName
-value
-
-
get_Attribute
Get attribute value- Parameters:
attributeName
-- Returns:
- attribute value
-
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
Verify if a column exists- Parameters:
columnName
-throwException
- true to throw exception when the column doesn't exist- Returns:
- true if column exists
-
columnExists
Verify if a column exists- Parameters:
columnName
-- Returns:
- true if column exists
-