332 lines
34 KiB
Transact-SQL
332 lines
34 KiB
Transact-SQL
|
||
/****** Object: StoredProcedure [dbo].[GZTH_XMYSBSave] Script Date: 2025/9/8 19:42:53 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
ALTER PROCEDURE [dbo].[GZTH_XMYSBSave]
|
||
@FID VARCHAR(50) -- 假设FID是VARCHAR类型,根据实际情况调整
|
||
AS
|
||
BEGIN
|
||
|
||
--更新标准成本字段
|
||
DECLARE @BZCB DECIMAL(23,10)
|
||
|
||
SELECT @BZCB = SUM(ISNULL(B.FQTY,0) * ISNULL(F_SETTLEMENTP,0))
|
||
FROM VRYF_t_Cust100017 A
|
||
INNER JOIN VRYF_t_Cust_Entry100031 B ON A.FID = B.FID
|
||
INNEr JOIN T_BD_MATERIAL C ON B.FMATERIALID = C.FMATERIALID
|
||
WHERE C.FNUMBER LIKE 'H%' AND A.FID = @FID
|
||
|
||
UPDATE A
|
||
SET A.F_VRYF__BZCB_1xj = ROUND(ISNULL(@BZCB,0),2)
|
||
FROM VRYF_t_Cust100017 A
|
||
WHERE A.FID = @FID
|
||
|
||
PRINT '更新定制成本字段'
|
||
--更新定制成本字段
|
||
UPDATE A
|
||
SET A.F_VRYF__DZCB_zc5 =
|
||
CASE
|
||
WHEN ISNUMERIC(F_DZCBText) = 1 AND F_DZCBText != '' THEN CONVERT(DECIMAL(23, 10), F_DZCBText)
|
||
ELSE 0.000
|
||
END
|
||
FROM VRYF_t_Cust100017 A
|
||
WHERE A.FID = @FID;
|
||
|
||
UPDATE A
|
||
SET A.F_VRYF__DZCB_zc5 = B.F_VRYF_AMOUNT_XK9
|
||
FROM VRYF_t_Cust100017 A
|
||
INNER JOIN VRYF_t_Cust_Entry100038 B ON A.FID = B.FID
|
||
where B.F_VRYF_Amount_xk9 <> 0 AND A.FID = @FID AND B.F_VRYF_Assistant_qtr = '68469e34078377'
|
||
|
||
--更新投标费用
|
||
UPDATE A
|
||
SET A.F_VRYF_Amount_uky = ISNULL(B.F_VRYF_Amount_xk9,0)
|
||
FROM VRYF_t_Cust100017 A
|
||
INNER JOIN VRYF_t_Cust_Entry100038 B ON A.FID = B.FID
|
||
INNER JOIN T_BAS_ASSISTANTDATAENTRY_L C ON B.F_VRYF_Assistant_qtr = C.FENTRYID
|
||
WHERE C.FENTRYID = '68497392031a07' AND A.FID = @FID
|
||
|
||
--更新技术支持费
|
||
UPDATE A
|
||
SET A.F_VRYF_Amount_dvn = ISNULL(B.F_VRYF_Amount_xk9,0)
|
||
FROM VRYF_t_Cust100017 A
|
||
INNER JOIN VRYF_t_Cust_Entry100038 B ON A.FID = B.FID
|
||
INNER JOIN T_BAS_ASSISTANTDATAENTRY_L C ON B.F_VRYF_Assistant_qtr = C.FENTRYID
|
||
WHERE C.FENTRYID = '68494cf80311f8' AND A.FID = @FID
|
||
|
||
|
||
--更新项目管理费字段
|
||
UPDATE A
|
||
SET A.F_XMGLF = ISNULL(B.F_VRYF_Amount_xk9,0)
|
||
FROM VRYF_t_Cust100017 A
|
||
INNER JOIN VRYF_t_Cust_Entry100038 B ON A.FID = B.FID
|
||
INNER JOIN T_BAS_ASSISTANTDATAENTRY_L C ON B.F_VRYF_Assistant_qtr = C.FENTRYID
|
||
WHERE C.FENTRYID = '682e8396bd709f' AND A.FID =@FID
|
||
|
||
--更新施工安装费
|
||
UPDATE A
|
||
SET A.F_SGAZF =ISNULL(B.F_VRYF_Amount_xk9,0)
|
||
FROM VRYF_t_Cust100017 A
|
||
INNER JOIN VRYF_t_Cust_Entry100038 B ON A.FID = B.FID
|
||
INNER JOIN T_BAS_ASSISTANTDATAENTRY_L C ON B.F_VRYF_Assistant_qtr = C.FENTRYID
|
||
WHERE C.FENTRYID = '682e83afbd70b6' AND A.FID = @FID
|
||
|
||
--更新外包费
|
||
UPDATE A
|
||
SET A.F_VRYF_Amount_re5 = B.F_VRYF_Amount_xk9
|
||
FROM VRYF_t_Cust100017 A
|
||
INNER JOIN VRYF_t_Cust_Entry100038 B ON A.FID = B.FID
|
||
WHERE A.FID = @FID AND B.F_VRYF_Assistant_qtr = '682e83e4bd70cb'
|
||
|
||
--更新施工成本
|
||
UPDATE A
|
||
SET A.F_SGCB = A.F_VRYF_Amount_re5 + A.F_SGAZF
|
||
FROM VRYF_t_Cust100017 A
|
||
WHERE A.FID = @FID ;
|
||
|
||
--更新施工成本
|
||
UPDATE A
|
||
SET A.F_SGCB =0
|
||
FROM VRYF_t_Cust100017 A
|
||
WHERE A.FID = @FID AND A.F_SGCB =''
|
||
|
||
|
||
--更新产品成本
|
||
UPDATE A
|
||
SET A.F_CPCB = ROUND(A.F_VRYF__BZCB_1xj + F_VRYF__DZCB_zc5 , 2)
|
||
FROM VRYF_t_Cust100017 A
|
||
WHERE A.FID = @FID
|
||
|
||
--更新技术调试人工字段
|
||
--对实施人天和设计人天进行赋值
|
||
update A
|
||
SET A.F_SSRT = B.F_VRYF_Qty_yrr
|
||
FROM VRYF_t_Cust100017 A
|
||
INNER JOIN VRYF_t_Cust_Entry100038 B ON A.FID = B.FID
|
||
INNER JOIN T_BAS_ASSISTANTDATAENTRY_L C ON B.F_VRYF_ASSISTANT_QTR = C.FENTRYID
|
||
where C.FENTRYID = '682e83f5bd70ce' AND A.FID = @FID AND (F_VRYF_CheckBox_qtr = 1)
|
||
|
||
update A
|
||
SET A.F_SJRT = B.F_VRYF_Qty_yrr
|
||
FROM VRYF_t_Cust100017 A
|
||
INNER JOIN VRYF_t_Cust_Entry100038 B ON A.FID = B.FID
|
||
INNER JOIN T_BAS_ASSISTANTDATAENTRY_L C ON B.F_VRYF_ASSISTANT_QTR = C.FENTRYID
|
||
where C.FENTRYID = '68469e29078375' AND A.FID = @FID AND (F_VRYF_CheckBox_qtr = 1)
|
||
|
||
--更新明细的实施人天和设计人天的单价和金额
|
||
UPDATE B
|
||
SET B.F_VRYF_Qty_yrr = CAST(ISNULL(A.F_SSRT, '0.00') AS float)
|
||
FROM VRYF_t_Cust100017 A
|
||
INNER JOIN VRYF_t_Cust_Entry100038 B ON A.FID = B.FID
|
||
WHERE B.F_VRYF_Assistant_qtr = '682e83f5bd70ce'AND A.FID = @FID
|
||
|
||
UPDATE B
|
||
SET B.F_VRYF_Qty_yrr = CAST(ISNULL(A.F_SJRT, '0.00') AS float)
|
||
FROM VRYF_t_Cust100017 A
|
||
INNER JOIN VRYF_t_Cust_Entry100038 B ON A.FID = B.FID
|
||
WHERE B.F_VRYF_Assistant_qtr = '68469e29078375'AND A.FID = @FID
|
||
|
||
--实施人天
|
||
update VRYF_t_Cust_Entry100038
|
||
SET F_VRYF_Price_zc5 = 800
|
||
where F_VRYF_Assistant_qtr = '682e83f5bd70ce'AND FID = @FID AND F_VRYF_Price_zc5 = 0
|
||
|
||
--设计人天
|
||
update VRYF_t_Cust_Entry100038
|
||
SET F_VRYF_Price_zc5 = 800
|
||
where F_VRYF_Assistant_qtr = '68469e29078375'AND FID = @FID AND F_VRYF_Price_zc5 = 0
|
||
|
||
--实施人天金额
|
||
update VRYF_t_Cust_Entry100038
|
||
SET F_VRYF_Amount_xk9 = F_VRYF_Qty_yrr * F_VRYF_Price_zc5
|
||
where F_VRYF_Assistant_qtr = '682e83f5bd70ce'AND FID = @FID
|
||
|
||
--设计人天金额
|
||
update VRYF_t_Cust_Entry100038
|
||
SET F_VRYF_Amount_xk9 = F_VRYF_Qty_yrr * F_VRYF_Price_zc5
|
||
where F_VRYF_Assistant_qtr = '68469e29078375'AND FID = @FID
|
||
|
||
--对技术调试人工进行赋值
|
||
--取实施人天单价
|
||
DECLARE @SSRTDJ DECIMAL(23,10)
|
||
SELECT @SSRTDJ=F_VRYF_Price_zc5
|
||
FROM VRYF_t_Cust_Entry100038
|
||
WHERE FID = @FID
|
||
AND F_VRYF_Assistant_qtr = '682e83f5bd70ce'
|
||
|
||
--取设计人天单价
|
||
DECLARE @SJRTDJ DECIMAL(23,10)
|
||
SELECT @SJRTDJ = F_VRYF_Price_zc5
|
||
FROM VRYF_t_Cust_Entry100038
|
||
WHERE FID = @FID
|
||
AND F_VRYF_Assistant_qtr = '68469e29078375'
|
||
|
||
UPDATE A
|
||
SET A.F_JSTSRG = CAST(ISNULL(A.F_SSRT, '0.00') AS float) * @SSRTDJ + CAST(ISNULL(A.F_SJRT, '0.00') AS float) * @SJRTDJ
|
||
FROM VRYF_t_Cust100017 A
|
||
WHERE A.FID = @FID
|
||
|
||
--更新工程成本
|
||
UPDATE A
|
||
SET A.F_GCCB = F_JSTSRG+F_XMGLF+F_SGAZF+F_VRYF_Amount_re5
|
||
FROM VRYF_t_Cust100017 A
|
||
WHERE A.FID = @FID
|
||
|
||
--更新第三方成本
|
||
|
||
DECLARE @DSFCB DECIMAL(23,10)
|
||
|
||
SELECT @DSFCB = SUM(ISNULL(B.FQTY,0) * ISNULL(F_SETTLEMENTP,0) )
|
||
FROM VRYF_t_Cust100017 A
|
||
INNER JOIN VRYF_t_Cust_Entry100031 B ON A.FID = B.FID
|
||
INNEr JOIN T_BD_MATERIAL C ON B.FMATERIALID = C.FMATERIALID
|
||
WHERE C.FNUMBER NOT LIKE 'H%' AND A.FID = @FID
|
||
|
||
UPDATE A
|
||
SET A.F_VRYF__DSFCB_h1g = ISNULL(@DSFCB,0)
|
||
FROM VRYF_t_Cust100017 A
|
||
WHERE A.FID = @FID
|
||
|
||
--更新项目成本
|
||
Update A
|
||
SET A.F_XMCB = ROUND(A.F_CPCB + A.F_GCCB + A.F_VRYF__DSFCB_h1g,2)
|
||
FROM VRYF_t_Cust100017 A
|
||
WHERE A.FID = @FID
|
||
-- 更新增值税+附加税费
|
||
DECLARE @BHSJE DECIMAL(23,10)
|
||
SELECT @BHSJE = ISNULL(SUM(FAmount * (F_VRYF_Decimal_gy7/100)), 0)
|
||
FROM VRYF_t_Cust_Entry100031
|
||
WHERE FID = @FID
|
||
|
||
DECLARE @SGCB DECIMAL(23,10)
|
||
|
||
-- 施工安装费税率
|
||
DECLARE @SGSL DECIMAL(23,10)
|
||
SELECT
|
||
@SGSL = CASE WHEN A.F_VRYF_Decimal_qtr = 0.6 OR A.F_VRYF_Decimal_qtr = 0 THEN 0.06
|
||
ELSE ISNULL(A.F_VRYF_Decimal_qtr/100, 0) END
|
||
FROM
|
||
VRYF_t_Cust_Entry100038 A
|
||
WHERE A.FID = @FID
|
||
AND A.F_VRYF_Assistant_qtr = '682e8396bd709f'
|
||
|
||
-- 外包费税率
|
||
DECLARE @WBSL DECIMAL(23,10)
|
||
SELECT
|
||
@WBSL = CASE WHEN A.F_VRYF_Decimal_qtr = 0.6 OR A.F_VRYF_Decimal_qtr = 0 THEN 0.06
|
||
ELSE ISNULL(A.F_VRYF_Decimal_qtr/100, 0) END
|
||
FROM
|
||
VRYF_t_Cust_Entry100038 A
|
||
WHERE A.FID = @FID
|
||
AND A.F_VRYF_Assistant_qtr = '682e83e4bd70cb'
|
||
|
||
-- 确保分母不为零
|
||
IF @BHSJE IS NOT NULL AND @BHSJE <> 0
|
||
BEGIN
|
||
UPDATE A
|
||
SET A.F_VRYF_Amount_ne1 = ISNULL(ROUND(
|
||
(@BHSJE - ISNULL(A.F_VRYF__BZCB_1xj, 0) / 1.13 * 0.13 - ISNULL(A.F_VRYF__DSFCB_h1g, 0) / 1.13 * 0.13 - ISNULL(F_VRYF_Amount_re5, 0) / (1+@WBSL) * @WBSL - ISNULL(F_SGAZF, 0) / (1+@SGSL) * @SGSL) * 1.12,
|
||
2
|
||
),0)
|
||
FROM VRYF_t_Cust100017 A
|
||
INNER JOIN VRYF_t_Cust_Entry100031 B ON A.FID = B.FID
|
||
WHERE A.FID = @FID;
|
||
END
|
||
ELSE
|
||
BEGIN
|
||
UPDATE A
|
||
SET A.F_VRYF_Amount_ne1 = 0
|
||
FROM VRYF_t_Cust100017 A
|
||
WHERE A.FID = @FID;
|
||
END
|
||
|
||
-- 更新项目毛利
|
||
UPDATE A
|
||
SET A.F_VRYF_Amount_ca9 = ROUND(ISNULL(A.F_VRYF__HTJE_imu, 0) - ISNULL(A.F_XMCB, 0) - ISNULL(A.F_VRYF_Amount_ne1, 0), 2)
|
||
FROM VRYF_t_Cust100017 A
|
||
WHERE A.FID = @FID
|
||
|
||
-- 更新毛利率
|
||
UPDATE VRYF_t_Cust100017
|
||
SET F_MLL = CASE WHEN F_VRYF__HTJE_imu <> 0 THEN CAST(CAST((ISNULL(F_VRYF_Amount_ca9, 0) / ISNULL(F_VRYF__HTJE_imu, 1)) * 100 AS DECIMAL(23,2)) AS VARCHAR) + '%' ELSE '0%' END
|
||
WHERE FID = @FID
|
||
|
||
-- 更新项目预算利润
|
||
UPDATE VRYF_t_Cust100017
|
||
SET F_VRYF_Amount_fg2 = ROUND(ISNULL(F_VRYF_Amount_ca9, 0) - ISNULL(F_VRYF_Amount_dvn, 0) - ISNULL(F_VRYF_Amount_uky, 0) - ISNULL(F_VRYF_Amount_w5c, 0), 2)
|
||
WHERE FID = @FID
|
||
|
||
-- 更新利润率
|
||
UPDATE VRYF_t_Cust100017
|
||
SET F_LRL = CASE WHEN F_VRYF__HTJE_imu <> 0 THEN CAST(CAST((ISNULL(F_VRYF_Amount_fg2, 0) / ISNULL(F_VRYF__HTJE_imu, 1)) * 100 AS DECIMAL(23,2)) AS VARCHAR) + '%' ELSE '0%' END
|
||
WHERE FID = @FID
|
||
|
||
-- 更新总结算金额
|
||
-- 更新成本价金额字段
|
||
UPDATE VRYF_t_Cust_Entry100031
|
||
SET F_CBJJE = CAST(ISNULL(FQty, 0) * ISNULL(F_SettlementP, 0) * CASE ISNULL(F_useyears, 0) WHEN 0 THEN 1 ELSE F_useyears END AS DECIMAL(23, 2))
|
||
WHERE FID = @FID
|
||
|
||
PRINT '更新总结算价金额'
|
||
-- 更新总结算价金额
|
||
UPDATE VRYF_t_Cust_Entry100031
|
||
SET F_JSJJE = CAST(ISNULL(FQTY, 0) * ISNULL(F_JSJ, 0) * CASE ISNULL(F_useyears, 0) WHEN 0 THEN 1 ELSE F_useyears END AS DECIMAL(23, 2))
|
||
WHERE FID = @FID;
|
||
PRINT '更新总结算价金额2'
|
||
DECLARE @JSJJE DECIMAL(23,10)
|
||
SELECT @JSJJE = ISNULL(SUM(FQTY * F_JSJ * CASE ISNULL(F_useyears, 0) WHEN 0 THEN 1 ELSE F_useyears END ), 0) FROM VRYF_t_Cust_Entry100031 WHERE FID = @FID;
|
||
|
||
PRINT '明细结算金额总和'
|
||
-- 明细结算金额总和+技术调试人工+项目管理费+(施工安装费+外包费)+定制成本
|
||
UPDATE VRYF_t_Cust100017
|
||
SET F_ZJSJE = ROUND( ISNULL(@JSJJE,0) + ISNULL(F_JSTSRG,0)+ ISNULL(F_XMGLF,0) + ISNULL( CONVERT(DECIMAL(23,2), F_SGCB),0) + ISNULL(F_VRYF__DZCB_zc5, 0), 2)
|
||
WHERE FID = @FID
|
||
|
||
-- 确保分母不为零
|
||
--IF @JSJJE IS NOT NULL AND @JSJJE <> 0
|
||
--BEGIN
|
||
-- UPDATE VRYF_t_Cust100017
|
||
-- SET F_ZJSJE = ROUND(@JSJJE + ISNULL(F_GCCB, 0) + ISNULL(F_VRYF__DZCB_zc5, 0), 2)
|
||
-- WHERE FID = @FID
|
||
--END
|
||
--ELSE
|
||
--BEGIN
|
||
-- UPDATE VRYF_t_Cust100017
|
||
-- SET F_ZJSJE = 0
|
||
-- WHERE FID = @FID
|
||
--END
|
||
PRINT '更新结算利润'
|
||
-- 更新结算利润
|
||
UPDATE VRYF_t_Cust100017
|
||
SET F_JSLR = ROUND(ISNULL(F_VRYF__HTJE_imu, 0) - ISNULL(F_ZJSJE, 0), 2)
|
||
WHERE FID = @FID
|
||
|
||
-- 更新付款方式,当付款方式不为空时
|
||
DECLARE @FKFS varchar(MAX)
|
||
|
||
SELECT DISTINCT
|
||
E.FNAME + '-' + ISNULL(CONCAT(CAST(d.FRecAdvanceRate AS DECIMAL(23, 2)), '%'), '') AS FRecAdvanceRat
|
||
INTO #TEMP1
|
||
FROM VRYF_t_Cust100017 A
|
||
INNER JOIN VRYF_t_Cust_Entry100031 B ON A.FID = B.FID
|
||
INNER JOIN vryf_t_cust_entry100031_lk c ON b.fentryid = c.fentryid
|
||
INNER JOIN t_sal_orderplan d ON d.FID = c.FSBillId
|
||
INNER JOIN T_BD_RECCONDITION_L E ON D.F_RecConditionId = E.FID
|
||
WHERE A.FID = @FID
|
||
|
||
SELECT @FKFS = STRING_AGG(FRecAdvanceRat, ',') FROM #TEMP1
|
||
|
||
UPDATE VRYF_t_Cust100017
|
||
SET F_FKFS = ISNULL(@FKFS, '')
|
||
WHERE FID = @FID
|
||
AND ISNULL(F_FKFS, '') = ''
|
||
|
||
-- 更新执行过保存字段
|
||
UPDATE VRYF_t_Cust100017
|
||
SET F_VRYF_CheckBox_qtr = 1
|
||
WHERE FID = @FID AND F_VRYF_CheckBox_qtr <> 1
|
||
|
||
END; |