package book.rebate; import java.util.Date; import book.BookName; import book.FlowTable; import book.FreezeCondition; import book.OrderRight; import book.QtyCommand; import book.StockType; 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 String ioBatchId; private FlowTable flowTable; private String batchMark; private String operate; private BookName bookName; private String flowTableName; private String detailTableName; public BookCommand(BookCommandMeta meta) { this.meta = meta; this.bookDate = new Date(); this.flowTable = new FlowTable(); this.batchMark = ID.newValue(); if(meta != null ) { this.bookName = meta.getBookName(); this.flowTableName = bookName.getFlowTable(); this.detailTableName = bookName.getDetailTable(); } } public void setDocument(DataPackage document) { this.document = document; this.masterObject = document.getMasterDataObject(); try{ this.detailObject = document.getDetailDataObject(); }catch(Exception e ) { this.detailObject = document.getMasterDataObject(); return; } } public void setBatchDocument(DataObject batchDocument) { this.masterObject = batchDocument ; } public void setBatchDocumentDetail(DataObject batchDocumentDetail) { this.detailObject = batchDocumentDetail; } public String getId() { return meta.getId(); } public BookName getBookName() { return bookName; } 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 getOperate() { return operate; } public void setOperate(String operate) { this.operate = operate; } public String getFlowTableName() { return flowTableName; } public String getDetailTableName() { return detailTableName; } public String getDocumentTableName() { DataObject dataObject = masterObject; return dataObject.getTableName(); } public String getDocumentAmtDetailTableName() { return "so_order_detail_rebate"; } public String getDocumentDetailTableName() { DataObject dataObject = this.detailObject; return dataObject.getTableName(); } public String getDocumentId() { if(document != null ) { return document.getMasterId(); } return ioBatchId; } 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 getDocumentIdField() { return "document_detail.id"; } public String getDocumentDetailParentIdField() { return "document_detail.parent_id"; } 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 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 getDocumentAmtSegment() throws Exception { FieldsRuntime fieldMetas = detailObject.getTableFieldMetas(); if (fieldMetas.contains("amt_diff")) { return "document_detail.amt_diff"; } if (OrderRight.Return == getOrderRight()) { return "amt_rebate_close"; } return "document_detail.amt"; } public String getDocumentQtySegment() throws Exception { FieldsRuntime fieldMetas = detailObject.getTableFieldMetas(); if (fieldMetas.contains("qty_diff")) { return "document_detail.qty_diff"; } if (OrderRight.Return == getOrderRight()) { return "qty_rebate_close"; } return "document_detail.qty"; } public String getFilter() throws Exception { return meta.getFilter(); } public String getRebateId() throws Exception { return getBookSource(); } public boolean isNegativeConvert() { return meta.isNegativeConvert(); } public DataSource getDataSource() { return meta.getDataSource(); } private String getBookSource() { return meta.getBookSource(); } public String getWarehouseDirection() { return meta.getWarehouseDirection(); } public FreezeCondition getFreezeCondition() { return meta.getFreezeCondition(); } public String getIoBatchId() { return ioBatchId; } public void setIoBatchId(String batchNo) { this.ioBatchId = batchNo; } }