diff --git a/02.珠海市供水有限公司/ZHSW/ZHSW.csproj b/02.珠海市供水有限公司/ZHSW/ZHSW.csproj
index cd743d6..dc8aa9a 100644
--- a/02.珠海市供水有限公司/ZHSW/ZHSW.csproj
+++ b/02.珠海市供水有限公司/ZHSW/ZHSW.csproj
@@ -74,6 +74,7 @@
+
diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/1.每日员工出勤登记表_更新加班工时.py b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/1.每日员工出勤登记表_更新加班工时.py
new file mode 100644
index 0000000..f3c83a2
--- /dev/null
+++ b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/1.每日员工出勤登记表_更新加班工时.py
@@ -0,0 +1,39 @@
+import clr
+clr.AddReference("System")
+clr.AddReference("Kingdee.BOS")
+clr.AddReference("Kingdee.BOS.Core")
+clr.AddReference("Kingdee.BOS.DataEntity")
+clr.AddReference("Kingdee.BOS.App")
+clr.AddReference("Kingdee.BOS.Contracts")
+clr.AddReference("Kingdee.BOS.ServiceHelper")
+
+from Kingdee.BOS import *
+from Kingdee.BOS.Core import *
+from Kingdee.BOS.Core.Metadata.EntityElement import *
+from Kingdee.BOS.Orm.DataEntity import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
+from Kingdee.BOS.Util import *
+from System import *
+from System.ComponentModel import *
+from System.Collections.Generic import *
+from System.Text import*
+from Kingdee.BOS.ServiceHelper import *
+from Kingdee.BOS.Core.Metadata import *
+
+def BarItemClick(e):
+ if e.BarItemKey == "tbSNew" or e.BarItemKey == "tbNew":
+ if this.View.OpenParameter.Status == OperationStatus.ADDNEW:
+
+ sqlL = "exec hw_get_btbz";
+ dr = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlL);
+ if dr != None and dr.Count > 0:
+ for i in range(dr.Count):
+ this.Model.SetValue("FBT005", dr[0][1]);
+ this.View.UpdateView("FBT005");
+ this.Model.SetValue("FBT006", dr[1][1]);
+ this.View.UpdateView("FBT006");
+ this.Model.SetValue("FBT012", dr[2][1]);
+ this.View.UpdateView("FBT012");
+ return;
+
\ No newline at end of file
diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/HUIWEI.Python.pyproj b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/HUIWEI.Python.pyproj
index b117759..10c5b31 100644
--- a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/HUIWEI.Python.pyproj
+++ b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/HUIWEI.Python.pyproj
@@ -44,8 +44,10 @@
+
+
@@ -53,8 +55,10 @@
+
+
diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/产品Bom缺料分析报表构造.py b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/产品Bom缺料分析报表构造.py
index 51b16c9..7da4abc 100644
--- a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/产品Bom缺料分析报表构造.py
+++ b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/产品Bom缺料分析报表构造.py
@@ -125,6 +125,10 @@ FROM T_BD_MATERIAL t0
LEFT JOIN (
SELECT tt0.FMATERIALID,tt0.FSTOCKORGID,SUM(tt0.FBASEQTY) AS sumQTY
FROM T_STK_INVENTORY tt0
+ WHERE 1=1
+ AND tt0.FSTOCKID != 106441 --104-07 装配线边仓2
+ AND tt0.FSTOCKID != 106446 --203-07 装配线边仓1
+ AND tt0.FSTOCKID != 813683 --104-08 装配线边仓3
GROUP BY tt0.FMATERIALID,tt0.FSTOCKORGID
) t3 on t3.FMATERIALID = t0.FMASTERID AND t3.FSTOCKORGID = t0.FUSEORGID
LEFT JOIN (
diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/汇威日工资.sql b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/汇威日工资.sql
new file mode 100644
index 0000000..b226c03
--- /dev/null
+++ b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/汇威日工资.sql
@@ -0,0 +1,28 @@
+;WITH #table as (
+ SELECT t0.F_BTBZ,t0.FNUMBER
+ FROM GAT_t_Cust_Entry100057 t0
+ WHERE t0.FNUMBER IN ('BT005','BT006','BT012')
+)
+, #table1 AS (
+ SELECT t1.*
+ FROM #table t0
+ PIVOT (
+ SUM(t0.F_BTBZ) FOR
+ t0.FNUMBER IN (BT005,BT006,BT012)
+ ) t1
+)
+,#table2 AS (
+ SELECT *
+ FROM GAT_YGCQ t0
+ ,#table1 t1
+ WHERE CONVERT(int,CONVERT(varchar(6) ,t0.F_DATE,112)) = 202503
+ AND NOT (t0.FBT005 = t1.BT005
+ AND t0.FBT006 = t1.BT006
+ AND t0.FBT012 = t1.BT012
+ )
+)
+UPDATE t0 SET t0.FBT005 = t1.BT005
+ ,t0.FBT006 = t1.BT006
+ ,t0.FBT012 = t1.BT012
+FROM GAT_YGCQ t0
+ INNER JOIN #table2 t1 on t1.FID = t0.FID
\ No newline at end of file
diff --git a/04.天大药业(珠海)有限公司/MonthlyProductionSchedule.zip b/04.天大药业(珠海)有限公司/MonthlyProductionSchedule.zip
new file mode 100644
index 0000000..0609601
Binary files /dev/null and b/04.天大药业(珠海)有限公司/MonthlyProductionSchedule.zip differ
diff --git a/05.长园/CYG.Python/CRM_Contract/OperationEvenPlugInEx.py b/05.长园/CYG.Python/CRM_Contract/OperationEvenPlugInEx.py
index a9ece4f..6da189b 100644
--- a/05.长园/CYG.Python/CRM_Contract/OperationEvenPlugInEx.py
+++ b/05.长园/CYG.Python/CRM_Contract/OperationEvenPlugInEx.py
@@ -40,6 +40,22 @@ def BeforeDoSaveExecute(e):
planItem["FRECADVANCEAMOUNT"] = planItem["FRECADVANCERATE"] * FCONTRACTAMOUNT / 100
if planItem["F_CYG_Text"] == None or planItem["F_CYG_Text"] == "":
removeList.append(idx)
+ else:
+ if planItem["F_CYG_Text"] == "预付":
+ item["PlanPrepay"] = planItem["FRECADVANCEAMOUNT"]
+ item["PlanRatePrepay"] = planItem["FRECADVANCERATE"]
+ elif planItem["F_CYG_Text"] == "发货":
+ item["PlanDeliver"] = planItem["FRECADVANCEAMOUNT"]
+ item["PlanRateDeliver"] = planItem["FRECADVANCERATE"]
+ elif planItem["F_CYG_Text"] == "到货":
+ item["PlanArrive"] = planItem["FRECADVANCEAMOUNT"]
+ item["PlanRateArrive"] = planItem["FRECADVANCERATE"]
+ elif planItem["F_CYG_Text"] == "验收":
+ item["PlanCheck"] = planItem["FRECADVANCEAMOUNT"]
+ item["PlanRateCheck"] = planItem["FRECADVANCERATE"]
+ elif planItem["F_CYG_Text"] == "质保":
+ item["PlanQuality"] = planItem["FRECADVANCEAMOUNT"]
+ item["PlanRateQuality"] = planItem["FRECADVANCERATE"]
for idx in removeList:
FContractPlan.RemoveAt(idx)
diff --git a/05.长园/CYG/CYG.csproj b/05.长园/CYG/CYG.csproj
index 3120d08..5ed7be9 100644
--- a/05.长园/CYG/CYG.csproj
+++ b/05.长园/CYG/CYG.csproj
@@ -138,6 +138,11 @@
+
+
+
+
+
@@ -159,11 +164,13 @@
+
+
\ No newline at end of file
diff --git a/05.长园/CYG/成本字段四舍五入/发货通知单.sql b/05.长园/CYG/成本字段四舍五入/发货通知单.sql
new file mode 100644
index 0000000..83066b1
--- /dev/null
+++ b/05.长园/CYG/成本字段四舍五入/发货通知单.sql
@@ -0,0 +1,55 @@
+--˶
+--֪ͨ T_SAL_DELIVERYNOTICEENTRY
+;WITH #table1 AS (
+ SELECT t0e.FENTRYID
+ ,t0e.F_CYG_COST
+ ,ROUND(t0e.F_CYG_COST,2) 'New_F_CYG_COST'
+ ,t0e.F_CYG_COSTTOTAL
+ ,ROUND(t0e.F_CYG_COSTTOTAL,2) 'New_F_CYG_COSTTOTAL'
+ ,t0e.F_CYG_OPENPRICE
+ ,ROUND(t0e.F_CYG_OPENPRICE,2) 'New_F_CYG_OPENPRICE'
+ ,t0e.F_CYG_OPENTOTAL
+ ,ROUND(t0e.F_CYG_OPENTOTAL,2) 'New_F_CYG_OPENTOTAL'
+ ,t0e.F_CYG_MOUNTINGCOST
+ ,ROUND(t0e.F_CYG_MOUNTINGCOST,2) 'New_F_CYG_MOUNTINGCOST'
+ ,t0e.F_CYG_MOUNTINGTOTAL
+ ,ROUND(t0e.F_CYG_MOUNTINGTOTAL,2) 'New_F_CYG_MOUNTINGTOTAL'
+ ,t0e.F_CYG_OUTSOURCINGPRICE
+ ,ROUND(t0e.F_CYG_OUTSOURCINGPRICE,2) 'New_F_CYG_OUTSOURCINGPRICE'
+ ,t0e.F_CYG_OUTSOURCINGTOTAL
+ ,ROUND(t0e.F_CYG_OUTSOURCINGTOTAL,2) 'New_F_CYG_OUTSOURCINGTOTAL'
+ from T_SAL_DELIVERYNOTICE t0
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY t0e on t0.FID = t0e.FID
+ --WHERE t0.FBILLNO = 'FA20230202-9'
+)
+SELECT *
+FROM #table1 t0
+WHERE NOT (
+ t0.New_F_CYG_COST = t0.F_CYG_COST
+ AND t0.New_F_CYG_COSTTOTAL = t0.F_CYG_COSTTOTAL
+ AND t0.New_F_CYG_OPENPRICE = t0.F_CYG_OPENPRICE
+ AND t0.New_F_CYG_OPENTOTAL = t0.F_CYG_OPENTOTAL
+ AND t0.New_F_CYG_MOUNTINGCOST = t0.F_CYG_MOUNTINGCOST
+ AND t0.New_F_CYG_MOUNTINGTOTAL = t0.F_CYG_MOUNTINGTOTAL
+ AND t0.New_F_CYG_OUTSOURCINGPRICE = t0.F_CYG_OUTSOURCINGPRICE
+ AND t0.New_F_CYG_OUTSOURCINGTOTAL = t0.F_CYG_OUTSOURCINGTOTAL
+)
+--UPDATE t0e SET t0e.F_CYG_COST = t0.New_F_CYG_COST
+-- ,t0e.F_CYG_COSTTOTAL = t0.New_F_CYG_COSTTOTAL
+-- ,t0e.F_CYG_OPENPRICE = t0.New_F_CYG_OPENPRICE
+-- ,t0e.F_CYG_OPENTOTAL = t0.New_F_CYG_OPENTOTAL
+-- ,t0e.F_CYG_MOUNTINGCOST = t0.New_F_CYG_MOUNTINGCOST
+-- ,t0e.F_CYG_MOUNTINGTOTAL = t0.New_F_CYG_MOUNTINGTOTAL
+-- ,t0e.F_CYG_OUTSOURCINGPRICE = t0.New_F_CYG_OUTSOURCINGPRICE
+-- ,t0e.F_CYG_OUTSOURCINGTOTAL = t0.New_F_CYG_OUTSOURCINGTOTAL
+--FROM #table1 t0
+-- INNER JOIN T_SAL_DELIVERYNOTICEENTRY t0e on t0e.FENTRYID = t0.FENTRYID
+--WHERE NOT (t0.New_F_CYG_COST = t0.F_CYG_COST
+-- AND t0.New_F_CYG_COSTTOTAL = t0.F_CYG_COSTTOTAL
+-- AND t0.New_F_CYG_OPENPRICE = t0.F_CYG_OPENPRICE
+-- AND t0.New_F_CYG_OPENTOTAL = t0.F_CYG_OPENTOTAL
+-- AND t0.New_F_CYG_MOUNTINGCOST = t0.F_CYG_MOUNTINGCOST
+-- AND t0.New_F_CYG_MOUNTINGTOTAL = t0.F_CYG_MOUNTINGTOTAL
+-- AND t0.New_F_CYG_OUTSOURCINGPRICE = t0.F_CYG_OUTSOURCINGPRICE
+-- AND t0.New_F_CYG_OUTSOURCINGTOTAL = t0.F_CYG_OUTSOURCINGTOTAL
+--)
\ No newline at end of file
diff --git a/05.长园/CYG/成本字段四舍五入/应收单.sql b/05.长园/CYG/成本字段四舍五入/应收单.sql
new file mode 100644
index 0000000..e4d3e29
--- /dev/null
+++ b/05.长园/CYG/成本字段四舍五入/应收单.sql
@@ -0,0 +1,54 @@
+--Ӧյ t_AR_receivableEntry
+;WITH #table1 AS (
+ SELECT t0e.FENTRYID
+ ,t0e.F_CYG_COST
+ ,ROUND(t0e.F_CYG_COST,2) 'New_F_CYG_COST'
+ ,t0e.F_CYG_COSTTOTAL
+ ,ROUND(t0e.F_CYG_COSTTOTAL,2) 'New_F_CYG_COSTTOTAL'
+ ,t0e.F_CYG_OPENPRICE
+ ,ROUND(t0e.F_CYG_OPENPRICE,2) 'New_F_CYG_OPENPRICE'
+ ,t0e.F_CYG_OPENTOTAL
+ ,ROUND(t0e.F_CYG_OPENTOTAL,2) 'New_F_CYG_OPENTOTAL'
+ ,t0e.F_CYG_MOUNTINGCOST
+ ,ROUND(t0e.F_CYG_MOUNTINGCOST,2) 'New_F_CYG_MOUNTINGCOST'
+ ,t0e.F_CYG_MOUNTINGTOTAL
+ ,ROUND(t0e.F_CYG_MOUNTINGTOTAL,2) 'New_F_CYG_MOUNTINGTOTAL'
+ ,t0e.F_CYG_OUTSOURCINGPRICE
+ ,ROUND(t0e.F_CYG_OUTSOURCINGPRICE,2) 'New_F_CYG_OUTSOURCINGPRICE'
+ ,t0e.F_CYG_OUTSOURCINGTOTAL
+ ,ROUND(t0e.F_CYG_OUTSOURCINGTOTAL,2) 'New_F_CYG_OUTSOURCINGTOTAL'
+ from t_AR_receivable t0
+ INNER JOIN t_AR_receivableEntry t0e on t0.FID = t0e.FID
+ --WHERE t0.FBILLNO = 'FA20230202-9'
+)
+SELECT *
+FROM #table1 t0
+WHERE NOT (
+ t0.New_F_CYG_COST = t0.F_CYG_COST
+ AND t0.New_F_CYG_COSTTOTAL = t0.F_CYG_COSTTOTAL
+ AND t0.New_F_CYG_OPENPRICE = t0.F_CYG_OPENPRICE
+ AND t0.New_F_CYG_OPENTOTAL = t0.F_CYG_OPENTOTAL
+ AND t0.New_F_CYG_MOUNTINGCOST = t0.F_CYG_MOUNTINGCOST
+ AND t0.New_F_CYG_MOUNTINGTOTAL = t0.F_CYG_MOUNTINGTOTAL
+ AND t0.New_F_CYG_OUTSOURCINGPRICE = t0.F_CYG_OUTSOURCINGPRICE
+ AND t0.New_F_CYG_OUTSOURCINGTOTAL = t0.F_CYG_OUTSOURCINGTOTAL
+)
+--UPDATE t0e SET t0e.F_CYG_COST = t0.New_F_CYG_COST
+-- ,t0e.F_CYG_COSTTOTAL = t0.New_F_CYG_COSTTOTAL
+-- ,t0e.F_CYG_OPENPRICE = t0.New_F_CYG_OPENPRICE
+-- ,t0e.F_CYG_OPENTOTAL = t0.New_F_CYG_OPENTOTAL
+-- ,t0e.F_CYG_MOUNTINGCOST = t0.New_F_CYG_MOUNTINGCOST
+-- ,t0e.F_CYG_MOUNTINGTOTAL = t0.New_F_CYG_MOUNTINGTOTAL
+-- ,t0e.F_CYG_OUTSOURCINGPRICE = t0.New_F_CYG_OUTSOURCINGPRICE
+-- ,t0e.F_CYG_OUTSOURCINGTOTAL = t0.New_F_CYG_OUTSOURCINGTOTAL
+--FROM #table1 t0
+-- INNER JOIN t_AR_receivableEntry t0e on t0e.FENTRYID = t0.FENTRYID
+--WHERE NOT (t0.New_F_CYG_COST = t0.F_CYG_COST
+-- AND t0.New_F_CYG_COSTTOTAL = t0.F_CYG_COSTTOTAL
+-- AND t0.New_F_CYG_OPENPRICE = t0.F_CYG_OPENPRICE
+-- AND t0.New_F_CYG_OPENTOTAL = t0.F_CYG_OPENTOTAL
+-- AND t0.New_F_CYG_MOUNTINGCOST = t0.F_CYG_MOUNTINGCOST
+-- AND t0.New_F_CYG_MOUNTINGTOTAL = t0.F_CYG_MOUNTINGTOTAL
+-- AND t0.New_F_CYG_OUTSOURCINGPRICE = t0.F_CYG_OUTSOURCINGPRICE
+-- AND t0.New_F_CYG_OUTSOURCINGTOTAL = t0.F_CYG_OUTSOURCINGTOTAL
+--)
\ No newline at end of file
diff --git a/05.长园/CYG/成本字段四舍五入/退货申请单.sql b/05.长园/CYG/成本字段四舍五入/退货申请单.sql
new file mode 100644
index 0000000..462e85b
--- /dev/null
+++ b/05.长园/CYG/成本字段四舍五入/退货申请单.sql
@@ -0,0 +1,54 @@
+--˻뵥 T_SAL_RETURNNOTICEENTRY
+;WITH #table1 AS (
+ SELECT t0e.FENTRYID
+ ,t0e.F_CYG_COST
+ ,ROUND(t0e.F_CYG_COST,2) 'New_F_CYG_COST'
+ ,t0e.F_CYG_COSTTOTAL
+ ,ROUND(t0e.F_CYG_COSTTOTAL,2) 'New_F_CYG_COSTTOTAL'
+ ,t0e.F_CYG_OPENPRICE
+ ,ROUND(t0e.F_CYG_OPENPRICE,2) 'New_F_CYG_OPENPRICE'
+ ,t0e.F_CYG_OPENTOTAL
+ ,ROUND(t0e.F_CYG_OPENTOTAL,2) 'New_F_CYG_OPENTOTAL'
+ ,t0e.F_CYG_MOUNTINGCOST
+ ,ROUND(t0e.F_CYG_MOUNTINGCOST,2) 'New_F_CYG_MOUNTINGCOST'
+ ,t0e.F_CYG_MOUNTINGTOTAL
+ ,ROUND(t0e.F_CYG_MOUNTINGTOTAL,2) 'New_F_CYG_MOUNTINGTOTAL'
+ ,t0e.F_CYG_OUTSOURCINGPRICE
+ ,ROUND(t0e.F_CYG_OUTSOURCINGPRICE,2) 'New_F_CYG_OUTSOURCINGPRICE'
+ ,t0e.F_CYG_OUTSOURCINGTOTAL
+ ,ROUND(t0e.F_CYG_OUTSOURCINGTOTAL,2) 'New_F_CYG_OUTSOURCINGTOTAL'
+ from T_SAL_RETURNNOTICE t0
+ INNER JOIN T_SAL_RETURNNOTICEENTRY t0e on t0.FID = t0e.FID
+ --WHERE t0.FBILLNO = 'FA20230202-9'
+)
+SELECT *
+FROM #table1 t0
+WHERE NOT (
+ t0.New_F_CYG_COST = t0.F_CYG_COST
+ AND t0.New_F_CYG_COSTTOTAL = t0.F_CYG_COSTTOTAL
+ AND t0.New_F_CYG_OPENPRICE = t0.F_CYG_OPENPRICE
+ AND t0.New_F_CYG_OPENTOTAL = t0.F_CYG_OPENTOTAL
+ AND t0.New_F_CYG_MOUNTINGCOST = t0.F_CYG_MOUNTINGCOST
+ AND t0.New_F_CYG_MOUNTINGTOTAL = t0.F_CYG_MOUNTINGTOTAL
+ AND t0.New_F_CYG_OUTSOURCINGPRICE = t0.F_CYG_OUTSOURCINGPRICE
+ AND t0.New_F_CYG_OUTSOURCINGTOTAL = t0.F_CYG_OUTSOURCINGTOTAL
+)
+--UPDATE t0e SET t0e.F_CYG_COST = t0.New_F_CYG_COST
+-- ,t0e.F_CYG_COSTTOTAL = t0.New_F_CYG_COSTTOTAL
+-- ,t0e.F_CYG_OPENPRICE = t0.New_F_CYG_OPENPRICE
+-- ,t0e.F_CYG_OPENTOTAL = t0.New_F_CYG_OPENTOTAL
+-- ,t0e.F_CYG_MOUNTINGCOST = t0.New_F_CYG_MOUNTINGCOST
+-- ,t0e.F_CYG_MOUNTINGTOTAL = t0.New_F_CYG_MOUNTINGTOTAL
+-- ,t0e.F_CYG_OUTSOURCINGPRICE = t0.New_F_CYG_OUTSOURCINGPRICE
+-- ,t0e.F_CYG_OUTSOURCINGTOTAL = t0.New_F_CYG_OUTSOURCINGTOTAL
+--FROM #table1 t0
+-- INNER JOIN T_SAL_RETURNNOTICEENTRY t0e on t0e.FENTRYID = t0.FENTRYID
+--WHERE NOT (t0.New_F_CYG_COST = t0.F_CYG_COST
+-- AND t0.New_F_CYG_COSTTOTAL = t0.F_CYG_COSTTOTAL
+-- AND t0.New_F_CYG_OPENPRICE = t0.F_CYG_OPENPRICE
+-- AND t0.New_F_CYG_OPENTOTAL = t0.F_CYG_OPENTOTAL
+-- AND t0.New_F_CYG_MOUNTINGCOST = t0.F_CYG_MOUNTINGCOST
+-- AND t0.New_F_CYG_MOUNTINGTOTAL = t0.F_CYG_MOUNTINGTOTAL
+-- AND t0.New_F_CYG_OUTSOURCINGPRICE = t0.F_CYG_OUTSOURCINGPRICE
+-- AND t0.New_F_CYG_OUTSOURCINGTOTAL = t0.F_CYG_OUTSOURCINGTOTAL
+--)
\ No newline at end of file
diff --git a/05.长园/CYG/成本字段四舍五入/销售出库单.sql b/05.长园/CYG/成本字段四舍五入/销售出库单.sql
new file mode 100644
index 0000000..90f7bfa
--- /dev/null
+++ b/05.长园/CYG/成本字段四舍五入/销售出库单.sql
@@ -0,0 +1,54 @@
+--۳ⵥ T_SAL_OUTSTOCKENTRY
+;WITH #table1 AS (
+ SELECT t0e.FENTRYID
+ ,t0e.F_CYG_COST
+ ,ROUND(t0e.F_CYG_COST,2) 'New_F_CYG_COST'
+ ,t0e.F_CYG_COSTTOTAL
+ ,ROUND(t0e.F_CYG_COSTTOTAL,2) 'New_F_CYG_COSTTOTAL'
+ ,t0e.F_CYG_OPENPRICE
+ ,ROUND(t0e.F_CYG_OPENPRICE,2) 'New_F_CYG_OPENPRICE'
+ ,t0e.F_CYG_OPENTOTAL
+ ,ROUND(t0e.F_CYG_OPENTOTAL,2) 'New_F_CYG_OPENTOTAL'
+ ,t0e.F_CYG_MOUNTINGCOST
+ ,ROUND(t0e.F_CYG_MOUNTINGCOST,2) 'New_F_CYG_MOUNTINGCOST'
+ ,t0e.F_CYG_MOUNTINGTOTAL
+ ,ROUND(t0e.F_CYG_MOUNTINGTOTAL,2) 'New_F_CYG_MOUNTINGTOTAL'
+ ,t0e.F_CYG_OUTSOURCINGPRICE
+ ,ROUND(t0e.F_CYG_OUTSOURCINGPRICE,2) 'New_F_CYG_OUTSOURCINGPRICE'
+ ,t0e.F_CYG_OUTSOURCINGTOTAL
+ ,ROUND(t0e.F_CYG_OUTSOURCINGTOTAL,2) 'New_F_CYG_OUTSOURCINGTOTAL'
+ from T_SAL_OUTSTOCK t0
+ INNER JOIN T_SAL_OUTSTOCKENTRY t0e on t0.FID = t0e.FID
+ --WHERE t0.FBILLNO = 'FA20230202-9'
+)
+SELECT *
+FROM #table1 t0
+WHERE NOT (
+ t0.New_F_CYG_COST = t0.F_CYG_COST
+ AND t0.New_F_CYG_COSTTOTAL = t0.F_CYG_COSTTOTAL
+ AND t0.New_F_CYG_OPENPRICE = t0.F_CYG_OPENPRICE
+ AND t0.New_F_CYG_OPENTOTAL = t0.F_CYG_OPENTOTAL
+ AND t0.New_F_CYG_MOUNTINGCOST = t0.F_CYG_MOUNTINGCOST
+ AND t0.New_F_CYG_MOUNTINGTOTAL = t0.F_CYG_MOUNTINGTOTAL
+ AND t0.New_F_CYG_OUTSOURCINGPRICE = t0.F_CYG_OUTSOURCINGPRICE
+ AND t0.New_F_CYG_OUTSOURCINGTOTAL = t0.F_CYG_OUTSOURCINGTOTAL
+)
+--UPDATE t0e SET t0e.F_CYG_COST = t0.New_F_CYG_COST
+-- ,t0e.F_CYG_COSTTOTAL = t0.New_F_CYG_COSTTOTAL
+-- ,t0e.F_CYG_OPENPRICE = t0.New_F_CYG_OPENPRICE
+-- ,t0e.F_CYG_OPENTOTAL = t0.New_F_CYG_OPENTOTAL
+-- ,t0e.F_CYG_MOUNTINGCOST = t0.New_F_CYG_MOUNTINGCOST
+-- ,t0e.F_CYG_MOUNTINGTOTAL = t0.New_F_CYG_MOUNTINGTOTAL
+-- ,t0e.F_CYG_OUTSOURCINGPRICE = t0.New_F_CYG_OUTSOURCINGPRICE
+-- ,t0e.F_CYG_OUTSOURCINGTOTAL = t0.New_F_CYG_OUTSOURCINGTOTAL
+--FROM #table1 t0
+-- INNER JOIN T_SAL_OUTSTOCKENTRY t0e on t0e.FENTRYID = t0.FENTRYID
+--WHERE NOT (t0.New_F_CYG_COST = t0.F_CYG_COST
+-- AND t0.New_F_CYG_COSTTOTAL = t0.F_CYG_COSTTOTAL
+-- AND t0.New_F_CYG_OPENPRICE = t0.F_CYG_OPENPRICE
+-- AND t0.New_F_CYG_OPENTOTAL = t0.F_CYG_OPENTOTAL
+-- AND t0.New_F_CYG_MOUNTINGCOST = t0.F_CYG_MOUNTINGCOST
+-- AND t0.New_F_CYG_MOUNTINGTOTAL = t0.F_CYG_MOUNTINGTOTAL
+-- AND t0.New_F_CYG_OUTSOURCINGPRICE = t0.F_CYG_OUTSOURCINGPRICE
+-- AND t0.New_F_CYG_OUTSOURCINGTOTAL = t0.F_CYG_OUTSOURCINGTOTAL
+--)
\ No newline at end of file
diff --git a/05.长园/CYG/成本字段四舍五入/销售退货单.sql b/05.长园/CYG/成本字段四舍五入/销售退货单.sql
new file mode 100644
index 0000000..ed1743a
--- /dev/null
+++ b/05.长园/CYG/成本字段四舍五入/销售退货单.sql
@@ -0,0 +1,55 @@
+--˻ T_SAL_RETURNSTOCKENTRY
+;WITH #table1 AS (
+ SELECT t0e.FENTRYID
+ ,t0e.F_CYG_COST
+ ,ROUND(t0e.F_CYG_COST,2) 'New_F_CYG_COST'
+ ,t0e.F_CYG_COSTTOTAL
+ ,ROUND(t0e.F_CYG_COSTTOTAL,2) 'New_F_CYG_COSTTOTAL'
+ ,t0e.F_CYG_OPENPRICE
+ ,ROUND(t0e.F_CYG_OPENPRICE,2) 'New_F_CYG_OPENPRICE'
+ ,t0e.F_CYG_OPENTOTAL
+ ,ROUND(t0e.F_CYG_OPENTOTAL,2) 'New_F_CYG_OPENTOTAL'
+ ,t0e.F_CYG_MOUNTINGCOST
+ ,ROUND(t0e.F_CYG_MOUNTINGCOST,2) 'New_F_CYG_MOUNTINGCOST'
+ ,t0e.F_CYG_MOUNTINGTOTAL
+ ,ROUND(t0e.F_CYG_MOUNTINGTOTAL,2) 'New_F_CYG_MOUNTINGTOTAL'
+ ,t0e.F_CYG_OUTSOURCINGPRICE
+ ,ROUND(t0e.F_CYG_OUTSOURCINGPRICE,2) 'New_F_CYG_OUTSOURCINGPRICE'
+ ,t0e.F_CYG_OUTSOURCINGTOTAL
+ ,ROUND(t0e.F_CYG_OUTSOURCINGTOTAL,2) 'New_F_CYG_OUTSOURCINGTOTAL'
+ from T_SAL_RETURNSTOCK t0
+ INNER JOIN T_SAL_RETURNSTOCKENTRY t0e on t0.FID = t0e.FID
+ --WHERE t0.FBILLNO = 'FA20230202-9'
+)
+
+SELECT *
+FROM #table1 t0
+WHERE NOT (
+ t0.New_F_CYG_COST = t0.F_CYG_COST
+ AND t0.New_F_CYG_COSTTOTAL = t0.F_CYG_COSTTOTAL
+ AND t0.New_F_CYG_OPENPRICE = t0.F_CYG_OPENPRICE
+ AND t0.New_F_CYG_OPENTOTAL = t0.F_CYG_OPENTOTAL
+ AND t0.New_F_CYG_MOUNTINGCOST = t0.F_CYG_MOUNTINGCOST
+ AND t0.New_F_CYG_MOUNTINGTOTAL = t0.F_CYG_MOUNTINGTOTAL
+ AND t0.New_F_CYG_OUTSOURCINGPRICE = t0.F_CYG_OUTSOURCINGPRICE
+ AND t0.New_F_CYG_OUTSOURCINGTOTAL = t0.F_CYG_OUTSOURCINGTOTAL
+)
+--UPDATE t0e SET t0e.F_CYG_COST = t0.New_F_CYG_COST
+-- ,t0e.F_CYG_COSTTOTAL = t0.New_F_CYG_COSTTOTAL
+-- ,t0e.F_CYG_OPENPRICE = t0.New_F_CYG_OPENPRICE
+-- ,t0e.F_CYG_OPENTOTAL = t0.New_F_CYG_OPENTOTAL
+-- ,t0e.F_CYG_MOUNTINGCOST = t0.New_F_CYG_MOUNTINGCOST
+-- ,t0e.F_CYG_MOUNTINGTOTAL = t0.New_F_CYG_MOUNTINGTOTAL
+-- ,t0e.F_CYG_OUTSOURCINGPRICE = t0.New_F_CYG_OUTSOURCINGPRICE
+-- ,t0e.F_CYG_OUTSOURCINGTOTAL = t0.New_F_CYG_OUTSOURCINGTOTAL
+--FROM #table1 t0
+-- INNER JOIN T_SAL_RETURNSTOCKENTRY t0e on t0e.FENTRYID = t0.FENTRYID
+--WHERE NOT (t0.New_F_CYG_COST = t0.F_CYG_COST
+-- AND t0.New_F_CYG_COSTTOTAL = t0.F_CYG_COSTTOTAL
+-- AND t0.New_F_CYG_OPENPRICE = t0.F_CYG_OPENPRICE
+-- AND t0.New_F_CYG_OPENTOTAL = t0.F_CYG_OPENTOTAL
+-- AND t0.New_F_CYG_MOUNTINGCOST = t0.F_CYG_MOUNTINGCOST
+-- AND t0.New_F_CYG_MOUNTINGTOTAL = t0.F_CYG_MOUNTINGTOTAL
+-- AND t0.New_F_CYG_OUTSOURCINGPRICE = t0.F_CYG_OUTSOURCINGPRICE
+-- AND t0.New_F_CYG_OUTSOURCINGTOTAL = t0.F_CYG_OUTSOURCINGTOTAL
+--)
\ No newline at end of file
diff --git a/05.长园/CYG/销售合同数据计算/销售合同计算_20250618.sql b/05.长园/CYG/销售合同数据计算/销售合同计算_20250618.sql
new file mode 100644
index 0000000..a618afc
--- /dev/null
+++ b/05.长园/CYG/销售合同数据计算/销售合同计算_20250618.sql
@@ -0,0 +1,142 @@
+;WITH #۶ AS (
+ SELECT t1.FSALES
+ ,SUM(t1e_f.FALLAMOUNT_LC) 'ۼ۶λ'
+ ,SUM(t1e.F_CYG_OPENTOTAL) AS 'С'
+ ,SUM(t1e.F_CYG_OUTSOURCINGTOTAL) AS 'С'
+ ,SUM(t1e.F_CYG_MOUNTINGTOTAL) AS 'װС'
+ ,SUM(t1e.F_CYG_COSTTOTAL) AS 'ɱС'
+ FROM T_SAL_ORDER t1
+ INNER JOIN T_SAL_ORDERENTRY t1e on t1e.FID = t1.FID
+ INNER JOIN T_SAL_ORDERENTRY_F t1e_f on t1e_f.FENTRYID = t1e.FENTRYID
+ WHERE 1=1
+ AND t1.FDOCUMENTSTATUS = 'C'
+ AND t1.F_CYG_CHECKBALANCE != '1'
+ AND t1e.F_CYG_CHECKBALANCE1 != '1'
+ AND t1.FBILLTYPEID != 'a300e2620037435492aed9842875b451'
+ AND t1e.FMRPTERMINATESTATUS != 'B'
+ GROUP BY t1.FSALES
+)
+SELECT t1.*
+ ,t2.ۼƷλ
+ ,t3.ۼƿƱ
+ INTO #۶
+FROM #۶ t1
+ OUTER APPLY (
+ SELECT SUM(t3e.FALLAMOUNT) AS 'ۼƷλ'
+ FROM T_AR_RECEIVABLE t3
+ INNER JOIN T_AR_RECEIVABLEENTRY t3e on t3e.FID = t3.FID
+ WHERE t1.FSALES = t3.FSALES
+ AND t3.FSETACCOUNTTYPE = '2'--ͣݹ
+ AND t3.FDOCUMENTSTATUS = 'C'
+ AND t3.FBYVERIFY = '0' --ɷʽ
+ AND t3.FSALESORDERTYPE != '˻'
+ GROUP BY t3.FSALES
+ ) t2
+ OUTER APPLY (
+ SELECT SUM(t3e.FALLAMOUNT) AS 'ۼƿƱ'
+ FROM T_AR_RECEIVABLE t3
+ INNER JOIN T_AR_RECEIVABLEENTRY t3e on t3e.FID = t3.FID
+ WHERE t1.FSALES = t3.FSALES
+ AND t3.FSETACCOUNTTYPE = '3'--ͣ
+ AND t3.FDOCUMENTSTATUS = 'C'
+ AND t3.FBYVERIFY = '0'
+ --AND CHARINDEX('-',t3.FBILLNO) = 0
+ AND t3.FSALESORDERTYPE != '˻'
+ GROUP BY t3.FSALES
+ ) t3
+
+;WITH #ͬ AS (
+ SELECT t4.FOldFId
+ ,CAST(t4.FJSONDATA AS nvarchar(4000)) AS 'FJSONDATA'
+ ,ROW_NUMBER() OVER (PARTITION BY t4.FOldFId ORDER BY t4.FVERSION DESC) RN
+ FROM T_SCM_BILLCHANGEVERSIONS t4
+ WHERE 1 = 1
+ AND t4.FFormId = 'CRM_Contract'
+ AND t4.FACTIVESTATUS != 'A'
+)
+,#ۺͬ AS (
+ SELECT t0.FID,t0.FBILLNO,t0.F_CYG_SALESNUMBER,t0.F_CYG_SHIPMENTSTATUS 'ϵͳж״̬'
+ ,t0.FNAME as FName
+ ,t0.FDOCUMENTSTATUS
+ ,t0.F_CYG_ContractNoDL
+ ,'A' AS 'FFORBIDSTATUS'
+ ,t0f.FCONTRACTAMOUNT_LC AS 'ͬ'
+ ,t0.F_CYG_ORIGINAL_AMOUNT AS 'ԭʼͬ'
+ --,ISNULL(t4.FCONTRACTAMOUNT_X,t0f.F_CYG_CONTRACTCHANGE) AS 'ͬ仯'
+ ,t0f.FCONTRACTAMOUNT_LC - t0.F_CYG_ORIGINAL_AMOUNT AS 'ͬ仯'
+ ,ISNULL(t1.ۼ۶λ,0) AS 'ۼ۶λ'
+ ,ISNULL(t1.С,0) AS 'С'
+ ,ISNULL(t1.С,0) AS 'С'
+ ,ISNULL(t1.װС,0) AS 'װС'
+ ,ISNULL(t1.ɱС,0) AS 'ɱС'
+ ,ISNULL(t1.ۼƷλ,0) AS 'ۼƷλ'
+ ,ISNULL(t1.ۼƿƱ,0) AS 'ۼƿƱ'
+ ,CASE
+ WHEN (t0f.FCONTRACTAMOUNT_LC = ISNULL(t1.ۼƷλ,0) AND t0f.FCONTRACTAMOUNT_LC != 0) THEN '1'
+ WHEN t0f.FCONTRACTAMOUNT_LC = ISNULL(t1.ۼƷλ,0) THEN '4'
+ WHEN (t0f.FCONTRACTAMOUNT_LC > ISNULL(t1.ۼƷλ,0) AND ISNULL(t1.ۼƷλ,0) > 0) THEN '5'
+ ELSE '0'
+ END '״̬'
+ FROM T_CRM_CONTRACT t0
+ INNER JOIN T_CRM_CONTRACTFIN t0f on t0f.FID = t0.FID
+ LEFT JOIN #۶ t1 on t1.FSALES = t0.F_CYG_YSALESNUMBER
+ --OUTER APPLY (
+ -- SELECT CAST(JSON_VALUE(t4.FJSONDATA,'$.CRM_ContractFIN[0].FCONTRACTAMOUNT_LC') AS decimal(23,10)) - t0f.FCONTRACTAMOUNT_LC 'FCONTRACTAMOUNT_X'
+ -- FROM #ͬ t4
+ -- WHERE t4.FOLDFID = t0.FID AND t4.RN = 2
+ --) t4
+ WHERE 1=1
+ AND t0.FDOCUMENTSTATUS = 'C'
+ --AND t0f.FCONTRACTAMOUNT_LC > 0
+ AND t0.F_CYG_CONTRACTTYPE = '664cd624468638'
+ --AND CONVERT(int,CONVERT(varchar(4) ,t0.FDATE,112)) = 2024 --ֻͿԸ¶Ӧ
+)
+SELECT tt.FID,tt.FBILLNO,tt.F_CYG_SALESNUMBER,tt.FName
+ --,tt.FDOCUMENTSTATUS,tt.F_CYG_CONTRACTNODL,tt.FFORBIDSTATUS
+ ,tt.ͬ,tt.ͬ仯,tt.ۼ۶λ,tt.ͬ - tt.ۼ۶λ AS 'δµ۶λ'
+ ,tt.ۼƷλ,tt.ۼƿƱ
+ ,tt.ۼ۶λ - tt.ۼƷλ AS 'ʣδλ'
+ ,tt.ۼƷλ - tt.ۼƿƱ AS 'δƱ'
+ ,tt.װС,tt.ɱС,tt.С,tt.С
+ ,tt.ϵͳж״̬
+ ,tt.״̬
+ INTO #
+FROM #ۺͬ tt
+ INNER JOIN T_CRM_CONTRACTFIN t0 on t0.FID = tt.FID
+WHERE NOT ( t0.F_CYG_CUMSALESORDERS = tt.ۼ۶λ
+ AND t0.F_CYG_NOORDERSALES = tt.ͬ - tt.ۼ۶λ
+ AND t0.F_CYG_CUMSHIPMENT = tt.ۼƷλ
+ AND t0.F_CYG_REMAINSHIPMENT = tt.ۼ۶λ - tt.ۼƷλ
+ AND t0.F_CYG_CONTRACTCHANGE = tt.ͬ仯
+ AND t0.F_CYG_ACCUMULATEDINVOIC = tt.ۼƿƱ
+ AND t0.F_CYG_UNINVOICEDAMOUNT = tt.ۼƷλ - tt.ۼƿƱ
+ AND t0.F_CYG_OPENPRICE = tt.С
+ AND t0.F_CYG_OUTSOURCINGPRICE = tt.С
+ AND t0.F_CYG_MOUNTINGCOST = tt.װС
+ AND t0.F_CYG_COST = tt.ɱС
+ AND tt.״̬ = tt.ϵͳж״̬)
+
+UPDATE t0 SET t0.F_CYG_CUMSALESORDERS = tt.ۼ۶λ
+ ,t0.F_CYG_NOORDERSALES = tt.δµ۶λ
+ ,t0.F_CYG_CUMSHIPMENT = tt.ۼƷλ
+ ,t0.F_CYG_REMAINSHIPMENT = tt.ʣδλ
+ --,t0.F_CYG_CONTRACTCOLLECTION = tt.ͬտ
+ --,t0.F_CYG_SHIPMENTUNCOLLECTION = tt.ͬδտ
+ ,t0.F_CYG_CONTRACTCHANGE = tt.ͬ仯
+ ,t0.F_CYG_ACCUMULATEDINVOIC = tt.ۼƿƱ
+ ,t0.F_CYG_UNINVOICEDAMOUNT = tt.δƱ
+ ,t0.F_CYG_OPENPRICE = tt.С
+ ,t0.F_CYG_OUTSOURCINGPRICE = tt.С
+ ,t0.F_CYG_MOUNTINGCOST = tt.װС
+ ,t0.F_CYG_COST = tt.ɱС
+FROM T_CRM_CONTRACTFIN t0
+ INNER JOIN # tt on t0.FID = tt.FID
+
+UPDATE t0 SET t0.FMODIFYDATE = GETDATE()
+ ,t0.FMODIFIERID = 100007
+ ,t0.F_CYG_SHIPMENTSTATUS = tt.״̬
+FROM T_CRM_CONTRACT t0
+ INNER JOIN # tt on t0.FID = tt.FID
+
+DROP TABLE #۶
+DROP TABLE #
\ No newline at end of file
diff --git a/05.长园/CYG/销售订单字段四舍五入_20250321.sql b/05.长园/CYG/销售订单字段四舍五入_20250321.sql
new file mode 100644
index 0000000..3ccadf4
--- /dev/null
+++ b/05.长园/CYG/销售订单字段四舍五入_20250321.sql
@@ -0,0 +1,74 @@
+--ֶ滻Ӧ
+select
+ t0e.FID
+ ,t0e.F_CYG_COST
+ ,t0e.F_CYG_COST1
+
+ ,t0e.F_CYG_COSTTOTAL
+ ,t0e.F_CYG_AMOUNT1 --ɱ
+
+ ,t0e.F_CYG_OPENPRICE
+ ,t0e.F_CYG_OPENPRICE1
+
+ ,t0e.F_CYG_OPENTOTAL
+ ,t0e.F_CYG_AMOUNT2 --
+
+ ,t0e.F_CYG_MOUNTINGCOST
+ ,t0e.F_CYG_MOUNTINGCOST1
+
+ ,t0e.F_CYG_MOUNTINGTOTAL
+ ,t0e.F_CYG_AMOUNT3 --װ
+
+ ,t0e.F_CYG_OUTSOURCINGPRICE
+ ,t0e.F_CYG_OUTSOURCINGPRICE1
+
+ ,t0e.F_CYG_OUTSOURCINGTOTAL
+ ,t0e.F_CYG_AMOUNT4 --
+
+from T_SAL_ORDERENTRY t0e
+
+--ֶ
+UPDATE T_SAL_ORDERENTRY SET
+ F_CYG_COST1 = F_CYG_COST
+ ,F_CYG_AMOUNT1 = F_CYG_COSTTOTAL
+ ,F_CYG_OPENPRICE1 = F_CYG_OPENPRICE
+ ,F_CYG_AMOUNT2 = F_CYG_OPENTOTAL
+ ,F_CYG_MOUNTINGCOST1 = F_CYG_MOUNTINGCOST
+ ,F_CYG_AMOUNT3 = F_CYG_MOUNTINGTOTAL
+ ,F_CYG_OUTSOURCINGPRICE1 = F_CYG_OUTSOURCINGPRICE
+ ,F_CYG_AMOUNT4 = F_CYG_OUTSOURCINGTOTAL
+
+--ԭݽ
+UPDATE t0e SET
+ t0e.F_CYG_COST = ROUND(t0e.F_CYG_COST,2)
+ ,t0e.F_CYG_COSTTOTAL = ROUND(t0e.F_CYG_COSTTOTAL,2)
+ ,t0e.F_CYG_OPENPRICE = ROUND(t0e.F_CYG_OPENPRICE,2)
+ ,t0e.F_CYG_OPENTOTAL = ROUND(t0e.F_CYG_OPENTOTAL,2)
+ ,t0e.F_CYG_MOUNTINGCOST = ROUND(t0e.F_CYG_MOUNTINGCOST,2)
+ ,t0e.F_CYG_MOUNTINGTOTAL = ROUND(t0e.F_CYG_MOUNTINGTOTAL,2)
+ ,t0e.F_CYG_OUTSOURCINGPRICE = ROUND(t0e.F_CYG_OUTSOURCINGPRICE,2)
+ ,t0e.F_CYG_OUTSOURCINGTOTAL = ROUND(t0e.F_CYG_OUTSOURCINGTOTAL,2)
+FROM T_SAL_ORDERENTRY t0e
+ --INNER JOIN T_SAL_ORDERENTRY_BACKUP_202503211503 t1e on t0e.FENTRYID = t1e.FENTRYID
+
+--˶
+SELECT
+ t0e.F_CYG_COST
+ ,ROUND(t0e.F_CYG_COST,2)
+ ,t0e.F_CYG_COSTTOTAL
+ ,ROUND(t0e.F_CYG_COSTTOTAL,2)
+ ,t0e.F_CYG_OPENPRICE
+ ,ROUND(t0e.F_CYG_OPENPRICE,2)
+ ,t0e.F_CYG_OPENTOTAL
+ ,ROUND(t0e.F_CYG_OPENTOTAL,2)
+ ,t0e.F_CYG_MOUNTINGCOST
+ ,ROUND(t0e.F_CYG_MOUNTINGCOST,2)
+ ,t0e.F_CYG_MOUNTINGTOTAL
+ ,ROUND(t0e.F_CYG_MOUNTINGTOTAL,2)
+ ,t0e.F_CYG_OUTSOURCINGPRICE
+ ,ROUND(t0e.F_CYG_OUTSOURCINGPRICE,2)
+ ,t0e.F_CYG_OUTSOURCINGTOTAL
+ ,ROUND(t0e.F_CYG_OUTSOURCINGTOTAL,2)
+from T_SAL_ORDER t0
+ INNER JOIN T_SAL_ORDERENTRY t0e on t0.FID = t0e.FID
+WHERE t0.FBILLNO = 'FA20230202-9'
diff --git a/07.珠海英搏尔/Enpower.Python/Enpower.Python.pyproj b/07.珠海英搏尔/Enpower.Python/Enpower.Python.pyproj
index 83dfcdd..b8b8bea 100644
--- a/07.珠海英搏尔/Enpower.Python/Enpower.Python.pyproj
+++ b/07.珠海英搏尔/Enpower.Python/Enpower.Python.pyproj
@@ -28,9 +28,13 @@
+
+
+
+
diff --git a/07.珠海英搏尔/GZ.LJY000.Enpower/SUB_SUBREQORDER/ListEventPlugInEx.py b/07.珠海英搏尔/GZ.LJY000.Enpower/SUB_SUBREQORDER/ListEventPlugInEx.py
index 0282068..5231071 100644
--- a/07.珠海英搏尔/GZ.LJY000.Enpower/SUB_SUBREQORDER/ListEventPlugInEx.py
+++ b/07.珠海英搏尔/GZ.LJY000.Enpower/SUB_SUBREQORDER/ListEventPlugInEx.py
@@ -23,14 +23,15 @@ from Kingdee.BOS.Orm.DataEntity import*
def AfterDoOperation(e):
if e.Operation.Operation == "DoUpdateSubFORECAST":
selectedRows = this.ListView.SelectedRowsInfo;
- if selectedRows == None or selectedRows.Count == 0:
- this.View.ShowMessage("当前没有行被选中!");
- return;
+ # if selectedRows == None or selectedRows.Count == 0:
+ # this.View.ShowMessage("当前没有行被选中!");
+ # return;
- billNos = List[str]();
- for row in selectedRows:
- billNos.Add(row.BillNo);
+ # billNos = List[str]();
+ # for row in selectedRows:
+ # billNos.Add(row.BillNo);
- sql = "/*dialect*/ exec P_UpdateSubFORECAST '{0}'".format(",".join(billNos));
+ # sql = "/*dialect*/ exec P_UpdateSubFORECAST '{0}'".format(",".join(billNos));
+ sql = "/*dialect*/ exec P_UpdateSubFORECAST '' ";
dr = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
\ No newline at end of file
diff --git a/13.得米新材.zip b/13.得米新材.zip
deleted file mode 100644
index 810aff4..0000000
Binary files a/13.得米新材.zip and /dev/null differ
diff --git a/07.珠海英搏尔/GZ.LJY000.Enpower.zip b/14.宝锐/GZ.LJY000.Biori.zip
similarity index 95%
rename from 07.珠海英搏尔/GZ.LJY000.Enpower.zip
rename to 14.宝锐/GZ.LJY000.Biori.zip
index a9432c2..46996a4 100644
Binary files a/07.珠海英搏尔/GZ.LJY000.Enpower.zip and b/14.宝锐/GZ.LJY000.Biori.zip differ
diff --git a/14.宝锐/GZ.LJY000.Biori/GZ.LJY000.Biori.csproj b/14.宝锐/GZ.LJY000.Biori/GZ.LJY000.Biori.csproj
index 57f1f23..693cbd6 100644
--- a/14.宝锐/GZ.LJY000.Biori/GZ.LJY000.Biori.csproj
+++ b/14.宝锐/GZ.LJY000.Biori/GZ.LJY000.Biori.csproj
@@ -130,6 +130,8 @@
+
+
@@ -176,6 +178,7 @@
+
@@ -203,10 +206,12 @@
+
+
@@ -224,6 +229,8 @@
+
+
diff --git a/14.宝锐/GZ.LJY000.Biori/PLN_FORECAST/BillEventPlugInEx.py b/14.宝锐/GZ.LJY000.Biori/PLN_FORECAST/BillEventPlugInEx.py
index b2e9bb1..fe3afcf 100644
--- a/14.宝锐/GZ.LJY000.Biori/PLN_FORECAST/BillEventPlugInEx.py
+++ b/14.宝锐/GZ.LJY000.Biori/PLN_FORECAST/BillEventPlugInEx.py
@@ -57,11 +57,46 @@ def DataChanged(e):
details = this.View.BusinessInfo.GetEntity("FEntity")
entrys = this.View.Model.GetEntityDataObject(details)
+
+ parentQty = e.NewValue;
+ F_UHIK_Text = this.View.Model.GetValue("F_UHIK_Text",e.Row);
+
+ labQty = parentQty if F_UHIK_Text == None or len(F_UHIK_Text.strip()) <=0 else float(''.join(filter(lambda c: c.isdigit(), F_UHIK_Text)))
+ FCountQty = parentQty / labQty
+
+ this.View.Model.SetValue("FCountQty", FCountQty,e.Row)
+ this.View.UpdateView("FCountQty",e.Row);
for entry in entrys:
parentRowId = entry["ParentRowId"]
if parentRowId != None and parentRowId == pRowId:
rowIndex = this.View.Model.GetRowIndex(details, entry)
- this.View.Model.SetValue("F_UHIK_Qty2", e.NewValue,rowIndex)
- this.View.UpdateView("F_UHIK_Qty2",rowIndex);
- this.View.InvokeFieldUpdateService("F_UHIK_Qty2",rowIndex);
- # this.View.UpdateView("FCountQty",rowIndex);
\ No newline at end of file
+ this.View.Model.SetValue("FCountQty", FCountQty,rowIndex)
+ # this.View.UpdateView("F_UHIK_Qty2",rowIndex);
+ # this.View.InvokeFieldUpdateService("F_UHIK_Qty2",rowIndex);
+ this.View.UpdateView("FCountQty",rowIndex);
+
+ if e.Field.Key == "F_UHIK_Text":
+ rowType = this.View.Model.GetValue("FProductType", e.Row);
+ # raise Exception(rowType);
+ if rowType == '1':
+ pRowId = this.View.Model.GetValue("FRowId",e.Row)
+
+ details = this.View.BusinessInfo.GetEntity("FEntity");
+ entrys = this.View.Model.GetEntityDataObject(details);
+
+ parentQty = this.View.Model.GetValue("FQty",e.Row);
+ F_UHIK_Text = e.NewValue
+
+ labQty = parentQty if F_UHIK_Text == None or len(F_UHIK_Text.strip()) <=0 else float(''.join(filter(lambda c: c.isdigit(), F_UHIK_Text)))
+ FCountQty = parentQty / labQty
+
+ this.View.Model.SetValue("FCountQty", FCountQty,e.Row)
+ this.View.UpdateView("FCountQty",e.Row);
+ for entry in entrys:
+ parentRowId = entry["ParentRowId"]
+ if parentRowId != None and parentRowId == pRowId:
+ rowIndex = this.View.Model.GetRowIndex(details, entry)
+ this.View.Model.SetValue("FCountQty", FCountQty,rowIndex)
+ # this.View.UpdateView("F_UHIK_Qty2",rowIndex);
+ # this.View.InvokeFieldUpdateService("F_UHIK_Qty2",rowIndex);
+ this.View.UpdateView("FCountQty",rowIndex);
\ No newline at end of file
diff --git a/14.宝锐/GZ.LJY000.Biori/PRD_INSTOCK/OperationEventPlugIn/Audit.cs b/14.宝锐/GZ.LJY000.Biori/PRD_INSTOCK/OperationEventPlugIn/Audit.cs
new file mode 100644
index 0000000..545542f
--- /dev/null
+++ b/14.宝锐/GZ.LJY000.Biori/PRD_INSTOCK/OperationEventPlugIn/Audit.cs
@@ -0,0 +1,213 @@
+using GZ.LJY000.Biori.UHIK_PRD_PACKAGE_INSTOCK;
+using Kingdee.BOS.Core.DynamicForm;
+using Kingdee.BOS.Core.DynamicForm.PlugIn;
+using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
+using Kingdee.BOS.ServiceHelper;
+using Kingdee.BOS.Util;
+using Kingdee.K3.BD.NewCode.Core.Utils;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+
+namespace GZ.LJY000.Biori.PRD_INSTOCK.OperationEventPlugIn
+{
+ [HotUpdate, Description("审核_生产入库单操作")]
+ public class Audit : AbstractOperationServicePlugIn
+ {
+ public override void OnPreparePropertys(PreparePropertysEventArgs e)
+ {
+ base.OnPreparePropertys(e);
+ }
+
+ public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
+ {
+ base.BeforeExecuteOperationTransaction(e);
+ if (this.FormOperation.OperationId == 1)
+ {
+ #region 检测已经组装的套件是否有没有填写套件数
+ var idList = new List();
+ foreach (var entity in e.SelectedRows)
+ {
+ var billId = entity.DataEntity["Id"].Long2Int();
+
+ if (billId > 0)
+ idList.Add(billId);
+
+ }
+ //var billId = entity["Id"].Long2Int();
+
+ if (idList.Any())
+ {
+ var sql = $@"/*dialect*/
+
+;WITH #table1 AS (
+ SELECT t0.FBILLNO,t0.FDOCUMENTSTATUS,t0e.FID,t0e.FENTRYID,t0e.FSEQ,t0e.FPIECECOUNT
+ ,t1.FBILLNO 'FCBillNo',t1e.FID 'FCId',t1e.FENTRYID 'FCEntryId'
+ ,t2e.FENTRYID 'SrcEntryId'
+ ,ISNULL(t3.FBILLNO, '') 'PackBillNo'
+ ,t0e.FSTOCKID,t0e.FSTOCKLOCID
+ ,ROW_NUMBER() OVER (PARTITION BY t3.FBILLNO,t0e.FID ORDER BY t0e.FSEQ ASC,t0e.FPIECECOUNT DESC) RN
+ FROM T_PRD_INSTOCK t0
+ INNER JOIN T_PRD_INSTOCKENTRY t0e on t0.FID = t0e.FID
+ INNER JOIN T_PRD_INSTOCKENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FENTRYID
+ INNER JOIN T_PLN_FORECAST t1 on t1.FBILLNO = t0e_a.FREQBILLNO
+ INNER JOIN T_PLN_FORECASTENTRY t1e on t1.FID = t1e.FID AND t1e.FSEQ = t0e_a.FREQENTRYSEQ
+ AND t1e.FPRODUCTTYPE = 2
+ INNER JOIN T_PLN_FORECASTENTRY t2e on t2e.FID = t1e.FID AND t2e.FROWID = t1e.FPARENTROWID
+ AND t2e.FPRODUCTTYPE = 1
+ LEFT JOIN T_PRD_PACKAGEINSTOCK t3 on t3.FSRCBILLENTRYID = t2e.FENTRYID AND t3.FSRCBILLNO = t1.FBILLNO
+ WHERE 1 = 1
+ --AND t0.FDOCUMENTSTATUS != 'Z' AND t0.FDOCUMENTSTATUS != 'C'
+ AND t0.FID IN ({string.Join(",", idList)})
+)
+SELECT t0.*
+FROM #table1 t0
+WHERE t0.RN = 1
+
+";
+ var resData = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
+ if (resData != null && resData.Count > 0)
+ {
+ foreach (var item in resData)
+ {
+ var countQty = item["FPIECECOUNT"].Convert();
+
+ var strockId = item["FSTOCKID"].Long2Int();
+ var stocklocId = item["FSTOCKLOCID"].Long2Int();
+
+ if (countQty <= 0 || strockId == 0)
+ {
+ e.Cancel = true;
+
+ var billNo = item["FBILLNO"].ToString();
+ var packBillNo = item["PackBillNo"].ToString();
+ var fcBillNo = item["FCBillNo"].ToString();
+
+ var seq = item["FSEQ"].Long2Int();
+
+ var errMsg = string.Empty;
+
+ if (countQty <= 0)
+ errMsg = $"套件数量不能小于等于0!明细行【{seq}】组装单号【{packBillNo}】,预测单号【{fcBillNo}】";
+ else if(packBillNo.IsNullOrEmptyOrWhiteSpace())
+ errMsg = $"未生成成品组装单,预测单号【{fcBillNo}】";
+ else
+ errMsg = $"仓库位置不能为空!组装单号【{packBillNo}】,预测单号【{fcBillNo}】";
+
+ this.OperationResult.IsSuccess = false;
+ this.OperationResult.IsShowMessage = true;
+ this.OperationResult.OperateResult.Add(new OperateResult
+ {
+ SuccessStatus = false,
+ Number = billNo,
+ MessageType = MessageType.FatalError,
+ RowIndex = seq,
+ Message = errMsg
+ });
+
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+ }
+ }
+
+ public override void EndOperationTransaction(EndOperationTransactionArgs e)
+ {
+ base.EndOperationTransaction(e);
+ #region 根据套件数更新组装单库存信息
+ if (this.FormOperation.OperationId == 1)
+ {
+ var idList = new List();
+ foreach (var entity in e.DataEntitys)
+ {
+ var billId = entity["Id"].Long2Int();
+
+ if (billId > 0)
+ idList.Add(entity["Id"].Long2Int());
+
+ }
+ //var billId = entity["Id"].Long2Int();
+
+ if (idList.Any())
+ {
+ var sql = $@"/*dialect*/
+
+;WITH #table1 AS (
+ SELECT t0.FBILLNO,t0.FDOCUMENTSTATUS,t0e.FID,t0e.FENTRYID,t0e.FSEQ,t0e.FPIECECOUNT
+ ,t1.FBILLNO 'FCBillNo',t1e.FID 'FCId',t1e.FENTRYID 'FCEntryId'
+ ,t2e.FENTRYID 'SrcEntryId'
+ ,ISNULL(t3.FBILLNO, '') 'PackBillNo'
+ ,t0e.FSTOCKID,t0e.FSTOCKLOCID
+ ,ROW_NUMBER() OVER (PARTITION BY t3.FBILLNO,t0e.FID ORDER BY t0e.FSEQ ASC,t0e.FPIECECOUNT DESC) RN
+ FROM T_PRD_INSTOCK t0
+ INNER JOIN T_PRD_INSTOCKENTRY t0e on t0.FID = t0e.FID
+ INNER JOIN T_PRD_INSTOCKENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FENTRYID
+ INNER JOIN T_PLN_FORECAST t1 on t1.FBILLNO = t0e_a.FREQBILLNO
+ INNER JOIN T_PLN_FORECASTENTRY t1e on t1.FID = t1e.FID AND t1e.FSEQ = t0e_a.FREQENTRYSEQ
+ AND t1e.FPRODUCTTYPE = 2
+ INNER JOIN T_PLN_FORECASTENTRY t2e on t2e.FID = t1e.FID AND t2e.FROWID = t1e.FPARENTROWID
+ AND t2e.FPRODUCTTYPE = 1
+ LEFT JOIN T_PRD_PACKAGEINSTOCK t3 on t3.FSRCBILLENTRYID = t2e.FENTRYID AND t3.FSRCBILLNO = t1.FBILLNO
+ WHERE 1 = 1
+ --AND t0.FDOCUMENTSTATUS != 'Z'
+ AND t0.FID IN ({string.Join(",", idList)})
+)
+SELECT t0.*
+FROM #table1 t0
+WHERE t0.RN = 1
+
+";
+ var resData = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
+ if (resData != null && resData.Count > 0)
+ {
+ var packService = new PrdPackService(this.Context);
+ foreach (var item in resData)
+ {
+ var pieceCount = item["FPIECECOUNT"].Convert();
+ if (pieceCount > 0)
+ {
+
+ var billNo = item["FBILLNO"].ToString();
+ var packBillNo = item["PackBillNo"].ToString();
+ var fcBillNo = item["FCBillNo"].ToString();
+
+ var strockId = item["FSTOCKID"].Long2Int();
+ var stocklocId = item["FSTOCKLOCID"].Long2Int();
+
+
+ string msg = string.Empty;
+ var seq = item["FSEQ"].Long2Int();
+
+ var flag = packService.DoComputePackgeQty(packBillNo, strockId, stocklocId, pieceCount, true, ref msg);
+
+ if (!flag)
+ {
+ this.OperationResult.IsSuccess = false;
+ this.OperationResult.OperateResult.Add(new OperateResult
+ {
+ SuccessStatus = false,
+ Number = billNo,
+ MessageType = MessageType.FatalError,
+ RowIndex = seq,
+ Message = $"{msg},组装单号【{packBillNo}】,预测单号【{fcBillNo}】"
+ });
+ }
+ }
+ }
+ }
+
+ }
+
+
+ }
+ #endregion 根据套件数更新组装单库存信息
+ }
+ }
+}
diff --git a/14.宝锐/GZ.LJY000.Biori/PRD_INSTOCK/OperationEventPlugIn/UnAudit.cs b/14.宝锐/GZ.LJY000.Biori/PRD_INSTOCK/OperationEventPlugIn/UnAudit.cs
new file mode 100644
index 0000000..17dc961
--- /dev/null
+++ b/14.宝锐/GZ.LJY000.Biori/PRD_INSTOCK/OperationEventPlugIn/UnAudit.cs
@@ -0,0 +1,111 @@
+using GZ.LJY000.Biori.UHIK_PRD_PACKAGE_INSTOCK;
+using Kingdee.BOS.Core.DynamicForm;
+using Kingdee.BOS.Core.DynamicForm.PlugIn;
+using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
+using Kingdee.BOS.ServiceHelper;
+using Kingdee.BOS.Util;
+using Kingdee.K3.BD.NewCode.Core.Utils;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+
+namespace GZ.LJY000.Biori.PRD_INSTOCK.OperationEventPlugIn
+{
+ [HotUpdate, Description("反审核_生产入库单服务")]
+ public class UnAudit : AbstractOperationServicePlugIn
+ {
+ public override void EndOperationTransaction(EndOperationTransactionArgs e)
+ {
+ base.EndOperationTransaction(e);
+ #region 根据套件数更新组装单库存信息
+
+ if (this.FormOperation.OperationId == 26)
+ {
+ var idList = new List();
+ foreach (var entity in e.DataEntitys)
+ {
+ var billId = entity["Id"].Long2Int();
+
+ if (billId > 0)
+ idList.Add(entity["Id"].Long2Int());
+
+ }
+ //var billId = entity["Id"].Long2Int();
+
+ if (idList.Any())
+ {
+ var sql = $@"/*dialect*/
+
+;WITH #table1 AS (
+ SELECT t0.FBILLNO,t0e.FID,t0e.FENTRYID,t0e.FSEQ,t0e.FPIECECOUNT
+ ,t1.FBILLNO 'FCBillNo',t1e.FID 'FCId',t1e.FENTRYID 'FCEntryId'
+ ,t2e.FENTRYID 'SrcEntryId'
+ ,t3.FBILLNO 'PackBillNo'
+ ,t0e.FSTOCKID,t0e.FSTOCKLOCID
+ ,ROW_NUMBER() OVER (PARTITION BY t3.FBILLNO,t0e.FID ORDER BY t0e.FSEQ ASC,t0e.FPIECECOUNT DESC) RN
+ FROM T_PRD_INSTOCK t0
+ INNER JOIN T_PRD_INSTOCKENTRY t0e on t0.FID = t0e.FID
+ INNER JOIN T_PRD_INSTOCKENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FENTRYID
+ INNER JOIN T_PLN_FORECAST t1 on t1.FBILLNO = t0e_a.FREQBILLNO
+ INNER JOIN T_PLN_FORECASTENTRY t1e on t1.FID = t1e.FID AND t1e.FSEQ = t0e_a.FREQENTRYSEQ
+ AND t1e.FPRODUCTTYPE = 2
+ INNER JOIN T_PLN_FORECASTENTRY t2e on t2e.FID = t1e.FID AND t2e.FROWID = t1e.FPARENTROWID
+ AND t2e.FPRODUCTTYPE = 1
+ INNER JOIN T_PRD_PACKAGEINSTOCK t3 on t3.FSRCBILLENTRYID = t2e.FENTRYID AND t3.FSRCBILLNO = t1.FBILLNO
+ WHERE 1 = 1
+ --AND t0.FDOCUMENTSTATUS = 'C'
+ AND t0.FID IN ({string.Join(",", idList)})
+)
+SELECT t0.*
+FROM #table1 t0
+WHERE t0.RN = 1
+
+";
+ var resData = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
+ if (resData != null && resData.Count > 0)
+ {
+ var packService = new PrdPackService(this.Context);
+ foreach (var item in resData)
+ {
+ var pieceCount = item["FPIECECOUNT"].Convert();
+ if (pieceCount > 0)
+ {
+ var billNo = item["FBILLNO"].ToString();
+ var packBillNo = item["PackBillNo"].ToString();
+ var fcBillNo = item["FCBillNo"].ToString();
+
+ var strockId = item["FSTOCKID"].Long2Int();
+ var stocklocId = item["FSTOCKLOCID"].Long2Int();
+
+ string msg = string.Empty;
+ var seq = item["FSEQ"].Long2Int();
+
+ var flag = packService.DoComputePackgeQty(packBillNo, strockId, stocklocId, pieceCount, false, ref msg);
+
+ if (!flag)
+ {
+ this.OperationResult.IsSuccess = false;
+ this.OperationResult.OperateResult.Add(new OperateResult
+ {
+ SuccessStatus = false,
+ Number = billNo,
+ MessageType = MessageType.FatalError,
+ RowIndex = seq,
+ Message = $"{msg},组装单号【{packBillNo}】,预测单号【{fcBillNo}】"
+ });
+ }
+ }
+ }
+ }
+
+ }
+
+
+ }
+
+ #endregion
+ }
+ }
+}
diff --git a/14.宝锐/GZ.LJY000.Biori/PRD_INSTOCK/OperationEventPlugIn/生产入库单审核后更新组装单信息.py b/14.宝锐/GZ.LJY000.Biori/PRD_INSTOCK/OperationEventPlugIn/生产入库单审核后更新组装单信息.py
index 9bad403..adae2d4 100644
--- a/14.宝锐/GZ.LJY000.Biori/PRD_INSTOCK/OperationEventPlugIn/生产入库单审核后更新组装单信息.py
+++ b/14.宝锐/GZ.LJY000.Biori/PRD_INSTOCK/OperationEventPlugIn/生产入库单审核后更新组装单信息.py
@@ -38,27 +38,49 @@ def OnPreparePropertys(e):
e.FieldKeys.Add("FPieceCount");
e.FieldKeys.Add("FReqBillId");
e.FieldKeys.Add("FReqBillNo");
+ e.FieldKeys.Add("FReqEntrySeq");
def EndOperationTransaction(e):
# * 保存8提交9审核1反审核26删除3
if this.FormOperation.OperationId == 1:
for entity in e.DataEntitys:
# raise Exception(JsonUtil.Serialize(entity))
- entry = entity["Entity"][0]
- reqBillNo = entry["ReqBillNo"]
- strockid = entry["StockId_Id"]
- stocklocid = entry["StockLocId_Id"]
- pieceCount = float(entry["PieceCount"])
+ # entry = entity["Entity"][0]
+ # reqBillNo = entry["ReqBillNo"]
+ # reqEntrySeq = entry["ReqEntrySeq"]
+
+ # strockid = entry["StockId_Id"]
+ # stocklocid = entry["StockLocId_Id"]
+ # pieceCount = entry["PieceCount"]
+ billId = entity["Id"];
# msg = "";
sql = """/*dialect*/
- SELECT t0.FBILLNO
- FROM T_PRD_PACKAGEINSTOCK t0
- WHERE t0.FSRCBILLNO = '{0}'
- """.format(reqBillNo);
+
+;WITH #table1 AS (
+ SELECT t0e.FID,t0e.FENTRYID,t0e.FPIECECOUNT
+ ,t1.FBILLNO 'FCBillNo',t1e.FID 'FCId',t1e.FENTRYID 'FCEntryId'
+ ,t2e.FENTRYID 'SrcEntryId'
+ ,t3.FBILLNO 'PackBillNo'
+ ,t0e.FSTOCKID,t0e.FSTOCKLOCID
+ ,ROW_NUMBER() OVER (PARTITION BY t3.FBILLNO ORDER BY t0e.FID,t0e.FSEQ) RN
+ FROM T_PRD_INSTOCKENTRY t0e --on t0.FID = t0e.FID
+ INNER JOIN T_PRD_INSTOCKENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FENTRYID
+ INNER JOIN T_PLN_FORECAST t1 on t1.FBILLNO = t0e_a.FREQBILLNO
+ INNER JOIN T_PLN_FORECASTENTRY t1e on t1.FID = t1e.FID AND t1e.FSEQ = t0e_a.FREQENTRYSEQ
+ INNER JOIN T_PLN_FORECASTENTRY t2e on t2e.FID = t1e.FID AND t2e.FROWID = t1e.FPARENTROWID
+ INNER JOIN T_PRD_PACKAGEINSTOCK t3 on t3.FSRCBILLENTRYID = t2e.FENTRYID AND t3.FSRCBILLNO = t1.FBILLNO
+ WHERE t0e.FID = {0}
+)
+SELECT t0.*
+FROM #table1 t0
+WHERE t0.RN = 1
+
+ """.format(billId);
data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
if data.Count > 0:
packService = PrdPackService(this.Context)
msg = "";
+ # raise Exception(str(pieceCount))
flag = packService.DoComputePackgeQty(data[0]["FBILLNO"],strockid,stocklocid,pieceCount,True ,msg);
if flag == False:
raise Exception(msg)
@@ -67,23 +89,49 @@ def EndOperationTransaction(e):
if this.FormOperation.OperationId == 26:
for entity in e.DataEntitys:
# raise Exception(JsonUtil.Serialize(entity))
- entry = entity["Entity"][0]
- reqBillNo = entry["ReqBillNo"]
- strockid = entry["StockId_Id"]
- stocklocid = entry["StockLocId_Id"]
- pieceCount = float(entry["PieceCount"])
+ # entry = entity["Entity"][0]
+ # reqBillNo = entry["ReqBillNo"]
+ # reqEntrySeq = entry["ReqEntrySeq"]
+
+ # strockid = entry["StockId_Id"]
+ # stocklocid = entry["StockLocId_Id"]
+ # pieceCount = entry["PieceCount"]
+
+ billId = entity["Id"];
# msg = "";
sql = """/*dialect*/
- SELECT t0.FBILLNO
- FROM T_PRD_PACKAGEINSTOCK t0
- WHERE t0.FSRCBILLNO = '{0}'
- """.format(reqBillNo);
+
+;WITH #table1 AS (
+ SELECT t0e.FID,t0e.FENTRYID,t0e.FPIECECOUNT
+ ,t1.FBILLNO 'FCBillNo',t1e.FID 'FCId',t1e.FENTRYID 'FCEntryId'
+ ,t2e.FENTRYID 'SrcEntryId'
+ ,t3.FBILLNO 'PackBillNo'
+ ,t0e.FSTOCKID,t0e.FSTOCKLOCID
+ ,ROW_NUMBER() OVER (PARTITION BY t3.FBILLNO ORDER BY t0e.FID,t0e.FSEQ) RN
+ FROM T_PRD_INSTOCKENTRY t0e --on t0.FID = t0e.FID
+ INNER JOIN T_PRD_INSTOCKENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FENTRYID
+ INNER JOIN T_PLN_FORECAST t1 on t1.FBILLNO = t0e_a.FREQBILLNO
+ INNER JOIN T_PLN_FORECASTENTRY t1e on t1.FID = t1e.FID AND t1e.FSEQ = t0e_a.FREQENTRYSEQ
+ INNER JOIN T_PLN_FORECASTENTRY t2e on t2e.FID = t1e.FID AND t2e.FROWID = t1e.FPARENTROWID
+ INNER JOIN T_PRD_PACKAGEINSTOCK t3 on t3.FSRCBILLENTRYID = t2e.FENTRYID AND t3.FSRCBILLNO = t1.FBILLNO
+ WHERE t0e.FID = {0}
+)
+SELECT t0.*
+FROM #table1 t0
+WHERE t0.RN = 1
+
+ """.format(billId);
data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
if data.Count > 0:
packService = PrdPackService(this.Context)
- msg = "";
- flag = packService.DoComputePackgeQty(data[0]["FBILLNO"],strockid,stocklocid, pieceCount,False ,msg);
- if flag == False:
- raise Exception(msg)
+ for item in data:
+ msg = "";
+ packBillNo = item["PackBillNo"];
+ pieceCount = item["FPIECECOUNT"];
+ strockid = item["FSTOCKID"];
+ stocklocid = item["FSTOCKLOCID"];
+ flag = packService.DoComputePackgeQty(packBillNo,strockid,stocklocid, pieceCount,False ,msg);
+ if flag == False:
+ raise Exception(msg)
return;
\ No newline at end of file
diff --git a/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugIn/Audit.cs b/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugIn/Audit.cs
index ec7b531..2e0df73 100644
--- a/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugIn/Audit.cs
+++ b/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugIn/Audit.cs
@@ -49,16 +49,21 @@ namespace GZ.LJY000.Biori.SAL_OUTSTOCK.OperationEventPlugIn
//添加检查校验器:
if (this.FormOperation.OperationId == 1)
{
- var validator = new SubmitVaildator();//新增的校验器
- validator.EntityKey = "FEntity";
- e.Validators.Add(validator);//添加校验器
+ //var validator = new SubmitVaildator();//新增的校验器
+ //validator.EntityKey = "FEntity";
+ //e.Validators.Add(validator);//添加校验器
}
}
+ ///
+ ///
+ ///
+ ///
+ ///
public override void EndOperationTransaction(EndOperationTransactionArgs e)
{
base.EndOperationTransaction(e);
- //因启用审批流,导致提交后撤销时会默认反审核操作,故停用
+ //因启用审批流,导致提交后撤销时会默认反审核操作
if (this.FormOperation.OperationId == 1)
{
foreach (var entity in e.DataEntitys)
@@ -77,6 +82,8 @@ namespace GZ.LJY000.Biori.SAL_OUTSTOCK.OperationEventPlugIn
stockLocId = item["StockLocID_Id"].Long2Int(),
packBillNo = item["FPackBillNo"] == null ? string.Empty : item["FPackBillNo"].ToString(),
pieceCount = item["FCuntQty"].Convert(),
+
+ QRCode = item["FPackBarCode"] == null ? string.Empty : item["FPackBarCode"].ToString(),
};
dataList.Add(qv);
@@ -95,7 +102,7 @@ namespace GZ.LJY000.Biori.SAL_OUTSTOCK.OperationEventPlugIn
return pData;
}).ToList();
- if (pList.Any())
+ if (pList.Any(w => !w.QRCode.IsNullOrEmptyOrWhiteSpace()))
{
foreach (var p in pList)
{
@@ -153,7 +160,7 @@ namespace GZ.LJY000.Biori.SAL_OUTSTOCK.OperationEventPlugIn
public string packBillNo { get; set; }
public decimal pieceCount { get; set; }
-
+ public string QRCode { get; set; }
}
}
}
diff --git a/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugIn/Submit.cs b/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugIn/Submit.cs
index f178e4a..a5ebced 100644
--- a/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugIn/Submit.cs
+++ b/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugIn/Submit.cs
@@ -48,9 +48,9 @@ namespace GZ.LJY000.Biori.SAL_OUTSTOCK.OperationEventPlugIn
//添加检查校验器:
if (this.FormOperation.OperationId == 9)
{
- //var validator = new SubmitVaildator();//新增的校验器
- //validator.EntityKey = "FEntity";
- //e.Validators.Add(validator);//添加校验器
+ var validator = new SubmitVaildator();//新增的校验器
+ validator.EntityKey = "FEntity";
+ e.Validators.Add(validator);//添加校验器
}
}
diff --git a/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugIn/SubmitVaildator.cs b/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugIn/SubmitVaildator.cs
index 402ce55..c623536 100644
--- a/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugIn/SubmitVaildator.cs
+++ b/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugIn/SubmitVaildator.cs
@@ -1,6 +1,7 @@
using Kingdee.BOS;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Validation;
+using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using Kingdee.K3.BD.NewCode.Core.Utils;
@@ -81,6 +82,9 @@ exec Proc_Get_BarCode_Control_Param
if (dataList.Any())
{
+ #region 套件判断规则
+
+ //套件没有仓库仓位,需要先进行赋值
var pList = dataList.Where(w => w.QRCode.IsNullOrEmptyOrWhiteSpace() && w.rowType.Equals("Parent", StringComparison.OrdinalIgnoreCase)).Select(x =>
{
var pData = x;
@@ -115,9 +119,27 @@ WHERE t1.materialId = t0.FMATERIALID
";
var res = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
+
+ if (res != null && res.Count == 0)
+ {
+
+ sql = $@"/*dialect*/
+WITH #基础数据 AS ({(string.Join(" UNION ALL ", sqlL))})
+SELECT t0.FBARCODE,t0.FMATERIALID,t0.FLOT
+ ,t0.FBILLENTRYID,t0.FBILLID,t0.FBILLNO,t1.seq
+FROM T_UNW_WMS_BARCODE t0
+ INNER JOIN #基础数据 t1 on t1.materialId = t0.FMATERIALID
+ --AND t1.lot_text = t0.FLOT_TEXT
+WHERE t0.FCreateDate >= '2025-03-18'
+ AND t0.FTYPEID = 5
+";
+ res = null;
+ }
+
+ res = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
if (res != null && res.Count > 0)
{
- var title = "缺少对应条码!";
+ var title = "缺少对应条码或未组装!";
foreach (var item in res)
{
var data = pList[item["seq"].Long2Int()];
@@ -127,6 +149,10 @@ WHERE t1.materialId = t0.FMATERIALID
}
}
+ #endregion
+
+ #region 标准产品判断规则
+
var oList = dataList.Where(w => w.QRCode.IsNullOrEmptyOrWhiteSpace() && w.rowType.Equals("Standard", StringComparison.OrdinalIgnoreCase)).ToList();
if (oList.Any())
@@ -166,6 +192,8 @@ FROM T_UNW_WMS_BARCODE t0
}
+ #endregion
+
}
}
@@ -206,7 +234,7 @@ FROM T_UNW_WMS_BARCODE t0
public ExtendedDataEntity dataEntity { get; set; }
- public ErrorLevel errorLevel { get; set; }
+ public ErrorLevel errorLevel { get; set; }
public ValidationErrorInfo SetValidationErrorInfo(string keyName, string msg, string title)
{
diff --git a/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugIn/UnAudit.cs b/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugIn/UnAudit.cs
index 899c1f4..cceac79 100644
--- a/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugIn/UnAudit.cs
+++ b/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugIn/UnAudit.cs
@@ -24,12 +24,20 @@ namespace GZ.LJY000.Biori.SAL_OUTSTOCK.OperationEventPlugIn
e.FieldKeys.Add("FRowType");
e.FieldKeys.Add("FRowId");
e.FieldKeys.Add("FParentRowId");
- e.FieldKeys.Add("FPackBillNo");
+
+ e.FieldKeys.Add("FMaterialID");
+
+ e.FieldKeys.Add("FRealQty");
+
e.FieldKeys.Add("FStockID");
e.FieldKeys.Add("FStockLocID");
- e.FieldKeys.Add("FCuntQty");
+ e.FieldKeys.Add("FLot");
- e.FieldKeys.Add("FDocumentStatus");
+ e.FieldKeys.Add("FPackBillNo");
+ e.FieldKeys.Add("FPackBarCode");
+ e.FieldKeys.Add("FPDABarCode");
+
+ e.FieldKeys.Add("FCuntQty");
}
@@ -38,12 +46,12 @@ namespace GZ.LJY000.Biori.SAL_OUTSTOCK.OperationEventPlugIn
base.BeginOperationTransaction(e);
if (this.FormOperation.OperationId == 26)
{
- // 调整当前操作的数据包(该数据包稍后平台会自动更新保存到数据库)
- var billNoField = this.BusinessInfo.GetBillNoField();
- foreach (var dataEntity in e.DataEntitys)
- {
- dataEntity["F_Jac_Text"] = "来自数据包修改:" + dataEntity[billNoField.PropertyName];
- }
+ //// 调整当前操作的数据包(该数据包稍后平台会自动更新保存到数据库)
+ //var billNoField = this.BusinessInfo.GetBillNoField();
+ //foreach (var dataEntity in e.DataEntitys)
+ //{
+ // dataEntity["F_Jac_Text"] = "来自数据包修改:" + dataEntity[billNoField.PropertyName];
+ //}
}
}
diff --git a/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugInEx.py b/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugInEx.py
index 6c32563..0c90b39 100644
--- a/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugInEx.py
+++ b/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugInEx.py
@@ -50,7 +50,7 @@ def BeforeDoSaveExecute(e):
packBarCode = "" if entry["FPackBarCode"] == None else entry["FPackBarCode"].strip()
packBillNo = "" if entry["FPackBillNo"] == None else entry["FPackBillNo"].strip()
- if (rowType == 1 and packBillNo == "") or (rowType == 2 and packBarCode != "" and packBillNo == ""):
+ if (rowType == 1) or (rowType == 2 and packBarCode != ""):
materialId = entry["MaterialID_Id"]
entryId = entry["Id"]
rowId = entry["RowId"]
diff --git a/14.宝锐/GZ.LJY000.Biori/SQLServer/条码提示控制参数_存储过程.sql b/14.宝锐/GZ.LJY000.Biori/SQLServer/条码提示控制参数_存储过程.sql
index 5a2982d..0edb72c 100644
--- a/14.宝锐/GZ.LJY000.Biori/SQLServer/条码提示控制参数_存储过程.sql
+++ b/14.宝锐/GZ.LJY000.Biori/SQLServer/条码提示控制参数_存储过程.sql
@@ -1,4 +1,4 @@
-CREATE PROC Proc_Get_BarCode_Control_Param
+ALTER PROC Proc_Get_BarCode_Control_Param
AS
BEGIN
SELECT TOP 1
diff --git a/14.宝锐/GZ.LJY000.Biori/SQLServer/检测对应条码是否有组装.sql b/14.宝锐/GZ.LJY000.Biori/SQLServer/检测对应条码是否有组装.sql
new file mode 100644
index 0000000..2dca798
--- /dev/null
+++ b/14.宝锐/GZ.LJY000.Biori/SQLServer/检测对应条码是否有组装.sql
@@ -0,0 +1,14 @@
+SELECT t0.FBARCODE,t0.FMATERIALID,t0.FLOT
+ ,t0.FBILLENTRYID,t0.FBILLID,t0.FBILLNO
+ ,t0.FCreateDate
+ ,t0.FTYPEID
+ ,t0.FBILLNO 'Դ'
+ ,t0.FBILLFORMID
+ ,ISNULL(t1.FBILLNO,'') 'Ʒװ'
+ --,t0.*
+ --,t1.seq
+FROM T_UNW_WMS_BARCODE t0
+ LEFT JOIN T_PRD_PACKAGEINSTOCK t1 on t1.FSRCBILLENTRYID = t0.FBILLENTRYID
+WHERE 1 = 1
+ --AND t0.FCreateDate >= '2025-03-18'
+ AND t0.FTYPEID = 5
\ No newline at end of file
diff --git a/14.宝锐/GZ.LJY000.Biori/STK_MisDelivery/OperationEventPlugIn/Save.py b/14.宝锐/GZ.LJY000.Biori/STK_MisDelivery/OperationEventPlugIn/Save.py
new file mode 100644
index 0000000..21598c7
--- /dev/null
+++ b/14.宝锐/GZ.LJY000.Biori/STK_MisDelivery/OperationEventPlugIn/Save.py
@@ -0,0 +1,51 @@
+#引入clr运行库
+import clr
+#添加对cloud插件开发的常用组件的引用
+clr.AddReference('System')
+clr.AddReference('System.Data')
+clr.AddReference('Kingdee.BOS')
+clr.AddReference('Kingdee.BOS.Core')
+clr.AddReference('Kingdee.BOS.App')
+clr.AddReference('Kingdee.BOS.Contracts')
+clr.AddReference('Kingdee.BOS.ServiceHelper')
+#导入cloud基础库中的常用实体对象(分命名空间导入,不会递归导入)
+from Kingdee.BOS import *
+from Kingdee.BOS.Core import *
+from Kingdee.BOS.Core.Bill import *
+#from Kingdee.BOS.Orm import *
+from Kingdee.BOS.Contracts import *
+from Kingdee.BOS.App import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
+from System import *
+from System.Data import *
+from System.Text import *
+from System.Collections import *
+from Kingdee.BOS.App.Data import *
+from System.Collections.Generic import List
+from Kingdee.BOS.ServiceHelper import *
+
+def EndOperationTransaction(e):
+
+ ConvertType="";
+ if (this.Option.ContainsVariable("ConvertType")):
+ Variales = this.Option.GetVariables();
+ ConvertType = Variales["ConvertType"];
+ idList =List[object]();
+ for billObj in e.DataEntitys:
+ BillId = str(billObj["Id"]);
+ # F_IsAutoAudit = str(billObj["F_IsAutoAudit"]);
+ # if (F_IsAutoAudit == "1" or F_IsAutoAudit == "True"):
+ if (ConvertType == "AutoPush"):
+ idList.Add(BillId);
+
+ if(idList.Count <= 0):
+ return;
+ pkArray = idList.ToArray();
+ formID=this.BusinessInfo.GetForm().Id;
+ meta = MetaDataServiceHelper.Load(this.Context, formID);
+ submitOption = None;#OperateOption.Create();
+ submitResult = BusinessDataServiceHelper.Submit(this.Context,meta.BusinessInfo,pkArray,"Submit",submitOption);
+ if (submitResult.IsSuccess == True):
+ auditOption = None;#OperateOption.Create();
+ auditResult = BusinessDataServiceHelper.Audit(this.Context,meta.BusinessInfo,pkArray,auditOption);
\ No newline at end of file
diff --git a/14.宝锐/GZ.LJY000.Biori/STK_MisDelivery/OperationEventPlugIn/SubmitVaildator.cs b/14.宝锐/GZ.LJY000.Biori/STK_MisDelivery/OperationEventPlugIn/SubmitVaildator.cs
index f17f9e8..14d0ac9 100644
--- a/14.宝锐/GZ.LJY000.Biori/STK_MisDelivery/OperationEventPlugIn/SubmitVaildator.cs
+++ b/14.宝锐/GZ.LJY000.Biori/STK_MisDelivery/OperationEventPlugIn/SubmitVaildator.cs
@@ -47,11 +47,11 @@ namespace GZ.LJY000.Biori.STK_MisDelivery.OperationEventPlugIn
{
seq = item["Seq"].Long2Int(),
materialId = item["MaterialID_Id"].Long2Int(),
- rowType = item["RowType"].Convert(),
- rowId = item["RowId"].Convert(),
- parentRowId = item["ParentRowId"].Convert(),
- stockId = item["SrcStockId_Id"].Long2Int(),
- stockLocId = item["SrcStockLocId_Id"].Long2Int(),
+ //rowType = item["RowType"].Convert(),
+ //rowId = item["RowId"].Convert(),
+ //parentRowId = item["ParentRowId"].Convert(),
+ stockId = item["StockId_Id"].Long2Int(),
+ stockLocId = item["StockLocId_Id"].Long2Int(),
QRCode = item["FPackBarCode"] == null ? string.Empty : item["FPackBarCode"].ToString(),
//lotId = item["Lot_Id"].Long2Int(),
dataEntity = data,
@@ -65,51 +65,6 @@ namespace GZ.LJY000.Biori.STK_MisDelivery.OperationEventPlugIn
if (dataList.Any())
{
- var pList = dataList.Where(w => w.QRCode.IsNullOrEmptyOrWhiteSpace() && w.rowType.Equals("Parent", StringComparison.OrdinalIgnoreCase)).Select(x =>
- {
- var pData = x;
- var sData = dataList.FirstOrDefault(w => w.rowType.Equals("Son", StringComparison.OrdinalIgnoreCase) && w.parentRowId == pData.rowId);
- if (sData != null)
- {
- pData.stockId = sData.stockId;
- pData.stockLocId = sData.stockLocId;
- pData.lotId = sData.lotId;
- }
-
- return pData;
- }).ToList();
-
- if (pList.Any())
- {
- var sqlL = new List();
- var idx = 0;
- foreach (var o in pList)
- {
- sqlL.Add($@" SELECT {idx} seq,{o.materialId} materialId ,{o.stockId} stockId,{o.stockLocId} stockLocId,{o.lotId} lotId ");
- idx++;
- }
-
- var sql = $@"/*dialect*/
-WITH #基础数据 AS ({(string.Join(" UNION ALL ", sqlL))})
-SELECT t0s.FPACKSTOCKID,t0s.FPACKSTOCKLOCID,t0s.FPACKCOUNT,t0s.FSTOCKQTY,t1.seq
-FROM T_PRD_PACKAGEINSTOCK t0
- INNER JOIN T_PRD_PACKAGEINSTOCKSTOCK t0s on t0.FID = t0s.FID
- INNER JOIN #基础数据 t1 on t1.stockId = t0s.FPACKSTOCKID AND t0s.FPACKSTOCKLOCID = t1.stockLocId
-WHERE t1.materialId = t0.FMATERIALID
-";
-
- var res = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
- if (res != null && res.Count > 0)
- {
- var title = "缺少对应条码!";
- foreach (var item in res)
- {
- var data = pList[item["seq"].Long2Int()];
- if (data.QRCode.IsNullOrEmptyOrWhiteSpace())
- validateContext.AddError(data.dataEntity, data.SetValidationErrorInfo("FPackBarCode", $"没有填写条码:第[{data.seq}]行明细,对应物料批号已存在条码!", title));
- }
- }
- }
var oList = dataList.Where(w => w.QRCode.IsNullOrEmptyOrWhiteSpace() && w.rowType.Equals("Standard", StringComparison.OrdinalIgnoreCase)).ToList();
diff --git a/14.宝锐/GZ.LJY000.Biori/STK_TransferDirect/OperationEventPlugIn/Audit.cs b/14.宝锐/GZ.LJY000.Biori/STK_TransferDirect/OperationEventPlugIn/Audit.cs
index fd3cf4e..87e8354 100644
--- a/14.宝锐/GZ.LJY000.Biori/STK_TransferDirect/OperationEventPlugIn/Audit.cs
+++ b/14.宝锐/GZ.LJY000.Biori/STK_TransferDirect/OperationEventPlugIn/Audit.cs
@@ -75,6 +75,9 @@ namespace GZ.LJY000.Biori.STK_TransferDirect.OperationEventPlugIn
destStockLocId = item["DestStockLocId_Id"].Long2Int(),
packBillNo = item["FPackBillNo"] == null ? string.Empty : item["FPackBillNo"].ToString(),
+
+ QRCode = item["FPackBarCode"] == null ? string.Empty : item["FPackBarCode"].ToString(),
+
pieceCount = item["FCuntQty"].Convert(),
};
@@ -97,7 +100,7 @@ namespace GZ.LJY000.Biori.STK_TransferDirect.OperationEventPlugIn
return pData;
}).ToList();
- if (pList.Any())
+ if (pList.Any(w => !w.QRCode.IsNullOrEmptyOrWhiteSpace()))
{
foreach (var p in pList)
{
@@ -110,11 +113,13 @@ namespace GZ.LJY000.Biori.STK_TransferDirect.OperationEventPlugIn
var pieceCount = p.pieceCount;
var packService = new PrdPackService(this.Context);
+
+ //调出仓库
var flag = packService.DoComputePackgeQty(packBillNo, p.srcStockId, p.srcStockLocId, pieceCount, isIn, ref msg);
if (!flag)
throw new Exception(msg);
-
+ //调入仓库
var flag2 = packService.DoComputePackgeQty(packBillNo, p.destStockId, p.destStockLocId, pieceCount, !isIn, ref msg);
if (!flag2)
throw new Exception(msg);
@@ -160,6 +165,8 @@ namespace GZ.LJY000.Biori.STK_TransferDirect.OperationEventPlugIn
public string packBillNo { get; set; }
+ public string QRCode { get; set; }
+
public decimal pieceCount { get; set; }
}
diff --git a/14.宝锐/GZ.LJY000.Biori/STK_TransferDirect/OperationEventPlugIn/SubmitVaildator.cs b/14.宝锐/GZ.LJY000.Biori/STK_TransferDirect/OperationEventPlugIn/SubmitVaildator.cs
index 77e3203..3110a8c 100644
--- a/14.宝锐/GZ.LJY000.Biori/STK_TransferDirect/OperationEventPlugIn/SubmitVaildator.cs
+++ b/14.宝锐/GZ.LJY000.Biori/STK_TransferDirect/OperationEventPlugIn/SubmitVaildator.cs
@@ -51,6 +51,7 @@ exec Proc_Get_BarCode_Control_Param
if (packConl == 0)
return;
+
#endregion 控制是否启用条码控制
//string title = "条码匹配";
@@ -82,19 +83,20 @@ exec Proc_Get_BarCode_Control_Param
if (dataList.Any())
{
+ #region 套件判断规则
var pList = dataList.Where(w => w.QRCode.IsNullOrEmptyOrWhiteSpace() && w.rowType.Equals("Parent", StringComparison.OrdinalIgnoreCase)).Select(x =>
- {
- var pData = x;
- var sData = dataList.FirstOrDefault(w => w.rowType.Equals("Son", StringComparison.OrdinalIgnoreCase) && w.parentRowId == pData.rowId);
- if (sData != null)
- {
- pData.stockId = sData.stockId;
- pData.stockLocId = sData.stockLocId;
- pData.lotId = sData.lotId;
- }
+ {
+ var pData = x;
+ var sData = dataList.FirstOrDefault(w => w.rowType.Equals("Son", StringComparison.OrdinalIgnoreCase) && w.parentRowId == pData.rowId);
+ if (sData != null)
+ {
+ pData.stockId = sData.stockId;
+ pData.stockLocId = sData.stockLocId;
+ pData.lotId = sData.lotId;
+ }
- return pData;
- }).ToList();
+ return pData;
+ }).ToList();
if (pList.Any())
{
@@ -116,6 +118,25 @@ WHERE t1.materialId = t0.FMATERIALID
";
var res = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
+
+ if (res != null && res.Count == 0)
+ {
+
+ sql = $@"/*dialect*/
+WITH #基础数据 AS ({(string.Join(" UNION ALL ", sqlL))})
+SELECT t0.FBARCODE,t0.FMATERIALID,t0.FLOT
+ ,t0.FBILLENTRYID,t0.FBILLID,t0.FBILLNO,t1.seq
+FROM T_UNW_WMS_BARCODE t0
+ INNER JOIN #基础数据 t1 on t1.materialId = t0.FMATERIALID
+ --AND t1.lot_text = t0.FLOT_TEXT
+WHERE t0.FCreateDate >= '2025-03-18'
+ AND t0.FTYPEID = 5
+";
+ res = null;
+ }
+
+ res = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
+
if (res != null && res.Count > 0)
{
var title = "缺少对应条码!";
@@ -127,7 +148,9 @@ WHERE t1.materialId = t0.FMATERIALID
}
}
}
+ #endregion
+ #region 标准产品判断规则
var oList = dataList.Where(w => w.QRCode.IsNullOrEmptyOrWhiteSpace() && w.rowType.Equals("Standard", StringComparison.OrdinalIgnoreCase)).ToList();
if (oList.Any())
@@ -166,7 +189,7 @@ FROM T_UNW_WMS_BARCODE t0
}
}
-
+ #endregion
}
}
diff --git a/14.宝锐/GZ.LJY000.Biori/STK_TransferDirect/OperationEventPlugInEx.py b/14.宝锐/GZ.LJY000.Biori/STK_TransferDirect/OperationEventPlugInEx.py
index dab64db..df8c626 100644
--- a/14.宝锐/GZ.LJY000.Biori/STK_TransferDirect/OperationEventPlugInEx.py
+++ b/14.宝锐/GZ.LJY000.Biori/STK_TransferDirect/OperationEventPlugInEx.py
@@ -99,6 +99,7 @@ ORDER BY tt.EntrySeq
return;
def EndOperationTransaction(e):
+ # 8保存
if this.FormOperation.OperationId == 8:
for entity in e.DataEntitys:
# entries = entity["TransferDirectEntry"]
diff --git a/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/BillConvertEventPlugInEx.cs b/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/BillConvertEventPlugInEx.cs
index 08519fc..bd41c59 100644
--- a/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/BillConvertEventPlugInEx.cs
+++ b/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/BillConvertEventPlugInEx.cs
@@ -237,7 +237,7 @@ namespace GZ.LJY000.Biori.UHIK_PRD_PACKAGE_INSTOCK
,t0e.FUNITID,t0e.FBASEUNITID
,t0e.FROWID,t0e.FPARENTROWID,t0e.FBOMID,t0e.FBOMENTRYID,t0e.FOWNERID,t0e.FOWNERTYPEID
,t0e.FPRODUCTTYPE,t0e.FSEQ,t0e.F_UHIK_TEXT8 AS '标签货号'
- ,t0e.F_UHIK_QTY2 AS '父项数量',t0e.F_UHIK_TEXT2 AS '标签规格_Note'
+ ,t0e.F_UHIK_QTY4 AS '父项数量',t0e.F_UHIK_TEXT2 AS '标签规格_Note'
,t0e.FSTOCKORGID AS '库存组织',t0e.F_HUOHAO AS '货号'
,t0e.F_UHIK_DATE AS '标签生产日期'
,t0e.F_UHIK_DATE1 AS '标签有效期至'
diff --git a/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/PrdPackService.cs b/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/PrdPackService.cs
index 4308988..8aa7146 100644
--- a/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/PrdPackService.cs
+++ b/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/PrdPackService.cs
@@ -39,10 +39,11 @@ namespace GZ.LJY000.Biori.UHIK_PRD_PACKAGE_INSTOCK
/// 仓位id
/// 数量
/// 是否入库
+ ///
public bool DoComputePackgeQty(string packBillNo, long stockId, long stockLocId, decimal qty, bool isIn, ref string msg)
{
IOperationResult result = new OperationResult();
- if (!packBillNo.IsNullOrEmptyOrWhiteSpace() && qty != 0)
+ if (!packBillNo.IsNullOrEmptyOrWhiteSpace() && qty != 0M)
{
if (stockId == 0)
{
diff --git a/14.宝锐/GZ.LJY000.Biori/UNW_WMS_NORMALRECORD/BillEventPlugIn/1.设置仓位文本值.py b/14.宝锐/GZ.LJY000.Biori/UNW_WMS_NORMALRECORD/BillEventPlugIn/1.设置仓位文本值.py
new file mode 100644
index 0000000..93945d2
--- /dev/null
+++ b/14.宝锐/GZ.LJY000.Biori/UNW_WMS_NORMALRECORD/BillEventPlugIn/1.设置仓位文本值.py
@@ -0,0 +1,81 @@
+import clr
+clr.AddReference("System")
+clr.AddReference("System.Xml")
+clr.AddReference("Kingdee.BOS")
+clr.AddReference("Kingdee.BOS.Core")
+clr.AddReference("Kingdee.BOS.DataEntity")
+clr.AddReference("Kingdee.BOS.App")
+clr.AddReference("Kingdee.BOS.Contracts")
+clr.AddReference("Kingdee.BOS.ServiceHelper")
+
+from Kingdee.BOS import *
+from Kingdee.BOS.Contracts import *
+from Kingdee.BOS.Core import *
+from Kingdee.BOS.Core.List import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
+from Kingdee.BOS.Core.Metadata.EntityElement import *
+from Kingdee.BOS.Core.Bill import *
+from Kingdee.BOS.Core.Metadata import *
+from Kingdee.BOS.Orm.DataEntity import *
+from Kingdee.BOS.Util import *
+from Kingdee.BOS.Core.Util import *
+from System import *
+from System.Xml import *
+from System.ComponentModel import *
+from System.Collections.Generic import *
+from System.Text import*
+from Kingdee.BOS.ServiceHelper import *
+
+def DataChanged(e):
+ if e.Field.Key == "FStockLocId1":
+ stockLocId = e.NewValue;
+ if stockLocId == None or stockLocId == 0:
+ return;
+
+ stockObj = this.View.Model.GetValue("FStockId1");
+ stockId = 0 if stockObj == None else stockObj["Id"];
+ # raise Exception("SS");
+ ffSqlL = """/*dialect*/
+SELECT t0.FFLEXNUMBER
+FROM T_BAS_FLEXVALUES t0
+WHERE t0.FDOCUMENTSTATUS = 'C'
+ AND t0.FFORBIDSTATUS = 'A'
+ """
+
+ ffData = DBServiceHelper.ExecuteDynamicObject(this.Context, ffSqlL);
+ ffNumberText = ",".join(list(map(lambda x: x["FFLEXNUMBER"], ffData)));
+
+ sqlL = """/*dialect*/
+SELECT t0.FSTOCKID,t0_l.FNAME '仓库',t0.FNUMBER '仓位',t0f.FENTRYID,t0f.FFLEXID,t0f.FSEQ
+ ,t1.FNUMBER,t1.FFLEXNUMBER,t1e_l.FNAME
+ ,t2.*
+FROM T_BD_STOCK t0
+ INNER JOIN T_BD_STOCK_L t0_l on t0.FSTOCKID = t0_l.FSTOCKID AND t0_l.FLOCALEID = 2052
+ INNER JOIN T_BD_STOCKFLEXITEM t0f on t0.FSTOCKID = t0f.FSTOCKID
+ INNER JOIN T_BAS_FLEXVALUES t1 on t1.FID = t0f.FFLEXID
+ INNER JOIN T_BAS_FLEXVALUESENTRY t1e on t1e.FID = t1.FID
+ INNER JOIN T_BAS_FLEXVALUESENTRY_L t1e_l on t1e.FENTRYID = t1e_l.FENTRYID AND t1e_l.FLOCALEID = 2052
+ CROSS APPLY (
+ SELECT t2.FID 'StocklocId'
+ FROM T_BAS_FLEXVALUESDETAIL
+ UNPIVOT (
+ T_BAS_FLEXVALUESDETAIL FOR FFLEXNUMBER IN ({0})
+ ) AS t2
+ WHERE 1 = 1
+ AND t2.FID = {2}
+ AND t2.FFLEXNUMBER = t1.FFLEXNUMBER AND t1e.FENTRYID = t2.T_BAS_FLEXVALUESDETAIL
+ ) t2
+WHERE t0.FSTOCKID = {1}
+ """.format(ffNumberText,stockId,stockLocId);
+ resData = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlL);
+
+ if resData == None or len(resData) == 0:
+ return;
+
+ data = resData[0];
+
+ this.View.Model.SetValue("FStockLocText", data["FNAME"]);
+
+ # raise Exception(ffNumberText)
+ return;
diff --git a/14.宝锐/GZ.LJY000.Biori/UNW_WMS_NORMALRECORD/ListEventPlugIn/1.设置仓位显示字段.py b/14.宝锐/GZ.LJY000.Biori/UNW_WMS_NORMALRECORD/ListEventPlugIn/1.设置仓位显示字段.py
new file mode 100644
index 0000000..810dbc6
--- /dev/null
+++ b/14.宝锐/GZ.LJY000.Biori/UNW_WMS_NORMALRECORD/ListEventPlugIn/1.设置仓位显示字段.py
@@ -0,0 +1,45 @@
+import clr
+clr.AddReference("System")
+clr.AddReference("System.Xml")
+clr.AddReference("Kingdee.BOS")
+clr.AddReference("Kingdee.BOS.Core")
+clr.AddReference("Kingdee.BOS.DataEntity")
+clr.AddReference("Kingdee.BOS.App")
+clr.AddReference("Kingdee.BOS.Contracts")
+clr.AddReference("Kingdee.BOS.ServiceHelper")
+
+from Kingdee.BOS import *
+from Kingdee.BOS.Contracts import *
+from Kingdee.BOS.Core import *
+from Kingdee.BOS.Core.List import *
+from Kingdee.BOS.Core.List.PlugIn import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
+from Kingdee.BOS.Core.Metadata.EntityElement import *
+from Kingdee.BOS.Core.Bill import *
+from Kingdee.BOS.Core.Metadata import *
+from Kingdee.BOS.Orm.DataEntity import *
+from Kingdee.BOS.Util import *
+from Kingdee.BOS.Core.Util import *
+from System import *
+from System.Xml import *
+from System.ComponentModel import *
+from System.Collections.Generic import *
+from System.Text import*
+from Kingdee.BOS.ServiceHelper import *
+from Kingdee.BOS.Core.CommonFilter import *
+
+def PrepareFilterParameter(e):
+
+ # data = this.ListModel.FilterParameter.SelectedEntities
+ data2 = this.ListModel.FilterParameter.ColumnInfo
+ newData = List[ColumnField]();
+ for item in data2:
+ if item.RealKey == "FStockLocId1":
+ if item.Key != "FStockLocId1":
+ continue;
+ newData.Add(item);
+
+ if newData.Count > 0:
+ this.ListModel.FilterParameter.ColumnInfo = newData;
+ # raise Exception(JsonUtil.Serialize(data2))
+ return;
\ No newline at end of file
diff --git a/14.宝锐/GZ.LJY000.Biori/UNW_WMS_NORMALRECORD/ListEventPlugIn/ListEventPlugInEx.cs b/14.宝锐/GZ.LJY000.Biori/UNW_WMS_NORMALRECORD/ListEventPlugIn/ListEventPlugInEx.cs
new file mode 100644
index 0000000..088b541
--- /dev/null
+++ b/14.宝锐/GZ.LJY000.Biori/UNW_WMS_NORMALRECORD/ListEventPlugIn/ListEventPlugInEx.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Kingdee.BOS.Core.List.PlugIn;
+using Kingdee.BOS.Core.List.PlugIn.Args;
+
+namespace GZ.LJY000.Biori.UNW_WMS_NORMALRECORD.ListEventPlugIn
+{
+ public class ListEventPlugInEx : AbstractListPlugIn
+ {
+ public override void PrepareFilterParameter(FilterArgs e)
+ {
+ base.PrepareFilterParameter(e);
+ var data = this.ListModel.FilterParameter.ColumnInfo;
+ }
+
+ }
+}
diff --git a/16.全球时代/SQLQuery2.sql b/16.全球时代/SQLQuery2.sql
new file mode 100644
index 0000000..62ab566
--- /dev/null
+++ b/16.全球时代/SQLQuery2.sql
@@ -0,0 +1,314 @@
+SELECT t0.FPRODUCTNO
+ ,t1.FID
+ ,t0.FBILLID
+ ,t0.FBILLENTRYID
+ ,t0.FPRODUCTID
+ ,t0.FFORMID
+ ,t1.FPRODUCTDIMEID
+ ,t1.FORDERBILLNO
+ ,t1.FORDERBILLSEQ
+ ,t2.FACCTGORGID
+ ,RANK() OVER (ORDER BY t1.FORDERBILLNO,t1.FORDERBILLSEQ DESC) 'RN'
+ ,(t2.FYEAR * 100 + t2.FPERIOD) AS 'FPERIOD'
+ INTO #ɱ㵥_Ʒ
+FROM T_CB_PROORDERDIME t0
+ INNER JOIN V_CB_PROORDERINFO t1 on t1.FPRODUCTDIMEID = t0.FPRODUCTDIMEID
+ AND t1.FORDERBILLSEQ != 0
+ AND t1.FENDINITKEY = 1
+ INNER JOIN V_HS_OUTACCTG t2 on t1.FACCTGID = t2.FID
+WHERE 1 = 1
+ AND t2.FACCTGORGID = 1
+ AND t2.FCOMPUTEID != ''
+ AND t2.FYEAR = 2025
+ AND t2.FPERIOD = 1
+ AND t0.FFORMID = 'PRD_MO'
+
+ --AND t1.FORDERBILLNO = 'FO00001468'
+
+;WITH #Ʒ AS (
+ SELECT t0.FPRODUCTNO
+ ,t0.FID
+ ,t0.FBILLID
+ ,t0.FBILLENTRYID
+ ,t0.FPRODUCTID
+ ,t0.FFORMID
+ ,t0.FPRODUCTDIMEID
+ ,t0.FORDERBILLNO
+ ,t0.FORDERBILLSEQ
+ ,t0.FACCTGORGID
+ ,RANK() OVER (ORDER BY t0.RN) RN
+ ,t0.FPERIOD
+ ,t3.FQUALIFIEDINQTY AS '깤'
+ ,t3.FCURRINPUTQTY AS 'Ͷ'
+ ,t3.FSUMCURRINPUTQTY AS 'ۼͶ'
+ ,t3.FSUMQUALIFIEDINQTY AS 'ۼ깤'
+ ,t3.FSUMQUALIFIEDINAMOUNT 'ۼƺϸ'
+ ,t3.FENTRYID
+ ,t3d.FSumQualifiedInAmount
+ ,t4_l.expName
+ FROM #ɱ㵥_Ʒ t0
+ INNER JOIN V_CB_COSTCALEXPENSE t3 on t3.FID = t0.FID AND t3.FSUMQUALIFIEDINQTY > 0
+ INNER JOIN V_CB_COSTCALEXPENSEDETAIL t3d on t3d.FENTRYID = t3.FENTRYID
+ INNER JOIN V_BD_COST_RESTORE_EXPENSE t4_l on t4_l.FEXPID = t3d.FEXPENSESITEMID
+ WHERE 1 = 1
+),
+#ɱת AS (
+ SELECT *
+ FROM #Ʒ t0
+ PIVOT (
+ SUM(t0.FSumQualifiedInAmount) FOR
+ t0.expName IN (O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13)
+ ) t1
+)
+SELECT t0.RN,t0.FORDERBILLNO '۶',t0.FORDERBILLSEQ '۶к'
+ ,t0.FPRODUCTNO '',t0.FPRODUCTID,t0.Ͷ,t0.깤,t0.ۼͶ,t0.ۼ깤,0 FMATERIALID
+ ,'ϼ' ''
+ ,t0.ۼƺϸ
+ ,ISNULL(t0.O1,0) AS Ϸ
+ ,ISNULL(t0.O2,0) AS
+ ,ISNULL(t0.O3,0) AS ۾ɷ
+ ,ISNULL(t0.O4,0) AS 칫Ʒ
+ ,ISNULL(t0.O5,0) AS
+ ,ISNULL(t0.O6,0) AS 籣
+ ,ISNULL(t0.O7,0) AS ⽻ͨ
+ ,ISNULL(t0.O8,0) AS ÷
+ ,ISNULL(t0.O9,0) AS
+ ,ISNULL(t0.O10,0) AS ˮ
+ ,ISNULL(t0.O11,0) AS ݷ
+ ,ISNULL(t0.O12,0) AS 칫
+ ,ISNULL(t0.O13,0) AS _
+ ,t0.FPRODUCTDIMEID,t0.FID,t0.FPERIOD,t0.FACCTGORGID
+ ,CONCAT(t0.RN,'') aPath
+ INTO #Ʒɱ
+FROM #ɱת t0
+
+;WITH #Ʒϳɱ AS (
+ SELECT t0.RN,t0.۶,t0.۶к,t0.,t0.FPRODUCTID,t0.Ͷ,t0.깤,t0.ۼͶ,t0.ۼ깤
+ ,t0.ۼƺϸ,t0.FPRODUCTDIMEID,t0.FID
+ ,t3m.FMATERIALID
+ ,t3m.FEXPTYPE
+ ,CASE t3m.FEXPTYPE WHEN 0 THEN 'ֱӲ' WHEN 1 THEN 'Ӳ' WHEN 2 THEN 'ӹ' WHEN 9 THEN 'ʱ' ELSE '' END AS ''
+ ,t3md.FSUMQUALIFIEDINAMOUNT 'ۼƺϸ_'
+ ,t4_l.expName
+ ,t0.FPERIOD
+ ,t0.aPath
+ ,t0.FACCTGORGID
+ --,RANK() OVER (PARTITION BY t0.RN ORDER BY t3m.FEXPTYPE DESC) RN1
+ FROM #Ʒɱ t0
+ INNER JOIN V_CB_COSTMATTERIAL t3m on t3m.FID = t0.FID
+ INNER JOIN V_CB_COSTMATTERIALDETAIL t3md on t3md.FENTRYID = t3m.FENTRYID
+ INNER JOIN T_BD_EXPENSE t4 on t4.FDOCUMENTSTATUS = 'C' AND t4.FFORBIDSTATUS = 'A'
+ AND t4.FEXPID = t3md.FEXPENSESITEMID
+ INNER JOIN V_BD_COST_RESTORE_EXPENSE t4_l on t4_l.FEXPID = t3md.FEXPENSESITEMID
+)
+, #ɱת AS (
+ SELECT *
+ FROM #Ʒϳɱ t0
+ PIVOT (
+ SUM(t0.ۼƺϸ_) FOR
+ t0.expName IN (O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13)
+ ) t1
+)
+SELECT t0.RN
+ ,t0.۶,t0.۶к,t0.,t0.FPRODUCTID,t0.Ͷ,t0.깤,t0.ۼͶ,t0.ۼ깤,t0.FMATERIALID
+ ,t0.
+ ,t0.ۼƺϸ
+ ,ISNULL(t0.O1,0) AS Ϸ
+ ,ISNULL(t0.O2,0) AS
+ ,ISNULL(t0.O3,0) AS ۾ɷ
+ ,ISNULL(t0.O4,0) AS 칫Ʒ
+ ,ISNULL(t0.O5,0) AS
+ ,ISNULL(t0.O6,0) AS 籣
+ ,ISNULL(t0.O7,0) AS ⽻ͨ
+ ,ISNULL(t0.O8,0) AS ÷
+ ,ISNULL(t0.O9,0) AS
+ ,ISNULL(t0.O10,0) AS ˮ
+ ,ISNULL(t0.O11,0) AS ݷ
+ ,ISNULL(t0.O12,0) AS 칫
+ ,ISNULL(t0.O13,0) AS _
+ ,t0.FPRODUCTDIMEID,t0.FID,t0.FPERIOD,t0.FACCTGORGID
+ ,CONCAT(t0.aPath,'.',ROW_NUMBER() OVER (PARTITION BY t0.RN ORDER BY t0.FEXPTYPE DESC,t0.FMATERIALID DESC)) aPath
+ INTO #Ʒϳɱ
+FROM #ɱת t0
+ORDER BY t0.۶,t0.۶к,t0.,t0. DESC
+
+SELECT tt.RN,tt.aPath,t1.*
+ INTO #Ʒ
+FROM #Ʒϳɱ tt
+ CROSS APPLY (
+ SELECT t0.FPRODUCTNO
+ ,t1.FID
+ ,t0.FBILLID
+ ,t0.FBILLENTRYID
+ ,t0.FPRODUCTID
+ ,t0.FFORMID
+ ,t1.FPRODUCTDIMEID
+ ,t1.FORDERBILLNO
+ ,t1.FORDERBILLSEQ
+ ,t2.FACCTGORGID
+ ,RANK() OVER (PARTITION BY t1.FORDERBILLNO,t1.FORDERBILLSEQ ORDER BY (t2.FYEAR * 100 + t2.FPERIOD) DESC) 'RN2'
+ ,(t2.FYEAR * 100 + t2.FPERIOD) AS 'FPERIOD'
+ FROM T_CB_PROORDERDIME t0
+ INNER JOIN V_CB_PROORDERINFO t1 on t1.FPRODUCTDIMEID = t0.FPRODUCTDIMEID
+ INNER JOIN V_HS_OUTACCTG t2 on t1.FACCTGID = t2.FID
+ WHERE 1 = 1
+ AND t2.FACCTGORGID = 106546
+ AND t2.FCOMPUTEID != ''
+ AND t1.FORDERBILLNO = tt.۶
+ AND t1.FORDERBILLSEQ = tt.۶к
+ AND t0.FPRODUCTID = tt.FMATERIALID
+ AND (t2.FYEAR * 100 + t2.FPERIOD) <= tt.FPERIOD
+ AND t1.FENDINITKEY = 1
+ AND t0.FFORMID = 'PRD_MO'
+
+ ) t1
+WHERE t1.RN2 = 1
+
+;WITH #Ʒ AS (
+ SELECT t0.FPRODUCTNO
+ ,t0.FID
+ ,t0.FBILLID
+ ,t0.FBILLENTRYID
+ ,t0.FPRODUCTID
+ ,t0.FFORMID
+ ,t0.FPRODUCTDIMEID
+ ,t0.FORDERBILLNO
+ ,t0.FORDERBILLSEQ
+ ,t0.FACCTGORGID
+ ,t0.RN
+ ,t0.FPERIOD
+ ,t3.FQUALIFIEDINQTY AS '깤'
+ ,t3.FCURRINPUTQTY AS 'Ͷ'
+ ,t3.FSUMCURRINPUTQTY AS 'ۼͶ'
+ ,t3.FSUMQUALIFIEDINQTY AS 'ۼ깤'
+ ,t3.FSUMQUALIFIEDINAMOUNT 'ۼƺϸ'
+ ,t3.FENTRYID
+ ,t3d.FSumQualifiedInAmount
+ ,t4_l.expName
+ ,t0.aPath
+ FROM #Ʒ t0
+ INNER JOIN V_CB_COSTCALEXPENSE t3 on t3.FID = t0.FID AND t3.FSUMQUALIFIEDINQTY > 0
+ INNER JOIN V_CB_COSTCALEXPENSEDETAIL t3d on t3d.FENTRYID = t3.FENTRYID
+ INNER JOIN V_BD_COST_RESTORE_EXPENSE t4_l on t4_l.FEXPID = t3d.FEXPENSESITEMID
+ WHERE 1 = 1
+),
+#ɱת AS (
+ SELECT *
+ FROM #Ʒ t0
+ PIVOT (
+ SUM(t0.FSumQualifiedInAmount) FOR
+ t0.expName IN (O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13)
+ ) t1
+)
+SELECT t0.RN,t0.FORDERBILLNO '۶',t0.FORDERBILLSEQ '۶к'
+ ,t0.FPRODUCTNO '',t0.FPRODUCTID,t0.Ͷ,t0.깤,t0.ۼͶ,t0.ۼ깤,0 FMATERIALID
+ ,'ϼ' ''
+ ,t0.ۼƺϸ
+ ,ISNULL(t0.O1,0) AS Ϸ
+ ,ISNULL(t0.O2,0) AS
+ ,ISNULL(t0.O3,0) AS ۾ɷ
+ ,ISNULL(t0.O4,0) AS 칫Ʒ
+ ,ISNULL(t0.O5,0) AS
+ ,ISNULL(t0.O6,0) AS 籣
+ ,ISNULL(t0.O7,0) AS ⽻ͨ
+ ,ISNULL(t0.O8,0) AS ÷
+ ,ISNULL(t0.O9,0) AS
+ ,ISNULL(t0.O10,0) AS ˮ
+ ,ISNULL(t0.O11,0) AS ݷ
+ ,ISNULL(t0.O12,0) AS 칫
+ ,ISNULL(t0.O13,0) AS _
+ ,t0.FPRODUCTDIMEID,t0.FID,t0.FPERIOD,t0.FACCTGORGID
+ ,t0.aPath
+ INTO #Ʒɱ
+FROM #ɱת t0
+
+;WITH #Ʒϳɱ AS (
+ SELECT t0.RN,t0.۶,t0.۶к,t0.,t0.FPRODUCTID,t0.Ͷ,t0.깤,t0.ۼͶ,t0.ۼ깤
+ ,t0.ۼƺϸ,t0.FPRODUCTDIMEID,t0.FID
+ ,t3m.FMATERIALID
+ ,t3m.FEXPTYPE
+ ,CASE t3m.FEXPTYPE WHEN 0 THEN 'ֱӲ' WHEN 1 THEN 'Ӳ' WHEN 2 THEN 'ӹ' WHEN 9 THEN 'ʱ' ELSE '' END AS ''
+ ,t3md.FSUMQUALIFIEDINAMOUNT 'ۼƺϸ_'
+ ,t4_l.expName
+ ,t0.FPERIOD
+ ,t0.aPath
+ ,t0.FACCTGORGID
+ --,RANK() OVER (PARTITION BY t0.RN ORDER BY t3m.FEXPTYPE DESC) RN1
+ FROM #Ʒɱ t0
+ INNER JOIN V_CB_COSTMATTERIAL t3m on t3m.FID = t0.FID
+ INNER JOIN V_CB_COSTMATTERIALDETAIL t3md on t3md.FENTRYID = t3m.FENTRYID
+ INNER JOIN T_BD_EXPENSE t4 on t4.FDOCUMENTSTATUS = 'C' AND t4.FFORBIDSTATUS = 'A'
+ AND t4.FEXPID = t3md.FEXPENSESITEMID
+ INNER JOIN V_BD_COST_RESTORE_EXPENSE t4_l on t4_l.FEXPID = t3md.FEXPENSESITEMID
+)
+, #ɱת AS (
+ SELECT *
+ FROM #Ʒϳɱ t0
+ PIVOT (
+ SUM(t0.ۼƺϸ_) FOR
+ t0.expName IN (O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13)
+ ) t1
+)
+SELECT t0.RN
+ ,t0.۶,t0.۶к,t0.,t0.FPRODUCTID,t0.Ͷ,t0.깤,t0.ۼͶ,t0.ۼ깤,t0.FMATERIALID
+ ,t0.
+ ,t0.ۼƺϸ
+ ,ISNULL(t0.O1,0) AS Ϸ
+ ,ISNULL(t0.O2,0) AS
+ ,ISNULL(t0.O3,0) AS ۾ɷ
+ ,ISNULL(t0.O4,0) AS 칫Ʒ
+ ,ISNULL(t0.O5,0) AS
+ ,ISNULL(t0.O6,0) AS 籣
+ ,ISNULL(t0.O7,0) AS ⽻ͨ
+ ,ISNULL(t0.O8,0) AS ÷
+ ,ISNULL(t0.O9,0) AS
+ ,ISNULL(t0.O10,0) AS ˮ
+ ,ISNULL(t0.O11,0) AS ݷ
+ ,ISNULL(t0.O12,0) AS 칫
+ ,ISNULL(t0.O13,0) AS _
+ ,t0.FPRODUCTDIMEID,t0.FID,t0.FPERIOD,t0.FACCTGORGID
+ ,CONCAT(t0.aPath,'.',ROW_NUMBER() OVER (PARTITION BY t0.RN ORDER BY t0.FEXPTYPE DESC,t0.FMATERIALID DESC)) aPath
+ INTO #Ʒϳɱ
+FROM #ɱת t0
+ORDER BY t0.۶,t0.۶к,t0.,t0. DESC
+
+;WITH #Ʒ AS (
+ SELECT t0.*
+ FROM #Ʒɱ t0
+ UNION ALL
+ SELECT t0.*
+ FROM #Ʒϳɱ t0
+ UNION ALL
+ SELECT *
+ FROM #Ʒϳɱ
+)
+SELECT t0.۶,t0.۶к,t0.
+ ,t1.FNUMBER 'Ʒ',t1_l.FNAME 'Ʒ',t1_l.FSPECIFICATION 'Ʒ'
+ ,t2.FNUMBER 'ϱ',t2_l.FNAME '',t2_l.FSPECIFICATION 'Ϲ'
+ ,t0.Ͷ,t0.깤,t0.ۼͶ,t0.ۼ깤
+ ,t0.
+ ,t0.ۼƺϸ
+ ,t0.Ϸ,t0.,t0.۾ɷ
+ ,t0.칫Ʒ
+ ,t0.
+ ,t0.籣
+ ,t0.⽻ͨ
+ ,t0.÷
+ ,t0.
+ ,t0.ˮ
+ ,t0.ݷ
+ ,t0.칫
+ ,t0._
+FROM #Ʒ t0
+ INNER JOIN T_BD_MATERIAL t1 on t1.FMATERIALID = t0.FPRODUCTID
+ INNER JOIN T_BD_MATERIAL_L t1_l on t1_l.FMATERIALID = t1.FMATERIALID AND t1_l.FLOCALEID = 2052
+ INNER JOIN T_BD_MATERIAL t2 on t2.FMATERIALID = t0.FMATERIALID
+ INNER JOIN T_BD_MATERIAL_L t2_l on t2_l.FMATERIALID = t2.FMATERIALID AND t2_l.FLOCALEID = 2052
+ORDER BY CAST(CONCAT('/',REPLACE(t0.aPATH,'.','/'),'/') AS HIERARCHYID)
+
+DROP TABLE #ɱ㵥_Ʒ
+DROP TABLE #Ʒɱ
+DROP TABLE #Ʒϳɱ
+DROP TABLE #Ʒ
+DROP TABLE #Ʒɱ
+DROP TABLE #Ʒϳɱ
\ No newline at end of file
diff --git a/16.全球时代/SQLQuery4.sql b/16.全球时代/SQLQuery4.sql
new file mode 100644
index 0000000..b078e4b
--- /dev/null
+++ b/16.全球时代/SQLQuery4.sql
@@ -0,0 +1,14 @@
+ALTER VIEW V_BD_COST_RESTORE_EXPENSE AS
+SELECT 20045 AS 'FEXPID','O1' 'expName','Ϸ' AS 'FNAME'
+UNION ALL SELECT 20052,'O2',''
+UNION ALL SELECT 20053,'O3','۾ɷ'
+UNION ALL SELECT 20142,'O4','칫Ʒ'
+UNION ALL SELECT 20602,'O5',''
+UNION ALL SELECT 133271,'O6','籣'
+UNION ALL SELECT 133279,'O7','⽻ͨ'
+UNION ALL SELECT 133282,'O8','÷'
+UNION ALL SELECT 133283,'O9',''
+UNION ALL SELECT 133285,'O10','ˮ'
+UNION ALL SELECT 133287,'O11','ݷ'
+UNION ALL SELECT 147936,'O12','칫'
+UNION ALL SELECT 617888,'O13','_'
diff --git a/16.全球时代/成本还原报表V1.sql b/16.全球时代/成本还原报表V1.sql
new file mode 100644
index 0000000..30f8684
--- /dev/null
+++ b/16.全球时代/成本还原报表V1.sql
@@ -0,0 +1,320 @@
+ALTER PROC CB_COST_REDUCTION_V1 @YEAR int,@PERIOD int
+AS
+BEGIN
+ SELECT t0.FPRODUCTNO
+ ,t1.FID
+ ,t0.FBILLID
+ ,t0.FBILLENTRYID
+ ,t0.FPRODUCTID
+ ,t0.FFORMID
+ ,t1.FPRODUCTDIMEID
+ ,t1.FORDERBILLNO
+ ,t1.FORDERBILLSEQ
+ ,t2.FACCTGORGID
+ ,RANK() OVER (ORDER BY t1.FORDERBILLNO,t1.FORDERBILLSEQ DESC) 'RN'
+ ,(t2.FYEAR * 100 + t2.FPERIOD) AS 'FPERIOD'
+ INTO #ɱ㵥_Ʒ
+ FROM T_CB_PROORDERDIME t0
+ INNER JOIN V_CB_PROORDERINFO t1 on t1.FPRODUCTDIMEID = t0.FPRODUCTDIMEID
+ AND t1.FORDERBILLSEQ != 0
+ AND t1.FENDINITKEY = 1
+ INNER JOIN V_HS_OUTACCTG t2 on t1.FACCTGID = t2.FID
+ WHERE 1 = 1
+ AND t2.FACCTGORGID = 1
+ AND t2.FCOMPUTEID != ''
+ AND t2.FYEAR = @YEAR
+ AND t2.FPERIOD = @PERIOD
+ AND t0.FFORMID = 'PRD_MO'
+
+ --AND t1.FORDERBILLNO = 'FO00001468'
+
+ ;WITH #Ʒ AS (
+ SELECT t0.FPRODUCTNO
+ ,t0.FID
+ ,t0.FBILLID
+ ,t0.FBILLENTRYID
+ ,t0.FPRODUCTID
+ ,t0.FFORMID
+ ,t0.FPRODUCTDIMEID
+ ,t0.FORDERBILLNO
+ ,t0.FORDERBILLSEQ
+ ,t0.FACCTGORGID
+ ,RANK() OVER (ORDER BY t0.RN) RN
+ ,t0.FPERIOD
+ ,t3.FQUALIFIEDINQTY AS '깤'
+ ,t3.FCURRINPUTQTY AS 'Ͷ'
+ ,t3.FSUMCURRINPUTQTY AS 'ۼͶ'
+ ,t3.FSUMQUALIFIEDINQTY AS 'ۼ깤'
+ ,t3.FSUMQUALIFIEDINAMOUNT 'ۼƺϸ'
+ ,t3.FENTRYID
+ ,t3d.FSumQualifiedInAmount
+ ,t4_l.expName
+ FROM #ɱ㵥_Ʒ t0
+ INNER JOIN V_CB_COSTCALEXPENSE t3 on t3.FID = t0.FID AND t3.FSUMQUALIFIEDINQTY > 0
+ INNER JOIN V_CB_COSTCALEXPENSEDETAIL t3d on t3d.FENTRYID = t3.FENTRYID
+ INNER JOIN V_BD_COST_RESTORE_EXPENSE t4_l on t4_l.FEXPID = t3d.FEXPENSESITEMID
+ WHERE 1 = 1
+ ),
+ #ɱת AS (
+ SELECT *
+ FROM #Ʒ t0
+ PIVOT (
+ SUM(t0.FSumQualifiedInAmount) FOR
+ t0.expName IN (O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13)
+ ) t1
+ )
+ SELECT t0.RN,t0.FORDERBILLNO '۶',t0.FORDERBILLSEQ '۶к'
+ ,t0.FPRODUCTNO '',t0.FPRODUCTID,t0.Ͷ,t0.깤,t0.ۼͶ,t0.ۼ깤,0 FMATERIALID
+ ,'ϼ' ''
+ ,t0.ۼƺϸ
+ ,ISNULL(t0.O1,0) AS Ϸ
+ ,ISNULL(t0.O2,0) AS
+ ,ISNULL(t0.O3,0) AS ۾ɷ
+ ,ISNULL(t0.O4,0) AS 칫Ʒ
+ ,ISNULL(t0.O5,0) AS
+ ,ISNULL(t0.O6,0) AS 籣
+ ,ISNULL(t0.O7,0) AS ⽻ͨ
+ ,ISNULL(t0.O8,0) AS ÷
+ ,ISNULL(t0.O9,0) AS
+ ,ISNULL(t0.O10,0) AS ˮ
+ ,ISNULL(t0.O11,0) AS ݷ
+ ,ISNULL(t0.O12,0) AS 칫
+ ,ISNULL(t0.O13,0) AS _
+ ,t0.FPRODUCTDIMEID,t0.FID,t0.FPERIOD,t0.FACCTGORGID
+ ,CONCAT(t0.RN,'') aPath
+ INTO #Ʒɱ
+ FROM #ɱת t0
+
+ ;WITH #Ʒϳɱ AS (
+ SELECT t0.RN,t0.۶,t0.۶к,t0.,t0.FPRODUCTID,t0.Ͷ,t0.깤,t0.ۼͶ,t0.ۼ깤
+ ,t0.ۼƺϸ,t0.FPRODUCTDIMEID,t0.FID
+ ,t3m.FMATERIALID
+ ,t3m.FEXPTYPE
+ ,CASE t3m.FEXPTYPE WHEN 0 THEN 'ֱӲ' WHEN 1 THEN 'Ӳ' WHEN 2 THEN 'ӹ' WHEN 9 THEN 'ʱ' ELSE '' END AS ''
+ ,t3md.FSUMQUALIFIEDINAMOUNT 'ۼƺϸ_'
+ ,t4_l.expName
+ ,t0.FPERIOD
+ ,t0.aPath
+ ,t0.FACCTGORGID
+ --,RANK() OVER (PARTITION BY t0.RN ORDER BY t3m.FEXPTYPE DESC) RN1
+ FROM #Ʒɱ t0
+ INNER JOIN V_CB_COSTMATTERIAL t3m on t3m.FID = t0.FID
+ INNER JOIN V_CB_COSTMATTERIALDETAIL t3md on t3md.FENTRYID = t3m.FENTRYID
+ INNER JOIN T_BD_EXPENSE t4 on t4.FDOCUMENTSTATUS = 'C' AND t4.FFORBIDSTATUS = 'A'
+ AND t4.FEXPID = t3md.FEXPENSESITEMID
+ INNER JOIN V_BD_COST_RESTORE_EXPENSE t4_l on t4_l.FEXPID = t3md.FEXPENSESITEMID
+ )
+ , #ɱת AS (
+ SELECT *
+ FROM #Ʒϳɱ t0
+ PIVOT (
+ SUM(t0.ۼƺϸ_) FOR
+ t0.expName IN (O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13)
+ ) t1
+ )
+ SELECT t0.RN
+ ,t0.۶,t0.۶к,t0.,t0.FPRODUCTID,t0.Ͷ,t0.깤,t0.ۼͶ,t0.ۼ깤,t0.FMATERIALID
+ ,t0.
+ ,t0.ۼƺϸ
+ ,ISNULL(t0.O1,0) AS Ϸ
+ ,ISNULL(t0.O2,0) AS
+ ,ISNULL(t0.O3,0) AS ۾ɷ
+ ,ISNULL(t0.O4,0) AS 칫Ʒ
+ ,ISNULL(t0.O5,0) AS
+ ,ISNULL(t0.O6,0) AS 籣
+ ,ISNULL(t0.O7,0) AS ⽻ͨ
+ ,ISNULL(t0.O8,0) AS ÷
+ ,ISNULL(t0.O9,0) AS
+ ,ISNULL(t0.O10,0) AS ˮ
+ ,ISNULL(t0.O11,0) AS ݷ
+ ,ISNULL(t0.O12,0) AS 칫
+ ,ISNULL(t0.O13,0) AS _
+ ,t0.FPRODUCTDIMEID,t0.FID,t0.FPERIOD,t0.FACCTGORGID
+ ,CONCAT(t0.aPath,'.',ROW_NUMBER() OVER (PARTITION BY t0.RN ORDER BY t0.FEXPTYPE DESC,t0.FMATERIALID DESC)) aPath
+ INTO #Ʒϳɱ
+ FROM #ɱת t0
+ ORDER BY t0.۶,t0.۶к,t0.,t0. DESC
+
+ SELECT tt.RN,tt.aPath,t1.*
+ INTO #Ʒ
+ FROM #Ʒϳɱ tt
+ CROSS APPLY (
+ SELECT t0.FPRODUCTNO
+ ,t1.FID
+ ,t0.FBILLID
+ ,t0.FBILLENTRYID
+ ,t0.FPRODUCTID
+ ,t0.FFORMID
+ ,t1.FPRODUCTDIMEID
+ ,t1.FORDERBILLNO
+ ,t1.FORDERBILLSEQ
+ ,t2.FACCTGORGID
+ ,RANK() OVER (PARTITION BY t1.FORDERBILLNO,t1.FORDERBILLSEQ ORDER BY (t2.FYEAR * 100 + t2.FPERIOD) DESC) 'RN2'
+ ,(t2.FYEAR * 100 + t2.FPERIOD) AS 'FPERIOD'
+ FROM T_CB_PROORDERDIME t0
+ INNER JOIN V_CB_PROORDERINFO t1 on t1.FPRODUCTDIMEID = t0.FPRODUCTDIMEID
+ INNER JOIN V_HS_OUTACCTG t2 on t1.FACCTGID = t2.FID
+ WHERE 1 = 1
+ AND t2.FACCTGORGID = 106546
+ AND t2.FCOMPUTEID != ''
+ AND t1.FORDERBILLNO = tt.۶
+ AND t1.FORDERBILLSEQ = tt.۶к
+ AND t0.FPRODUCTID = tt.FMATERIALID
+ AND (t2.FYEAR * 100 + t2.FPERIOD) <= tt.FPERIOD
+ AND t1.FENDINITKEY = 1
+ AND t0.FFORMID = 'PRD_MO'
+
+ ) t1
+ WHERE t1.RN2 = 1
+
+ ;WITH #Ʒ AS (
+ SELECT t0.FPRODUCTNO
+ ,t0.FID
+ ,t0.FBILLID
+ ,t0.FBILLENTRYID
+ ,t0.FPRODUCTID
+ ,t0.FFORMID
+ ,t0.FPRODUCTDIMEID
+ ,t0.FORDERBILLNO
+ ,t0.FORDERBILLSEQ
+ ,t0.FACCTGORGID
+ ,t0.RN
+ ,t0.FPERIOD
+ ,t3.FQUALIFIEDINQTY AS '깤'
+ ,t3.FCURRINPUTQTY AS 'Ͷ'
+ ,t3.FSUMCURRINPUTQTY AS 'ۼͶ'
+ ,t3.FSUMQUALIFIEDINQTY AS 'ۼ깤'
+ ,t3.FSUMQUALIFIEDINAMOUNT 'ۼƺϸ'
+ ,t3.FENTRYID
+ ,t3d.FSumQualifiedInAmount
+ ,t4_l.expName
+ ,t0.aPath
+ FROM #Ʒ t0
+ INNER JOIN V_CB_COSTCALEXPENSE t3 on t3.FID = t0.FID AND t3.FSUMQUALIFIEDINQTY > 0
+ INNER JOIN V_CB_COSTCALEXPENSEDETAIL t3d on t3d.FENTRYID = t3.FENTRYID
+ INNER JOIN V_BD_COST_RESTORE_EXPENSE t4_l on t4_l.FEXPID = t3d.FEXPENSESITEMID
+ WHERE 1 = 1
+ ),
+ #ɱת AS (
+ SELECT *
+ FROM #Ʒ t0
+ PIVOT (
+ SUM(t0.FSumQualifiedInAmount) FOR
+ t0.expName IN (O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13)
+ ) t1
+ )
+ SELECT t0.RN,t0.FORDERBILLNO '۶',t0.FORDERBILLSEQ '۶к'
+ ,t0.FPRODUCTNO '',t0.FPRODUCTID,t0.Ͷ,t0.깤,t0.ۼͶ,t0.ۼ깤,0 FMATERIALID
+ ,'ϼ' ''
+ ,t0.ۼƺϸ
+ ,ISNULL(t0.O1,0) AS Ϸ
+ ,ISNULL(t0.O2,0) AS
+ ,ISNULL(t0.O3,0) AS ۾ɷ
+ ,ISNULL(t0.O4,0) AS 칫Ʒ
+ ,ISNULL(t0.O5,0) AS
+ ,ISNULL(t0.O6,0) AS 籣
+ ,ISNULL(t0.O7,0) AS ⽻ͨ
+ ,ISNULL(t0.O8,0) AS ÷
+ ,ISNULL(t0.O9,0) AS
+ ,ISNULL(t0.O10,0) AS ˮ
+ ,ISNULL(t0.O11,0) AS ݷ
+ ,ISNULL(t0.O12,0) AS 칫
+ ,ISNULL(t0.O13,0) AS _
+ ,t0.FPRODUCTDIMEID,t0.FID,t0.FPERIOD,t0.FACCTGORGID
+ ,t0.aPath
+ INTO #Ʒɱ
+ FROM #ɱת t0
+
+ ;WITH #Ʒϳɱ AS (
+ SELECT t0.RN,t0.۶,t0.۶к,t0.,t0.FPRODUCTID,t0.Ͷ,t0.깤,t0.ۼͶ,t0.ۼ깤
+ ,t0.ۼƺϸ,t0.FPRODUCTDIMEID,t0.FID
+ ,t3m.FMATERIALID
+ ,t3m.FEXPTYPE
+ ,CASE t3m.FEXPTYPE WHEN 0 THEN 'ֱӲ' WHEN 1 THEN 'Ӳ' WHEN 2 THEN 'ӹ' WHEN 9 THEN 'ʱ' ELSE '' END AS ''
+ ,t3md.FSUMQUALIFIEDINAMOUNT 'ۼƺϸ_'
+ ,t4_l.expName
+ ,t0.FPERIOD
+ ,t0.aPath
+ ,t0.FACCTGORGID
+ --,RANK() OVER (PARTITION BY t0.RN ORDER BY t3m.FEXPTYPE DESC) RN1
+ FROM #Ʒɱ t0
+ INNER JOIN V_CB_COSTMATTERIAL t3m on t3m.FID = t0.FID
+ INNER JOIN V_CB_COSTMATTERIALDETAIL t3md on t3md.FENTRYID = t3m.FENTRYID
+ INNER JOIN T_BD_EXPENSE t4 on t4.FDOCUMENTSTATUS = 'C' AND t4.FFORBIDSTATUS = 'A'
+ AND t4.FEXPID = t3md.FEXPENSESITEMID
+ INNER JOIN V_BD_COST_RESTORE_EXPENSE t4_l on t4_l.FEXPID = t3md.FEXPENSESITEMID
+ )
+ , #ɱת AS (
+ SELECT *
+ FROM #Ʒϳɱ t0
+ PIVOT (
+ SUM(t0.ۼƺϸ_) FOR
+ t0.expName IN (O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13)
+ ) t1
+ )
+ SELECT t0.RN
+ ,t0.۶,t0.۶к,t0.,t0.FPRODUCTID,t0.Ͷ,t0.깤,t0.ۼͶ,t0.ۼ깤,t0.FMATERIALID
+ ,t0.
+ ,t0.ۼƺϸ
+ ,ISNULL(t0.O1,0) AS Ϸ
+ ,ISNULL(t0.O2,0) AS
+ ,ISNULL(t0.O3,0) AS ۾ɷ
+ ,ISNULL(t0.O4,0) AS 칫Ʒ
+ ,ISNULL(t0.O5,0) AS
+ ,ISNULL(t0.O6,0) AS 籣
+ ,ISNULL(t0.O7,0) AS ⽻ͨ
+ ,ISNULL(t0.O8,0) AS ÷
+ ,ISNULL(t0.O9,0) AS
+ ,ISNULL(t0.O10,0) AS ˮ
+ ,ISNULL(t0.O11,0) AS ݷ
+ ,ISNULL(t0.O12,0) AS 칫
+ ,ISNULL(t0.O13,0) AS _
+ ,t0.FPRODUCTDIMEID,t0.FID,t0.FPERIOD,t0.FACCTGORGID
+ ,CONCAT(t0.aPath,'.',ROW_NUMBER() OVER (PARTITION BY t0.RN ORDER BY t0.FEXPTYPE DESC,t0.FMATERIALID DESC)) aPath
+ INTO #Ʒϳɱ
+ FROM #ɱת t0
+ ORDER BY t0.۶,t0.۶к,t0.,t0. DESC
+
+ ;WITH #Ʒ AS (
+ SELECT t0.*
+ FROM #Ʒɱ t0
+ UNION ALL
+ SELECT t0.*
+ FROM #Ʒϳɱ t0
+ UNION ALL
+ SELECT *
+ FROM #Ʒϳɱ
+ )
+ SELECT t0.۶,t0.۶к,t0.,t3_l.FNAME '֯'
+ ,t1.FNUMBER 'Ʒ',t1_l.FNAME 'Ʒ',t1_l.FSPECIFICATION 'Ʒ'
+ ,t2.FNUMBER 'ϱ',t2_l.FNAME '',t2_l.FSPECIFICATION 'Ϲ'
+ ,t0.Ͷ,t0.깤,t0.ۼͶ,t0.ۼ깤
+ ,t0.
+ ,t0.ۼƺϸ
+ ,t0.Ϸ,t0.,t0.۾ɷ
+ ,t0.칫Ʒ
+ ,t0.
+ ,t0.籣
+ ,t0.⽻ͨ
+ ,t0.÷
+ ,t0.
+ ,t0.ˮ
+ ,t0.ݷ
+ ,t0.칫
+ ,t0._
+ FROM #Ʒ t0
+ INNER JOIN T_BD_MATERIAL t1 on t1.FMATERIALID = t0.FPRODUCTID
+ INNER JOIN T_BD_MATERIAL_L t1_l on t1_l.FMATERIALID = t1.FMATERIALID AND t1_l.FLOCALEID = 2052
+ LEFT JOIN T_BD_MATERIAL t2 on t2.FMATERIALID = t0.FMATERIALID
+ LEFT JOIN T_BD_MATERIAL_L t2_l on t2_l.FMATERIALID = t2.FMATERIALID AND t2_l.FLOCALEID = 2052
+ INNER JOIN T_ORG_ORGANIZATIONS_L t3_l on t3_l.FORGID = t0.facctgorgid AND t3_l.FLOCALEID = 2052
+ ORDER BY CAST(CONCAT('/',REPLACE(t0.aPATH,'.','/'),'/') AS HIERARCHYID)
+
+ DROP TABLE #ɱ㵥_Ʒ
+ DROP TABLE #Ʒɱ
+ DROP TABLE #Ʒϳɱ
+ DROP TABLE #Ʒ
+ DROP TABLE #Ʒɱ
+ DROP TABLE #Ʒϳɱ
+
+END
\ No newline at end of file
diff --git a/GZ.LJY000.PiLot/SAL_OUTSTOCK/UploadExtension/BillEventPlugInEx.cs b/GZ.LJY000.PiLot/SAL_OUTSTOCK/UploadExtension/BillEventPlugInEx.cs
index 8e3b7c9..c855a23 100644
--- a/GZ.LJY000.PiLot/SAL_OUTSTOCK/UploadExtension/BillEventPlugInEx.cs
+++ b/GZ.LJY000.PiLot/SAL_OUTSTOCK/UploadExtension/BillEventPlugInEx.cs
@@ -6,24 +6,18 @@ using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using Kingdee.BOS.WebApi.FormService;
using System.Web;
-using Kingdee.BOS.Core;
using Kingdee.BOS.Orm.DataEntity;
using System.IO;
using OpenCvSharp.Extensions;
using OpenCvSharp;
-using Spire.Pdf.Fields;
using Spire.Pdf;
using System.Drawing.Imaging;
using System.Drawing;
-using Kingdee.BOS;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Kingdee.BOS.ServiceHelper;
-using OpenCvSharp.Aruco;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
namespace GZ.LJY000.PiLot.SAL_OUTSTOCK.UploadExtension
diff --git a/得米.zip b/得米.zip
deleted file mode 100644
index 1356a23..0000000
Binary files a/得米.zip and /dev/null differ