This commit is contained in:
梁骏愉
2025-03-15 15:03:34 +08:00
parent 17bb7e4131
commit 2306c8b7cf
69 changed files with 4199 additions and 324 deletions

View File

@@ -24,50 +24,60 @@ def BarItemClick(e):
# raise Exception("没有此功能的操作权限!")
# 销售合同计算
# 1.更新销售合同合同类型
sql1 = """/*dialect*/
UPDATE T_CRM_CONTRACT SET F_CYG_CONTRACTTYPE = '664cd624468638' WHERE F_CYG_CONTRACTTYPE = ''
"""
num = DBServiceHelper.Execute(this.Context, sql1)
# 2.更新销售合同关联关系
sqlL2 = """/*dialect*/
WITH #查询数据 AS (
SELECT t0.FBILLNO,t0.FID,t0.FSALES,t1.FBILLNO '合同单据编号'
,t0.FCREATEDATE,t1.FID 'CONTRACT_ID',t0.FCRMCONTRACTID
,t0.FBILLTYPEID
,ISNULL(t2.FID,0) AS Old_CRM_ID
FROM T_SAL_ORDER t0
INNER JOIN T_CRM_CONTRACT t1 on t0.FSALES = t1.F_CYG_YSALESNUMBER
AND t0.FCUSTID = t1.FBDCUSTID
LEFT JOIN T_CRM_CONTRACT t2 on t2.FID = t0.FCRMCONTRACTID AND t2.FDOCUMENTSTATUS = 'C'
WHERE 1=1
--AND t0.FCRMCONTRACTID = 0
AND t0.FDOCUMENTSTATUS = 'C'
AND t1.FDOCUMENTSTATUS = 'C'
AND t0.FBILLTYPEID = 'eacb50844fc84a10b03d7b841f3a6278' --标准销售订单
AND t1.F_CYG_CONTRACTTYPE = '664cd624468638'
)
,#单一数据 AS (
SELECT t0.FBILLNO,t0.FID
FROM #查询数据 t0
WHERE t0.Old_CRM_ID = 0
GROUP BY t0.FBILLNO,t0.FID
HAVING COUNT(1) = 1
)
UPDATE t1 SET t1.FCRMCONTRACTID = t0.CONTRACT_ID
FROM #查询数据 t0
INNER JOIN T_SAL_ORDER t1 on t1.FID = t0.FID
INNER JOIN #单一数据 tt on tt.FID = t0.FID
WHERE 1 = 1
"""
num = DBServiceHelper.Execute(this.Context, sqlL2)
whereSql = "";
selectedRows = this.ListView.SelectedRowsInfo;
if selectedRows == None or selectedRows.Count == 0:
billNos = List[str]();
for row in selectedRows:
billNos.Add(row.BillNo);
whereSql = " AND FBILLNO IN ('{0}')".format("','".join(billNos));
# 3.销售合同数据计算
sqlL = """/*dialect*/
;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'
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 CHARINDEX('-',t3.FBILLNO) = 0
GROUP BY t3.FSALES
) t3
;WITH #合同变更 AS (
SELECT t4.FOldFId
,CAST(t4.FJSONDATA AS nvarchar(4000)) AS 'FJSONDATA'
@@ -78,96 +88,58 @@ WHERE 1 = 1
AND t4.FACTIVESTATUS != 'A'
)
,#销售合同计算 AS (
SELECT t0.FID,t0.FBILLNO
SELECT t0.FID,t0.FBILLNO,t0.F_CYG_SALESNUMBER
,t0.FNAME as FName
,t0.FDOCUMENTSTATUS
,t0.F_CYG_ContractNoDL
,'A' AS 'FFORBIDSTATUS'
,t0f.FCONTRACTAMOUNT_LC AS 'FCONTRACTAMOUNT'
,ISNULL(t4.FCONTRACTAMOUNT_X,t0f.F_CYG_CONTRACTCHANGE) AS 'FCONTRACTAMOUNT_X'
,ISNULL(t1.SAL_ORDER_AMOUNT,0) AS 'SAL_ORDER_AMOUNT'
,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(t2.AR_RECEIVABLE_AMOUNT,0) AS 'AR_RECEIVABLE_AMOUNT'
,ISNULL(t3.AR_RECEIVABLE_AMOUNT2,0) AS 'AR_RECEIVABLE_AMOUNT2'
,ISNULL(t1.累计发货本位币,0) AS '累计发货本位币'
,ISNULL(t1.累计开票金额,0) AS '累计开票金额'
FROM T_CRM_CONTRACT t0
INNER JOIN T_CRM_CONTRACTFIN t0f on t0f.FID = t0.FID
OUTER APPLY (
SELECT t0.FID AS 'CONTRACT_ID'
,SUM(t1e_f.FALLAMOUNT_LC) SAL_ORDER_AMOUNT
,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 t1.FCRMContractId = t0.FID
AND t1.FDOCUMENTSTATUS = 'C'
GROUP BY t1.FCRMContractId
) t1
OUTER APPLY (
SELECT SUM(t3e.FALLAMOUNT) AS AR_RECEIVABLE_AMOUNT,tt.FCRMContractId
FROM T_SAL_ORDER tt
INNER JOIN T_AR_RECEIVABLE t3 on tt.FBILLNO = t3.FBILLNOS
INNER JOIN T_AR_RECEIVABLEENTRY t3e on t3e.FID = t3.FID
WHERE tt.FCRMContractId = t0.FID
AND tt.FDOCUMENTSTATUS = 'C'
AND t3.FSETACCOUNTTYPE = '2'--立账类型:暂估
AND t3.FDOCUMENTSTATUS = 'C'
AND CHARINDEX('-',t3.FBILLNO) = 0
GROUP BY tt.FCRMContractId
) t2
OUTER APPLY (
SELECT SUM(t3e.FALLAMOUNT) AS AR_RECEIVABLE_AMOUNT2,tt.FCRMContractId
FROM T_SAL_ORDER tt
INNER JOIN T_AR_RECEIVABLE t3 on tt.FBILLNO = t3.FBILLNOS
INNER JOIN T_AR_RECEIVABLEENTRY t3e on t3e.FID = t3.FID
WHERE tt.FCRMContractId = t0.FID
AND tt.FDOCUMENTSTATUS = 'C'
AND t3.FSETACCOUNTTYPE = '3'--立账类型:财务
AND t3.FDOCUMENTSTATUS = 'C'
AND CHARINDEX('-',t3.FBILLNO) = 0
GROUP BY tt.FCRMContractId
) t3
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
LEFT JOIN #销售订单计算 t1 on t1.FSALES = t0.F_CYG_YSALESNUMBER
WHERE 1=1
AND t0.FDOCUMENTSTATUS = 'C'
AND t0.F_CYG_CONTRACTTYPE = '664cd624468638'
{1}
)
, #最终数据 AS (
SELECT t0.FID,t0.FBILLNO
,t0.FCONTRACTAMOUNT AS '合同金额'
,t0.FCONTRACTAMOUNT_X AS '合同变化金额'
,t0.SAL_ORDER_AMOUNT AS '累计销售订单本位币'
,t0.FCONTRACTAMOUNT - t0.SAL_ORDER_AMOUNT AS '下单销售订单本位币'
,t0.AR_RECEIVABLE_AMOUNT AS '累计发货本位币'
,t0.SAL_ORDER_AMOUNT - t0.AR_RECEIVABLE_AMOUNT AS '剩余未发货本位币'
,0 AS '合同收款金额'
,0 AS '合同发货未收款金额'
,t0.AR_RECEIVABLE_AMOUNT2 AS '累计开票金额'
,t0.AR_RECEIVABLE_AMOUNT - t0.AR_RECEIVABLE_AMOUNT2 AS '未开票金额'
,t0.公开价小计
,t0.外购价小计
,t0.安装费小计
,t0.成本小计
FROM #销售合同计算 t0
)
--SELECT *
--FROM #最终数据 t0
--WHERE 1=1
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.外购价小计
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.成本小计)
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_CONTRACTCOLLECTION = tt.合同收款金额
--,t0.F_CYG_SHIPMENTUNCOLLECTION = tt.合同发货未收款金额
,t0.F_CYG_CONTRACTCHANGE = tt.合同变化金额
,t0.F_CYG_ACCUMULATEDINVOIC = tt.累计开票金额
,t0.F_CYG_UNINVOICEDAMOUNT = tt.未开票金额
@@ -177,6 +149,15 @@ UPDATE t0 SET t0.F_CYG_CUMSALESORDERS = 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 = {0}
FROM T_CRM_CONTRACT t0
INNER JOIN #最终数据 tt on t0.FID = tt.FID
DROP TABLE #销售订单计算
DROP TABLE #最终数据
""".format(this.Context.UserId,whereSql)
num = DBServiceHelper.Execute(this.Context, sqlL)