package biz.book;
|
|
import java.util.Date;
|
import java.util.List;
|
|
import biz.constants.IStockLetter;
|
import biz.constants.MdSubject;
|
import foundation.dao.DataPackage;
|
import foundation.dao.DataSource;
|
import foundation.dao.PackageItem;
|
import foundation.data.entity.Entity;
|
import foundation.data.entity.Filter;
|
import foundation.data.meta.field.FieldsRuntime;
|
import foundation.data.object.DataObject;
|
import foundation.util.ID;
|
import foundation.util.MapList;
|
import foundation.util.Util;
|
|
public class BookCommand {
|
|
private BookCommandMeta meta;
|
private DataPackage document;
|
private DataObject masterObject;
|
private DataObject detailObject;
|
private Date bookDate;
|
private MapList<MdSubject, Entity> dimensions;
|
private FlowTable flowTable;
|
private String batchMark;
|
private String ioBatchId;
|
private Filter filter;
|
|
public BookCommand(BookCommandMeta meta) {
|
this.meta = meta;
|
this.bookDate = new Date();
|
this.flowTable = new FlowTable();
|
this.batchMark = ID.newValue();
|
this.dimensions = new MapList<MdSubject, Entity>();
|
}
|
|
public BookCommand(String dataName, BookCommandMeta meta) throws Exception {
|
this.meta = meta;
|
this.bookDate = new Date();
|
this.flowTable = new FlowTable();
|
this.batchMark = ID.newValue();
|
this.dimensions = new MapList<MdSubject, Entity>();
|
setDocument(dataName);
|
}
|
|
public void setDocument(String dataName) throws Exception {
|
DataPackage document = DataPackage.getInstance(dataName);
|
this.document = document;
|
this.masterObject = document.getMasterDataObject();
|
|
PackageItem detailItem = document.getDetailItem();
|
if (detailItem == null) {
|
this.detailObject = document.getMasterDataObject();
|
}
|
else {
|
this.detailObject = detailItem.getDataObject();
|
}
|
}
|
|
public void setDocument(DataPackage document) {
|
this.document = document;
|
this.masterObject = document.getMasterDataObject();
|
this.detailObject = document.getDetailDataObject();
|
|
this.filter = new Filter("document.id", document.getMasterId());
|
}
|
|
public void setIoBatchId(String batchNo) {
|
this.ioBatchId = batchNo;
|
this.filter = new Filter("document.io_batch_id", batchNo);
|
}
|
|
public void setFilter(Filter filter) {
|
this.filter = filter;
|
}
|
|
public String getId() {
|
return meta.getId();
|
}
|
|
public String getIoBatchId() {
|
return ioBatchId;
|
}
|
|
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 getAccountWarehouse() {
|
return dimensions.get(MdSubject.AccountWarehouse);
|
}
|
|
|
public FlowTable getFlowTable() {
|
return flowTable;
|
}
|
|
public String getFlowTableName() {
|
return meta.getFlowTableName();
|
}
|
|
|
public String getDetailTableName() {
|
return meta.getDetailTable();
|
}
|
|
public String getBatchMark() {
|
return batchMark;
|
}
|
|
public String getDocumentTableName() {
|
DataObject dataObject = document.getMasterDataObject();
|
return dataObject.getTableName();
|
}
|
|
public String getDocumentDetailTableName() {
|
return detailObject.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() {
|
Entity org = dimensions.get(MdSubject.Account);
|
|
if (org != null) {
|
return org.getId();
|
}
|
|
return "";
|
}
|
|
public String getWarehouseID() throws Exception {
|
Entity warehouse = dimensions.get(MdSubject.Account);
|
|
if (warehouse != null) {
|
return warehouse.getId();
|
}
|
|
return "";
|
}
|
|
public void loadOneDimension(MdSubject subject, Entity entity) {
|
dimensions.add(subject, entity);
|
}
|
|
public Entity getWarehouse() {
|
Entity warehouse = dimensions.get(MdSubject.Warehouse);
|
|
if (warehouse != null) {
|
return warehouse;
|
}
|
|
return dimensions.get(MdSubject.AccountWarehouse);
|
}
|
|
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 Filter getFilter() {
|
Filter resultFilter = this.filter;
|
resultFilter.add(meta.getFilter());
|
return resultFilter;
|
}
|
|
public String getWarehouseSource() {
|
return meta.getWarehouseSource();
|
}
|
|
public DataSource getDataSource() {
|
return meta.getDataSource();
|
}
|
|
public String getBookDetailId() throws Exception {
|
return getBookSource();
|
}
|
|
private String getBookSource() {
|
return meta.getBookSource();
|
}
|
|
public String getDocumentNum() throws Exception {
|
FieldsRuntime fieldMetas = detailObject.getTableFieldMetas();
|
|
if (fieldMetas.contains("final_amt")) {
|
return "document_detail.final_amt";
|
}
|
|
if (fieldMetas.contains("amt_diff")) {
|
return "document_detail.amt_diff";
|
}
|
|
if (OrderRight.Return == getOrderRight()) {
|
return "amt_rebate_close";
|
}
|
|
return "document_detail." + meta.getValueField();
|
}
|
|
public String getRegion() throws Exception {
|
FieldsRuntime fieldMetas = masterObject.getTableFieldMetas();
|
|
if (fieldMetas.contains("region_name")) {
|
return "document.region_name";
|
}
|
|
return "null";
|
}
|
|
public List<MdSubject> getSubjects() {
|
return meta.getSubjects();
|
}
|
}
|