/****** Object: StoredProcedure [dbo].[hw_get_zpjjmxb] Script Date: 2025/9/26 15:54:09 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[hw_get_zpjjmxb] @fdate1 NVARCHAR(20) AS BEGIN DECLARE @fdate NVARCHAR(20) SET @fdate=''''+ @fdate1 + '''' DELETE hw_zpjjmxb WHERE jjdate=@fdate1 --集体计件(jjDate, ygNo, ygNm, zlNo, cpNm, price, fqty, jtrs, je, bz, zje,jjcsbt,gwbt,jjdh) INSERT INTO hw_zpjjmxb SELECT t1.F_DATE ,yg.FNUMBER,ygs.FNAME,scdd.FNUMBER,scdd.FCPNM,t2.F_PRICE ,CASE WHEN ISNULL(rs1.rs,0)=0 THEN 0 ELSE t2.F_FQTY END ,rs1.rs ,CASE WHEN ISNULL(rs1.rs,0)=0 THEN 0 ELSE t2.F_FQTY/rs1.rs END * t2.F_PRICE ,0 ,CASE WHEN ISNULL(rs1.rs,0)=0 THEN 0 ELSE t2.F_FQTY/rs1.rs END * t2.F_PRICE ,0,0,t1.fbillno ,scdd.FCPNO FROM GAT_DAY_ZP t1 INNER JOIN GAT_DAY_CP_ZP t2 on t1.FID=t2.FID INNER JOIN hw_scdd_select scdd on t2.F_SCNO=scdd.FID INNER JOIN GAT_DAY_JT_ZP t3 on t1.FID=t3.FID INNER JOIN T_HR_EMPINFO yg on t3.F_YGNO=yg.FID INNER JOIN T_HR_EMPINFO_L ygs on yg.FID=ygs.FID INNER JOIN ( --1、取计件人数=总人数-新员工人数+提前转计件的新员工人数 SELECT p1.FID,p1.rs-ISNULL(p2.syqrs,0) as rs FROM ( SELECT t1.FID, count(*) as rs FROM GAT_DAY_ZP t1 INNER JOIN GAT_DAY_jt_ZP jt on t1.fid=jt.fid WHERE F_DATE= @fdate1 GROUP BY t1.FID ) p1 LEFT OUTER JOIN ( SELECT t1.FID, count(*) as syqrs FROM GAT_DAY_ZP t1 INNER JOIN GAT_DAY_jt_ZP t2 on t1.fid=t2.fid INNER JOIN GAT_YGCQs t3 on t2.f_ygno=t3.f_ygnm INNER JOIN GAT_YGCQ t4 on t3.fid=t4.fid AND t4.f_date = @fdate1 LEFT OUTER JOIN hw_xygzjj t5 on t3.F_YGNM=t5.F_YGID AND t4.F_DATE>=t5.F_DATE WHERE t5.F_YGID IS NULL AND t3.f_issyq='是' AND t1.F_DATE = @fdate1 GROUP BY t1.FID ) p2 on p1.fid=p2.FID ) rs1 on t1.fid = rs1.fid WHERE t1.F_DATE = @fdate1 OPTION (RECOMPILE) --个人计件 INSERT INTO hw_zpjjmxb SELECT t1.F_DATE as 计件日期 ,yg.FNUMBER as 员工代号 ,ygs.FNAME as 员工姓名 ,scdd.FNUMBER as 制令单号 ,scdd.FCPNM as 货品名称 ,t2.F_PRICE ,t2.F_FQTY ,null as 集体人数 ,t2.F_JJGZ as 金额 ,null as 补助 ,t2.F_JJGZ as 总金额,0,0 ,t1.fbillno ,scdd.FCPNO FROM GAT_DAY_ZP t1 INNER JOIN GAT_DAY_GR_ZP t2 on t1.FID = t2.FID INNER JOIN hw_scdd_select scdd on t2.F_SCNO = scdd.FID INNER JOIN T_HR_EMPINFO yg on t2.F_YGNO = yg.FID INNER JOIN T_HR_EMPINFO_L ygs on yg.FID = ygs.FID WHERE t1.F_DATE = @fdate1 OPTION (RECOMPILE) ----------------------------------------------- UPDATE t1 SET bz =t3.F_SYQBT ,jjcsbt = t3.F_CSBT ,gwbt = t3.F_GWBT FROM hw_zpjjmxb t1 INNER JOIN GAT_rgz t2 on t1.jjDate=t2.FDATE INNER JOIN GAT_rgzs t3 on t2.fid=t3.fid INNER JOIN T_HR_EMPINFO yg on t3.F_YGNO = yg.FID AND t1.ygno = yg.FNUMBER WHERE t1.jjDate=@fdate1 --反掉重复数据 UPDATE hw_zpjjmxb SET bz = 0 WHERE bz>0 AND jjDate=@fdate1 AND FInterID NOT IN (SELECT MIN(FInterID) FROM hw_zpjjmxb WHERE jjDate=@fdate1 GROUP BY ygno,bz) UPDATE hw_zpjjmxb SET jjcsbt = 0 WHERE jjcsbt>0 AND jjDate=@fdate1 AND FInterID NOT IN (SELECT MIN(FInterID) FROM hw_zpjjmxb WHERE jjDate=@fdate1 GROUP BY ygno,jjcsbt) UPDATE hw_zpjjmxb SET gwbt = 0 WHERE gwbt>0 AND jjDate=@fdate1 AND FInterID NOT IN (SELECT MIN(FInterID) FROM hw_zpjjmxb WHERE jjDate=@fdate1 GROUP BY ygno,gwbt) --重新计算个人金额和总金额 UPDATE hw_zpjjmxb SET je=ROUND(price*fqty/ CASE WHEN ISNULL(jtrs,0)=0 THEN 1 ELSE jtrs END,2) ,zje=ROUND(price * fqty / CASE WHEN ISNULL(jtrs,0) = 0 THEN 1 ELSE jtrs END ,2) + bz + jjcsbt + gwbt WHERE jjdate=@fdate1 -- DELETE t1 FROM hw_zpjjmxb t1 INNER JOIN T_HR_EMPINFO yg on t1.ygno = yg.FNUMBER INNER JOIN GAT_YGCQs cqs on yg.FID = cqs.F_YGNM INNER JOIN GAT_YGCQ cq on cqs.fid = cq.fid WHERE jjDate=@fdate1 AND cq.F_DATE = @fdate1 AND cqs.F_ISSYQ = '是' AND cqs.F_YGNM NOT IN (SELECT f_ygID FROM hw_xygzjj WHERE f_date <= @fdate1) END