diff --git a/so/src/client/nccloud/web/so/saleorder/action/SaleOrderToQmsAction.java b/so/src/client/nccloud/web/so/saleorder/action/SaleOrderToQmsAction.java
new file mode 100644
index 00000000..1555fca8
--- /dev/null
+++ b/so/src/client/nccloud/web/so/saleorder/action/SaleOrderToQmsAction.java
@@ -0,0 +1,46 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+package nccloud.web.so.saleorder.action;
+
+import nc.vo.pub.BusinessException;
+import nc.vo.pubapp.pattern.exception.ExceptionUtils;
+import nc.vo.so.m30.entity.SaleOrderVO;
+import nccloud.dto.so.saleorder.entity.QueryInfo;
+import nccloud.framework.core.json.IJson;
+import nccloud.framework.service.ServiceLocator;
+import nccloud.framework.web.action.itf.ICommonAction;
+import nccloud.framework.web.container.IRequest;
+import nccloud.framework.web.json.JsonFactory;
+import nccloud.framework.web.ui.pattern.billcard.BillCard;
+import nccloud.framework.web.ui.pattern.billcard.BillCardOperator;
+import nccloud.pubitf.so.saleorder.service.ISaleOrderQueryWebService;
+import nccloud.web.so.pub.tool.BatchCodeTranslatorUtils;
+import nccloud.web.so.saleorder.calproperty.SaleOrderCalPropertyProcess;
+import nccloud.web.so.saleorder.scale.SaleOrderScaleProcess;
+
+public class SaleOrderToQmsAction implements ICommonAction {
+ public SaleOrderToQmsAction() {
+ }
+
+ public Object doAction(IRequest request) {
+ try {
+ String read = request.read();
+ IJson json = JsonFactory.create();
+ QueryInfo info = (QueryInfo)json.fromJson(read, QueryInfo.class);
+ ISaleOrderQueryWebService service = (ISaleOrderQueryWebService)ServiceLocator.find(ISaleOrderQueryWebService.class);
+ BillCardOperator operator = new BillCardOperator(info.getPageid());
+ SaleOrderVO saleorderVO = service.querySaleOrderVObyId(info.getPk());
+ BillCard result = operator.toCard(saleorderVO);
+ SaleOrderCalPropertyProcess.process(result);
+ SaleOrderScaleProcess.process(result);
+ BatchCodeTranslatorUtils.proBatchCode(result);
+ return result;
+ } catch (BusinessException e) {
+ ExceptionUtils.wrappException(e);
+ return null;
+ }
+ }
+}
diff --git a/so/src/client/yyconfig/modules/so/saleorder/config/action/saleorder.xml b/so/src/client/yyconfig/modules/so/saleorder/config/action/saleorder.xml
new file mode 100644
index 00000000..bab2acb6
--- /dev/null
+++ b/so/src/client/yyconfig/modules/so/saleorder/config/action/saleorder.xml
@@ -0,0 +1,399 @@
+
+
+
+ so.saleorder.save
+
+ nccloud.web.so.saleorder.action.SaleOrderSaveAction
+ Save
+
+
+ so.saleorder.saveCommit
+
+ nccloud.web.so.saleorder.action.SaleOrderSaveCommitAction
+ SaveCommit
+
+
+ so.saleorder.delete
+
+ nccloud.web.so.saleorder.action.SaleOrderDeleteAction
+ Delete
+
+
+ so.saleorder.batchdelete
+
+ nccloud.web.so.saleorder.action.SaleOrderBatchDeleteAction
+
+ Delete
+
+
+ so.saleorder.query
+
+ nccloud.web.so.saleorder.action.SaleOrderListQueryAction
+
+
+
+ so.saleorder.querycard
+
+ nccloud.web.so.saleorder.action.SaleOrderCardQueryAction
+
+
+
+ so.saleorder.copybill
+
+ nccloud.web.so.saleorder.action.SaleOrderCopyBillAction
+ Copy
+
+
+ so.saleorder.queryForPage
+
+ nccloud.web.so.saleorder.action.SaleOrderQueryForPageAction
+
+
+
+ so.saleorder.beforeaction
+
+ nccloud.web.so.saleorder.action.SaleOrderBeforeAction
+
+
+ so.saleorder.headafter
+
+ nccloud.web.so.saleorder.action.SaleOrderHeadAfterAction
+
+
+
+ so.saleorder.bodyafter
+
+ nccloud.web.so.saleorder.action.SaleOrderBodyAfterAction
+
+
+
+ so.saleorder.freeze
+
+ nccloud.web.so.saleorder.action.SaleOrderFreezeAction
+ Freeze
+
+
+ so.saleorder.batchfreeze
+
+ nccloud.web.so.saleorder.action.SaleOrderBatchFreezeAction
+
+ Freeze
+
+
+ so.saleorder.unfreeze
+
+ nccloud.web.so.saleorder.action.SaleOrderUnFreezeAction
+ UnFreeze
+
+
+ so.saleorder.batchunfreeze
+
+ nccloud.web.so.saleorder.action.SaleOrderBatchUnFreezeAction
+
+ UnFreeze
+
+
+ so.saleorder.billclose
+
+ nccloud.web.so.saleorder.action.SaleOrderBillCloseAction
+
+ CloseBill
+
+
+ so.saleorder.batchbillclose
+
+ nccloud.web.so.saleorder.action.SaleOrderBatchBillCloseAction
+
+ CloseBill
+
+
+ so.saleorder.commit
+
+ nccloud.web.so.saleorder.action.SaleOrderCommitAction
+ Commit
+
+
+ so.saleorder.batchcommit
+
+ nccloud.web.so.saleorder.action.SaleOrderBatchCommitAction
+
+ Commit
+
+
+ so.saleorder.uncommit
+
+ nccloud.web.so.saleorder.action.SaleOrderUnCommitAction
+ UnCommit
+
+
+ so.saleorder.batchuncommit
+
+ nccloud.web.so.saleorder.action.SaleOrderBatchUnCommitAction
+
+ UnCommit
+
+
+ so.saleorder.coopto21
+
+ nccloud.web.so.saleorder.action.SaleOrderCoopTo21Action
+ To21
+
+
+ so.saleorder.batchcoopto21
+
+ nccloud.web.so.saleorder.action.SaleOrderBatchCoopTo21Action
+
+ To21
+
+
+ so.saleorder.creditquery
+
+ nccloud.web.so.saleorder.action.SaleOrderCreditQueryAction
+
+ CreditQuery
+
+
+ so.saleorder.creditquerylist
+
+ nccloud.web.so.saleorder.action.SaleOrderListCreditQueryAction
+
+ CreditQuery
+
+
+ so.saleorder.recplanquery
+
+ nccloud.web.so.saleorder.action.SaleOrderRecPlanAction
+ ReceivePlan
+
+
+ so.saleorder.batchrecplanquery
+
+ nccloud.web.so.saleorder.action.SaleOrderBatchRecPlanAction
+
+ ReceivePlan
+
+
+ so.saleorder.arsubdetail
+
+ nccloud.web.so.saleorder.action.SaleOrderArsubDetailAction
+
+ CashArsubDetail
+
+
+ so.saleorder.batcharsubdetail
+
+ nccloud.web.so.saleorder.action.SaleOrderBatchArsubDetailAction
+
+ CashArsubDetail
+
+
+ so.saleorder.askprice
+
+ nccloud.web.so.saleorder.action.SaleOrderAskPriceAction
+ AskPrice,AskPriceEdit
+
+
+ so.saleorder.exchange
+
+ nccloud.web.so.saleorder.action.SaleOrderExchangeAction
+
+
+ so.saleorder.largessapportion
+
+ nccloud.web.so.saleorder.action.SaleOrderLargessApportionAction
+
+ LargessApportion
+
+
+ so.saleorder.unlargessapportion
+
+ nccloud.web.so.saleorder.action.SaleOrderUnLargessApportionAction
+
+ UndoLargessApportion
+
+
+ so.saleorder.offset
+
+ nccloud.web.so.saleorder.action.SaleOrderOffsetAction
+ Offset
+
+
+ so.saleorder.unoffset
+
+ nccloud.web.so.saleorder.action.SaleOrderUnOffsetAction
+ UnOffset
+
+
+ so.saleorder.transfer
+
+ nccloud.web.so.saleorder.action.SaleOrderTransferBillAction
+
+
+
+ so.saleorder.print
+
+ nccloud.web.so.saleorder.action.SaleOrderPrintAction
+ Print,OutPrint,Print_list
+
+
+ so.saleorder.sendarrange
+
+ nccloud.web.so.saleorder.action.SaleOrderSendArrangeAction
+
+ SendArrange
+
+
+ so.saleorder.replenishmentarrange
+
+ nccloud.web.so.saleorder.action.SaleOrderReplenishmentArrangeAction
+
+ ReplenishmentArrange
+
+
+ so.saleorder.directarrange
+
+ nccloud.web.so.saleorder.action.SaleOrderDirectArrangeAction
+
+ DirectArrange
+
+
+
+ so.saleorder.transtypequery
+
+ nccloud.web.so.saleorder.action.SaleOrderTransTypeQueryAction
+
+
+
+
+ so.saleorder.onhandquery
+
+ nccloud.web.so.saleorder.action.SaleOrderOnhandQueryAction
+
+ OnhandQuery
+
+
+
+ so.saleorder.transInfo
+
+ nccloud.web.so.saleorder.action.SaleOrderTransInfoAction
+
+
+
+
+ so.saleorder.edit
+
+ nccloud.web.so.saleorder.action.SaleOrderEditAction
+ Edit
+
+
+
+ so.saleorder.printpermission
+
+ nccloud.web.so.saleorder.action.SaleOrderPrintPermissionAction
+
+ Print,OutPrint,Print_list
+
+
+ so.saleorder.querytranstype
+
+ nccloud.web.so.saleorder.trantype.M30TransTypeQueryAction
+
+
+
+ so.saleorder.deletecheck
+
+ nccloud.web.so.saleorder.action.SaleOrderBatchDeleteCheck
+
+
+
+ so.saleorder.gathercheck
+
+ nccloud.web.so.saleorder.action.SaleOrderGatherCheckAction
+
+
+
+ so.saleorder.splitprint
+
+ nccloud.web.so.saleorder.action.SaleOrderSplitPrintAction
+
+ Splitprint
+
+
+ so.saleorder.querysplitparam
+
+ nccloud.web.so.saleorder.action.SaleOrderSplitPrintParamAction
+
+
+
+ so.pub.queryCashSale
+
+ nccloud.web.so.saleorder.action.SaleOrderCashSaleQueryAction
+
+
+
+ so.saleorder.cashSaleConfirm
+
+ nccloud.web.so.saleorder.action.SaleOrderCashSaleConfirmAction
+
+
+
+ so.saleorder.rowopr
+
+ nccloud.web.so.saleorder.action.SaleOrderRowOprAction
+
+
+ so.saleorder.execinfo
+
+ nccloud.web.so.saleorder.action.SaleOrderQueryExecInfo
+ ExecInfo
+
+
+ so.saleorder.saleeditprofit
+
+ nccloud.web.so.saleorder.action.SaleOrderEditProfitAction
+ SaleProfit
+
+
+ so.saleorder.saleprofit
+
+ nccloud.web.so.saleorder.action.SaleOrderProfitAction
+ SaleProfit
+
+
+ so.saleorder.priceform
+
+ nccloud.web.so.saleorder.action.SaleOrderPriceFormAction
+ PriceForm
+
+
+ so.saleorder.atpside
+
+ nccloud.web.so.saleorder.action.SaleOrderAtpSideAction
+
+
+ so.saleorder.reserveCheck
+
+ nccloud.web.so.saleorder.action.SaleOrderReserveCheckAction
+
+
+ so.saleorder.checkAskPrice
+
+ nccloud.web.so.saleorder.action.SaleOrderIsAskPriceAction
+
+
+ so.saleorder.sagaFrozenCheck
+
+ nccloud.web.so.saleorder.action.SaleOrderSagaFrozenCheckAction
+
+
+ so.refer.SaleorderGridRefer
+
+ nccloud.web.so.ref.SaleorderGridReferAction
+
+
+ so.refer.SaleOrderToQms
+
+ nccloud.web.so.saleorder.action.SaleOrderToQmsAction
+
+
+
diff --git a/so/src/client/yyconfig/modules/so/saleorder/config/authorize/saleorder_authorize.xml b/so/src/client/yyconfig/modules/so/saleorder/config/authorize/saleorder_authorize.xml
new file mode 100644
index 00000000..d69a8855
--- /dev/null
+++ b/so/src/client/yyconfig/modules/so/saleorder/config/authorize/saleorder_authorize.xml
@@ -0,0 +1,82 @@
+
+
+
+ 400600400,400600402,400600404,400600408,400613200,400613202,400613204
+
+ so.saleorder.save
+ so.saleorder.delete
+ so.saleorder.batchdelete
+ so.saleorder.query
+ so.saleorder.querycard
+ so.saleorder.copybill
+ so.saleorder.queryForPage
+ so.saleorder.beforeaction
+ so.saleorder.headafter
+ so.saleorder.bodyafter
+ so.saleorder.freeze
+ so.saleorder.batchfreeze
+ so.saleorder.unfreeze
+ so.saleorder.batchunfreeze
+ so.saleorder.billclose
+ so.saleorder.batchbillclose
+ so.saleorder.commit
+ so.saleorder.batchcommit
+ so.saleorder.uncommit
+ so.saleorder.batchuncommit
+ so.saleorder.coopto21
+ so.saleorder.batchcoopto21
+ so.saleorder.creditquery
+ so.saleorder.creditquerylist
+ so.saleorder.recplanquery
+ so.saleorder.batchrecplanquery
+ so.saleorder.arsubdetail
+ so.saleorder.batcharsubdetail
+ so.saleorder.askprice
+ so.saleorder.exchange
+ so.saleorder.largessapportion
+ so.saleorder.unlargessapportion
+ so.saleorder.offset
+ so.saleorder.unoffset
+ so.saleorder.transfer
+ so.saleorder.print
+ so.saleorder.sendarrange
+ so.saleorder.replenishmentarrange
+ so.saleorder.directarrange
+ so.saleorder.transtypequery
+ so.saleorder.onhandquery
+ so.saleorder.transInfo
+ so.saleorder.edit
+ so.saleorder.printpermission
+ so.saleorder.deletecheck
+ so.saleorder.gathercheck
+ so.saleorder.splitprint
+ so.saleorder.querysplitparam
+ so.pub.queryCashSale
+ so.saleorder.rowopr
+ so.saleorder.cashSaleConfirm
+ so.saleorder.saleprofit
+ so.saleorder.saleeditprofit
+ so.saleorder.execinfo
+ so.saleorder.priceform
+ so.saleorder.atpside
+ so.saleorder.reserveCheck
+ so.saleorder.checkAskPrice
+ so.saleorder.saveCommit
+ so.saleorder.sagaFrozenCheck
+ so.saleorder.SaleOrderToQms
+
+
+
+ *
+
+ so.saleorder.querytranstype
+
+
+
+ *
+
+ so.refer.SaleorderGridRefer
+
+
+
+