package book.stock; import java.util.Date; import foundation.dao.DataPackage; import foundation.dao.DataSource; import foundation.data.entity.Entity; import foundation.data.meta.field.FieldsRuntime; import foundation.data.object.DataObject; import foundation.util.ID; import foundation.util.Util; public class BookCommand { private BookCommandMeta meta; private DataPackage document; private DataObject masterObject; private DataObject detailObject; private Date bookDate; private Entity org; private Entity warehouse; private FlowTable flowTable; private String batchMark; public BookCommand(BookCommandMeta meta) { this.meta = meta; this.bookDate = new Date(); this.flowTable = new FlowTable(); this.batchMark = ID.newValue(); } public void setDocument(DataPackage document) { this.document = document; this.masterObject = document.getMasterDataObject(); this.detailObject = document.getDetailDataObject(); } public String getId() { return meta.getId(); } public String getCode() { return meta.getCode(); } public String getName() { return meta.getName(); } public OrderRight getOrderRight() { return meta.getOrderRight(); } public StockType getStockType() { return meta.getStockType(); } public QtyCommand getQtyCommand() { return meta.getQtyCommand(); } public BookCommandMeta getMeta() { return meta; } public DataPackage getDocument() { return document; } public Entity getOrg() { return org; } public FlowTable getFlowTable() { return flowTable; } public String getBatchMark() { return batchMark; } public String getDocumentTableName() { DataObject dataObject = document.getMasterDataObject(); return dataObject.getTableName(); } public String getDocumentDetailTableName() { DataObject dataObject = document.getDetailDataObject(); return dataObject.getTableName(); } public boolean getDetailedWarehouse() throws Exception { return !Util.isEmpty(meta.getWarehouseSource()); } public String getDocumentId() { return document.getMasterId(); } public String getQtyCalculateOperator() { return "+"; } public Date getBookDate() { return bookDate; } public String getOrgID() { return org.getId(); } public String getWarehouseID() throws Exception { return warehouse.getId(); } public void setOrg(Entity org) { this.org = org; } public void setWarehouse(Entity warehouse) { this.warehouse = warehouse; } public Entity getWarehouse() { return warehouse; } public boolean isDocumentDetailContainsOrderRight() throws Exception { FieldsRuntime meta = detailObject.getTableFieldMetas(); boolean exists = meta.contains("order_right_code"); return exists; } public String getDocumentDetailOrderRightFilter() { return "document_detail.order_right_code = book_detail.order_right_code"; } public String getConfigOrderRightFilter() { OrderRight orderRight = meta.getOrderRight(); return "order_right_code = '" + orderRight.name() + "'"; } public boolean isDocumentDetailContainsStockType() throws Exception { FieldsRuntime meta = detailObject.getTableFieldMetas(); boolean exists = meta.contains("stock_type_code"); return exists; } public String getDocumentDetailStockTypeFilter() { return "document_detail.stock_type_code = book_detail.stock_type_code"; } public String getConfigStockTypeFilter() { StockType stockType = meta.getStockType(); return "stock_type_code = '" + stockType.name() + "'"; } public boolean isDocumentContainsDocType() throws Exception { FieldsRuntime meta = masterObject.getTableFieldMetas(); boolean exists = meta.contains("doc_type"); return exists; } public String getDocumentDocTypeSegment() throws Exception { if (isDocumentContainsDocType()) { return "document.doc_type"; } return null; } public String getDocumentDocType() { return meta.getDocType(); } public String getConfigDocTypeSegment() { String result = Util.quotedStr(meta.getDocType()); return result; } public boolean isDocumentContainsOrderRight() throws Exception { FieldsRuntime meta = masterObject.getTableFieldMetas(); boolean exists = meta.contains("order_right_code"); if (exists) { return true; } meta = detailObject.getTableFieldMetas(); exists = meta.contains("order_right_code"); if (exists) { return true; } return false; } public String getDocumentOrderRightSegment() throws Exception { FieldsRuntime meta = masterObject.getTableFieldMetas(); boolean exists = meta.contains("order_right_code"); if (exists) { return "document.order_right_code"; } meta = detailObject.getTableFieldMetas(); exists = meta.contains("order_right_code"); if (exists) { return "document_detail.order_right_code"; } return null; } public String getConfigOrderRightSegment() { String result = Util.quotedStr(meta.getOrderRight().name()); return result; } public boolean isDocumentContainsStockType() throws Exception { FieldsRuntime meta = masterObject.getTableFieldMetas(); boolean exists = meta.contains("stock_type_code"); if (exists) { return true; } meta = detailObject.getTableFieldMetas(); exists = meta.contains("stock_type_code"); if (exists) { return true; } return false; } public String getConfigStockTypeSegment() { String result = Util.quotedStr(meta.getStockType().name()); return result; } public String getDocumentStockTypeSegment() throws Exception { FieldsRuntime meta = masterObject.getTableFieldMetas(); boolean exists = meta.contains("stock_type_code"); if (exists) { return "document.stock_type_code"; } meta = detailObject.getTableFieldMetas(); exists = meta.contains("stock_type_code"); if (exists) { return "document_detail.stock_type_code"; } return null; } public String getDocumentQtySegment() throws Exception { FieldsRuntime meta = detailObject.getTableFieldMetas(); boolean exists = meta.contains(IStockLetter.Field_DiffQty); if (exists) { return IStockLetter.Field_DiffQty; } return IStockLetter.Field_Qty; } public boolean isNegativeConvert() { return meta.isNegativeConvert(); } public String getWarehouseDirection() { return meta.getWarehouseDirection(); } public FreezeCondition getFreezeCondition() { return meta.getFreezeCondition(); } public String getFilter() { return meta.getFilter(); } public String getWarehouseSource() { return meta.getWarehouseSource(); } public DataSource getDataSource() { return meta.getDataSource(); } }