First commit, 已上架的電子書
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
CREATE PROC dbo.GEX_CALCSALARY
|
||||
(
|
||||
@P1 VARCHAR(100),
|
||||
@P2 VARCHAR(100),
|
||||
@P3 VARCHAR(100),
|
||||
@P4 VARCHAR(100),
|
||||
@P5 VARCHAR(100),
|
||||
@P6 VARCHAR(100),
|
||||
@P7 VARCHAR(100),
|
||||
@P8 VARCHAR(100),
|
||||
@P9 VARCHAR(100), --預留
|
||||
@P10 VARCHAR(100), --預留
|
||||
@P11 VARCHAR(100),
|
||||
@P12 VARCHAR(100),
|
||||
@LOGINID VARCHAR(30)
|
||||
)
|
||||
/*
|
||||
Function : 將薪資計算由前端程式改寫為 SP
|
||||
Description: 利用參數切換, 可以保留原程式, 或改為 SP 計算
|
||||
@P1 人員起
|
||||
@P2 人員迄
|
||||
@P3 部門起
|
||||
@P4 部門迄
|
||||
@P5 日期起
|
||||
@P6 日期迄
|
||||
@P7 薪資年月
|
||||
@P8 薪資期數
|
||||
@P11 特殊日期
|
||||
@P12 特殊日期
|
||||
@LOGINID 登入ID(少用)
|
||||
|
||||
Build Date : 2013/05/23
|
||||
|
||||
Modify History
|
||||
Item Who Date Modify Docs
|
||||
==== ========== ========== ================================================
|
||||
|
||||
*/
|
||||
AS
|
||||
|
||||
IF @P1 = '*' SET @P1 = ''
|
||||
IF @P2 = '*' SET @P2 = 'zzzzzz'
|
||||
IF @P3 = '*' SET @P3 = ''
|
||||
IF @P4 = '*' SET @P4 = 'zzzzzz'
|
||||
IF @P7 = '*' SET @P7 = dbo.CALC_YEARMONTH(@P5)
|
||||
IF @P8 = '*' SET @P8 = '0'
|
||||
|
||||
--0.刪除當月當期資料
|
||||
DELETE FROM ESSYEARFINAL WHERE YEARMONTH = @P7 AND SALTERM = @P8 AND PERSONID >= @P1 AND PERSONID <= @P2
|
||||
DELETE FROM ESSCALCFORMULA_LOG --WHERE LOGINID = @LOGINID
|
||||
|
||||
--1.將薪資變數, 執行後填入暫存檔備用 ESS_TMPC1 LOGINID,VARID,PERSONID,RESULT_VALUE
|
||||
EXEC GEX_CALCSALARY_STEP1 @P1,@P2,@P3,@P4,@P5,@P6,@P7,@P8,@P9,@P10,@P11,@P12,@LOGINID
|
||||
|
||||
--2.呼叫 GEX_SALFORMULA_V3, 展開每一個 user 每個科目的計算公式(loop)
|
||||
EXEC GEX_CALCSALARY_STEP2 @P1,@P2,@P3,@P4,@P5,@P6,@P7,@P8,@P9,@P10,@P11,@P12,@LOGINID;
|
||||
|
||||
--計算後, 整理 LOG 檔的內容, 寫回年檔(人/科目的最末筆)
|
||||
WITH ESS1
|
||||
AS
|
||||
(
|
||||
SELECT PERSONID,ESS_SUBJECTID,SALTERM,MAX(SEQNO) SEQNO FROM ESSCALCFORMULA_LOG
|
||||
WHERE LOGINID = @LOGINID AND YEARMONTH = @P7 AND SALTERM = @P8
|
||||
GROUP BY PERSONID,ESS_SUBJECTID,SALTERM
|
||||
), ESS2
|
||||
AS
|
||||
(
|
||||
SELECT A.PERSONID,A.ESS_SUBJECTID,A.SEQNO,ISNULL(B.CALCAMOUNT,0) CALCAMOUNT FROM ESS1 A
|
||||
LEFT JOIN ESSCALCFORMULA_LOG B ON A.PERSONID = B.PERSONID AND A.ESS_SUBJECTID = B.ESS_SUBJECTID AND A.SALTERM = B.SALTERM AND A.SEQNO = B.SEQNO
|
||||
WHERE B.LOGINID = @LOGINID AND B.YEARMONTH = @P7 AND B.SALTERM = @P8
|
||||
)
|
||||
|
||||
INSERT INTO ESSYEARFINAL (PERSONID,YEARMONTH,SALTERM,ESS_SUBJECTID,SALARY)
|
||||
SELECT DISTINCT PERSONID,@P7,@P8,ESS_SUBJECTID,CALCAMOUNT
|
||||
FROM ESS2
|
||||
|
||||
--還有非固定薪要 Update 回去
|
||||
SELECT PERSONID,ESS_SUBJECTID,SALTERM,SUM(SALARY) SALARY
|
||||
INTO #TMP1 FROM ESSNONEFIXSAL
|
||||
WHERE PERSONID >= @P1 AND PERSONID <= @P2 AND WDAY >= @P5 AND WDAY <= @P6 AND SALTERM = @P8
|
||||
GROUP BY PERSONID,ESS_SUBJECTID,SALTERM
|
||||
|
||||
--若已存在, 則累加
|
||||
UPDATE ESSYEARFINAL SET SALARY = SALARY + ISNULL((SELECT SALARY FROM #TMP1 WHERE ESSYEARFINAL.PERSONID = #TMP1.PERSONID AND ESSYEARFINAL.YEARMONTH = @P7 AND ESSYEARFINAL.SALTERM = @P8 AND ESSYEARFINAL.ESS_SUBJECTID = #TMP1.ESS_SUBJECTID),0)
|
||||
WHERE PERSONID >= @P1 AND PERSONID <= @P2 AND YEARMONTH = @P7 AND SALTERM = @P8
|
||||
|
||||
INSERT INTO ESSYEARFINAL (PERSONID,YEARMONTH,SALTERM,ESS_SUBJECTID,SALARY)
|
||||
SELECT PERSONID,@P7,@P8,ESS_SUBJECTID,SALARY
|
||||
FROM #TMP1
|
||||
WHERE NOT EXISTS
|
||||
(
|
||||
SELECT * FROM ESSYEARFINAL WHERE ESSYEARFINAL.PERSONID = #TMP1.PERSONID AND ESSYEARFINAL.YEARMONTH = @P7 AND ESSYEARFINAL.SALTERM = @P8 AND ESSYEARFINAL.ESS_SUBJECTID = #TMP1.ESS_SUBJECTID
|
||||
)
|
||||
|
||||
DROP TABLE #TMP1
|
||||
Reference in New Issue
Block a user