diff --git a/GZ_KD_Parino/SQL文件/更新特价.sql b/GZ_KD_Parino/SQL文件/更新特价.sql index 49a9db7..7df2b12 100644 --- a/GZ_KD_Parino/SQL文件/更新特价.sql +++ b/GZ_KD_Parino/SQL文件/更新特价.sql @@ -1,144 +1,253 @@ - -ALTER PROC UPDATESpecialContracts -( - @FID NVARCHAR(1000) -) -AS +/****** Object: StoredProcedure [dbo].[UPDATESpecialContracts] Script Date: 2025/8/20 11:24:16 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + + +ALTER PROCEDURE [dbo].[UPDATESpecialContracts] +( + @FID NVARCHAR(1000) +) +AS + + + DECLARE @YiBiaoTeJia INT=0,@HeTongTeJia INT =0; + + update a set A.F_SPECIALCONTRACTS = '否' + FROM T_SAL_ORDER A where A.fid =@FID AND A.FDOCUMENTSTATUS IN ('Z','A','D') + --update AE set AE.F_specialoffer = '0' + --FROM T_SAL_ORDER A LEFT JOIN T_SAL_ORDERENTRY AE ON A.FID = AE.FID WHERE A.FID = @FID AND A.FDOCUMENTSTATUS IN ('Z','A','D') + +--一、仪表合同(P、C、E、S): +--1、销售订单分录中,只要存在任何一条数据,含税单价<结算价【物料资料自定义字段】,只能判定该销售订单为特价订单,不能判断是否需要走特价审批流程,判定是否走审批流程是需要经过以下步骤2。 +--【步骤2】、此时需要看“是否直签客户”这个字段的值: +--(1)如果是“否”,那么需要走特价申请流程; +--(2)如果是“是”或空值,那么需要判断同客户同项目同产品代码是否这价格下过(同价格),如果下过可以不走特价(历史已经审批过的销售订单:同客户同项目同产品代码同价格),没下过需要特价申请; + +--否直签客户,走特价申请流程 + update a set F_SPECIALCONTRACTS = '是' + FROM T_SAL_ORDER A + INNER JOIN T_BD_CUSTOMER E ON E.FCUSTID = A.FCUSTID + INNER JOIN T_SAL_ORDERENTRY B ON A.FID = B.FID + INNER JOIN T_SAL_ORDERENTRY_F D ON D.FENTRYID =B.FENTRYID + INNER JOIN T_BD_MATERIAL C ON C.FMATERIALID = B.FMATERIALID + INNER JOIN V_ASSISTANTDATA U ON U.FENTRYID = A.F_Ordercategory + where U.FNUMBER IN ('P','C','E','S') + AND ABS(D.FAllAmount_LC)0 AND (B.F_YKQC_CHECKBOX_QTR != '1' OR F_YKQC_CHECKBOX_QTR IS NULL ) + AND A.FID = @FID + AND U.FNUMBER NOT IN ('ES','W','SX','D','CY'))>0) + BEGIN + SELECT @YiBiaoTeJia=1 + end + PRINT '@YiBiaoTeJia='+CONVERT(NVARCHAR(20), @YiBiaoTeJia); +-- --判断明细非特价 +-- update B set B.F_specialoffer = '0' +-- FROM T_SAL_ORDER A +-- INNER JOIN T_SAL_ORDERENTRY B ON A.FID = B.FID +-- INNER JOIN T_SAL_ORDERENTRY_F D ON D.FENTRYID = B.FENTRYID +-- INNER JOIN T_BD_MATERIAL C ON C.FMATERIALID = B.FMATERIALID +-- INNER JOIN V_ASSISTANTDATA U ON U.FENTRYID = A.F_ORDERCATEGORY +-- AND ABS(D.FAllAmount_LC) >= ABS(B.F_SettlementP*B.FQTY) +-- AND A.FID = @FID +-- AND A.FDOCUMENTSTATUS IN ('Z','A','D') +-- AND U.FNUMBER NOT IN ('ES','W','SX','D','CY') + + --当前结算底价字段进行赋值 + DECLARE @SUMJSJ DECIMAL(23,10); +SELECT @SUMJSJ = @EmployeeID + CAST(ISNULL(F_KFYS, '0.00') AS float) + CAST(ISNULL(F_SGCB, '0.00') AS float) + CAST(ISNULL(F_SSRT, '0.00') AS float) * 800 + CAST(ISNULL(F_SJRT, '0.00') AS float) * 800 +FROM T_SAL_ORDER A + INNER JOIN T_SAL_ORDERENTRY B ON A.FID = B.FID + INNER JOIN T_SAL_ORDERENTRY_F E ON E.FENTRYID =B.FENTRYID + INNER JOIN V_ASSISTANTDATA U ON U.FENTRYID = A.F_Ordercategory + INNER JOIN T_BD_MATERIAL W ON W.FMATERIALID = B.FMATERIALID + where + A.FID = @FID + AND U.FNUMBER in ('ES','W','SX','D','CY','CS','CW') + + SELECT @SUMJSJ = @EmployeeID + FROM T_SAL_ORDER A + INNER JOIN T_SAL_ORDERENTRY B ON A.FID = B.FID + INNER JOIN T_SAL_ORDERENTRY_F E ON E.FENTRYID =B.FENTRYID + INNER JOIN V_ASSISTANTDATA U ON U.FENTRYID = A.F_Ordercategory + INNER JOIN T_BD_MATERIAL W ON W.FMATERIALID = B.FMATERIALID + where + A.FID = @FID + AND U.FNUMBER in ('P','C','E','S') + + update A SET A.F_VRYF_Amount_yrr =CAST(ISNULL(@SUMJSJ,0) AS decimal(23,10)) + FROM T_SAL_ORDER A + INNER JOIN V_ASSISTANTDATA U ON U.FENTRYID = A.F_Ordercategory + WHERE A.FID = @FID + +--判断是否兴诺物料 - - update a set F_SPECIALCONTRACTS = '否' - FROM T_SAL_ORDER A where fid =@FID ---一、仪表合同(P、C、E、S): ---1、销售订单分录中,只要存在任何一条数据,含税单价<结算价【物料资料自定义字段】,只能判定该销售订单为特价订单,不能判断是否需要走特价审批流程,判定是否走审批流程是需要经过以下步骤2。 ---【步骤2】、此时需要看“是否直签客户”这个字段的值: ---(1)如果是“否”,那么需要走特价申请流程; ---(2)如果是“是”或空值,那么需要判断同客户同项目同产品代码是否这价格下过(同价格),如果下过可以不走特价(历史已经审批过的销售订单:同客户同项目同产品代码同价格),没下过需要特价申请; - - - update a set F_SPECIALCONTRACTS = '是' - FROM T_SAL_ORDER A - INNER JOIN T_SAL_ORDERENTRY B ON A.FID = B.FID - INNER JOIN T_SAL_ORDERENTRY_F D ON D.FENTRYID =B.FENTRYID - INNER JOIN T_BD_MATERIAL C ON C.FMATERIALID = B.FMATERIALID - INNER JOIN V_ASSISTANTDATA U ON U.FENTRYID = A.F_Ordercategory - where U.FNUMBER IN ('P','C','E','S') - AND D.FTAXPRICE A.FID AND A.FCUSTID =E.FCUSTID AND A.F_PROJECTNAME = E.F_PROJECTNAME AND B.FMATERIALID = E.FMATERIALID AND D.FTAXPRICE = E.FTAXPRICE - INNER JOIN V_ASSISTANTDATA U ON U.FENTRYID = A.F_Ordercategory - where U.FNUMBER IN ('P','C','E','S') - AND D.FTAXPRICE A.FID AND A.FCUSTID =E.FCUSTID AND A.F_PROJECTNAME = E.F_PROJECTNAME AND B.FMATERIALID = E.FMATERIALID AND D.FTAXPRICE = E.FTAXPRICE - INNER JOIN V_ASSISTANTDATA U ON U.FENTRYID = A.F_Ordercategory - where U.FNUMBER IN ('CS') - AND D.FTAXPRICE a.fid AND E.FDOCUMENTSTATUS = 'C' --- LEFT JOIN T_SAL_ORDERentry F ON F.FID =e.fid and F.fmaterialid = b.fmaterialid --- LEFT JOIN T_SAL_ORDERentry_F G ON G.FENTRYID = F.FENTRYID AND g.FTAXPRICE = D.FTAXPRICE --- where U.FNUMBER IN ('P','C','E') --- AND D.FTAXPRICE 0 + + update A SET A.F_YKQC_Combo_qtr = '否' + FROM T_SAL_ORDER A + INNER JOIN V_ASSISTANTDATA U ON U.FENTRYID = A.F_Ordercategory + INNER JOIN T_SAL_ORDERENTRY B ON A.FID = B.FID + INNER JOIN T_BD_MATERIAL W ON W.FMATERIALID = B.FMATERIALID + WHERE A.FID = @FID AND W.FNUMBER like 'V%' AND @COUNTXN0 = 0 + + +--判断特价原因是否必填 +update T_SAL_ORDER SET F_YKQC_CheckBox_qtr1 = 1 +WHERE FID = @FID AND @YiBiaoTeJia=1 + + +update T_SAL_ORDER SET F_YKQC_CheckBox_qtr1 = 0 +WHERE FID = @FID AND @YiBiaoTeJia=0 + +--计算销售订单的订单利润率 +DECLARE @DDLRL DECIMAL(23,2) + +SELECT @DDLRL = +CASE WHEN B.FBILLALLAMOUNT_LC = 0 +THEN 0 +ELSE ROUND((B.FBILLALLAMOUNT_LC - A.F_VRYF_Amount_yrr) / B.FBILLALLAMOUNT_LC, 2) END +FROM T_SAL_ORDER A +INNER JOIN T_SAL_ORDERFIN B ON A.FID = B.FID +WHERE A.FID = @FID +AND A.F_VRYF_Amount_yrr <> 0 + +UPDATE A +SET F_DDLRL = CONVERT(VARCHAR(25), @DDLRL) + '%' +FROM T_SAL_ORDER A +WHERE A.FID = @FID +AND @DDLRL <> 0 + +--更新价差 +update A +SET A.F_differenceAmount = B.FBillAllAmount_LC - A.F_VRYF_Amount_yrr +FROM T_SAL_ORDER A +INNER JOIN T_SAL_ORDERFIN B ON A.FID = B.FID +where A.fid = @FID +AND A.F_VRYF_Amount_yrr <> 0 \ No newline at end of file