연말정산작업 끝나고 국세청에 전산매체자료 신고중인데 에러가 나와서요.
에러 내용이 E레코드가 없다는 내용입니다.
이유를 찾아보니 부양가족이 5명이하이면 문제없이 생성되는데
5명이 초과되면 저런 에러가 나옵니다.
E레코드가 5명까지 만들어주고 인원이 넘게되면 새로운 래코드를 만들어서 신고를 해야 하는데
이 부분에서 에러가 납니다.
레코드 자체가 생성이 되지 않았다고 하니 답답할 따름이네요.
작년과 비교해서 추가된 부분은 그닥 상관없는 부분이고 작년에는 프로그램상 잘 돌아가던 부분이라
더 답답합니다.
프로시져부분 소스 올리니 뭔가 이상한 점이나 의심가는 부분이 있다면 좀 부탁드립니다.
CREATE OR REPLACE PROCEDURE ERP.SA04150_P3
(P_I_YEAR IN HU_YEAREND_M.I_YEAR%TYPE,
P_I_DV IN HU_YEAREND_M.I_DV%TYPE,
P_I_EMP_NO IN HU_YEAREND_M.I_EMP_NO%TYPE,
P_NO IN NUMBER,
RETURN_TEXT OUT VARCHAR2)
IS
V_CHK NUMBER(5) := 0;
V_CNT NUMBER(5) := 0;
V_CNT2 NUMBER(5) := 0;
V_NO NUMBER(6) := 1; /* 일련번호 */
V_DATA_E VARCHAR2(1330) :=''; /* E레코드 */
V_WHILE_CNT NUMBER(5) := 1; /* WHILE문 COUNT */
V_I_TAX_NO CHAR(10) :='';
V_N_RSDT_NO CHAR(13) :='';
V_LEN NUMBER(5) := 0;
TS_PO VARCHAR2(3) := 'E00'; /* ERROR POSITION */
CHILD_CHK NUMBER(5) := 0;
CURSOR C1 IS
SELECT
CNT, I_EMP_NO, I_REL,N_NAME,REL_N_RSDT_NO,Y_FRN ,Y_BASIC,Y_OBST,
Y_CHILD_AD,
Y_CHILD, Y_WOMAN, Y_OLD, Y_MANYCHILD, Y_INSU, Y_MED, Y_EDU, Y_CARD,W_INSU, W_MED, W_EDU, W_CARD, W_CHECK,
W_CASH, W_GIFT, W_ETC_INSU, W_ETC_MED, W_ETC_EDU, W_ETC_CARD,W_ETC_CHECK,W_ETC_CASH,W_ETC_GIFT,
W_MART, W_ETC_MART, W_ACDM
FROM
(
SELECT
ROWNUM CNT, I_EMP_NO, I_REL,N_NAME,REL_N_RSDT_NO,Y_FRN ,Y_BASIC,Y_OBST,
Y_CHILD_AD,
Y_CHILD, Y_WOMAN, Y_OLD, Y_MANYCHILD, Y_INSU, Y_MED, Y_EDU, Y_CARD,W_INSU, W_MED, W_EDU, W_CARD, W_CHECK,
W_CASH, W_GIFT, W_ETC_INSU, W_ETC_MED, W_ETC_EDU, W_ETC_CARD,W_ETC_CHECK,W_ETC_CASH,W_ETC_GIFT,
W_MART, W_ETC_MART, W_ACDM
FROM
(
SELECT
C.I_EMP_NO,
F_COMMON_ETC1(C.I_REL) I_REL,
C.N_NAME,
C.N_RSDT_NO REL_N_RSDT_NO,
C.Y_FRN ,
DECODE(C.Y_BASIC,'Y','1',' ') Y_BASIC,
DECODE(C.Y_OBST,'Y','1',' ') Y_OBST,
DECODE(C.Y_CHILD,'Y','1',' ') Y_CHILD,
DECODE(C.I_REL,'H90000',DECODE(A.Y_WOMAN,'Y','1',' '),' ') Y_WOMAN,
CASE
WHEN DECODE(SUBSTR(C.N_RSDT_NO,7,1),3,20,4,20,19)||SUBSTR(C.N_RSDT_NO,1,6) < SUBSTR(TO_CHAR(SYSDATE, 'YYYY')-71,1,4)||'1231' THEN --만70세 이상 --
CASE
WHEN C.Y_BASIC = 'Y' THEN '1'
ELSE ' '
END
ELSE ' '
END Y_OLD,
DECODE(C.I_REL,'H90040',DECODE(C.Y_BASIC,'Y','1',' '),' ') Y_MANYCHILD,
DECODE(C.Y_CHILD_AD,'Y','1',' ') Y_CHILD_AD,
C.Y_INSU,
C.Y_MED,
C.Y_EDU,
C.Y_CARD,
NVL(A.W_PRE_MEDINSU, 0) + NVL(A.W_PRE_UEMPL_INSU, 0) + NVL(A.W_CUR_MEDINSU, 0) + NVL(A.W_CUR_UEMPL_INSU, 0)
+ NVL(B.W_INSU1, 0) + NVL(B.W_INSU2, 0) + NVL(B.W_OBST_INSU, 0) W_INSU,
NVL(D.W_MED,0)W_MED,
NVL(D.W_EDU,0)W_EDU,
NVL(D.W_CARD,0)W_CARD,
NVL(D.W_CHECK,0)W_CHECK,
NVL(A.W_CASH,0)W_CASH,
NVL(D.W_MART,0)W_MART,
NVL(A.W_GIFT_GOV,0) + NVL(A.W_GIFT_50,0) + NVL(A.W_GIFT_30,0) + NVL(A.W_GIFT15,0) + NVL(A.W_GIFT_LBR,0) W_GIFT,
NVL(D.W_ETC_INSU,0)W_ETC_INSU,
NVL(D.W_ETC_MED,0)W_ETC_MED,
NVL(D.W_ETC_EDU,0)W_ETC_EDU,
NVL(D.W_ETC_CARD,0)W_ETC_CARD,
NVL(D.W_ETC_CHECK,0)W_ETC_CHECK,
NVL(D.W_ETC_CASH,0)W_ETC_CASH,
NVL(B.W_ACDM,0)W_ACDM,
NVL(D.W_ETC_MART,0)W_ETC_MART,
NVL(D.W_ETC_GIFT,0)W_ETC_GIFT
FROM HU_YEAREND_M A,
HU_YEARBASE_M B,
HU_YEARFMLY_M C,
HU_YEARFMLY_D D
WHERE A.I_EMP_NO = B.I_EMP_NO
AND B.I_EMP_NO = C.I_EMP_NO
AND C.I_EMP_NO = D.I_EMP_NO(+)
AND A.I_YEAR = B.I_YEAR
AND C.N_RSDT_NO = D.N_RSDT_NO(+)
AND D.I_YEAR (+) = P_I_YEAR
AND A.I_YEAR = P_I_YEAR --2009.03.03 FCS 추가
AND C.I_EMP_NO = P_I_EMP_NO
AND A.I_DV IN (SELECT I_DV FROM CS_DIVISION_M WHERE N_AVT_RPT_DV = P_I_DV)
AND C.Y_SBTR = 'Y'
ORDER BY I_REL
)
)
WHERE CNT < 6 AND I_REL = 0
UNION ALL
SELECT
CNT, I_EMP_NO, I_REL,N_NAME,REL_N_RSDT_NO,Y_FRN ,Y_BASIC,Y_OBST,
Y_CHILD_AD,-- 2009.03.02 FCS 출산입양공제 추가
Y_CHILD, Y_WOMAN, Y_OLD, Y_MANYCHILD, Y_INSU, Y_MED, Y_EDU, Y_CARD,W_INSU, W_MED, W_EDU, W_CARD, W_CHECK,
W_CASH, W_GIFT, W_ETC_INSU, W_ETC_MED, W_ETC_EDU, W_ETC_CARD, W_ETC_CHECK,W_ETC_CASH,W_ETC_GIFT,
W_MART, W_ETC_MART, W_ACDM
FROM
(
SELECT
ROWNUM CNT, I_EMP_NO, I_REL,N_NAME,REL_N_RSDT_NO,Y_FRN ,Y_BASIC,Y_OBST,
Y_CHILD_AD,-- 2009.03.02 FCS 출산입양공제 추가
Y_CHILD, Y_WOMAN, Y_OLD, Y_MANYCHILD, Y_INSU, Y_MED, Y_EDU, Y_CARD,W_INSU, W_MED, W_EDU, W_CARD, W_CHECK,
W_CASH, W_GIFT, W_ETC_INSU, W_ETC_MED, W_ETC_EDU, W_ETC_CARD,W_ETC_CHECK,W_ETC_CASH,W_ETC_GIFT,
W_MART, W_ETC_MART, W_ACDM
FROM
(
SELECT
C.I_EMP_NO,
SUBSTR(C.I_REL,5,1) I_REL,
C.N_NAME,
C.N_RSDT_NO REL_N_RSDT_NO,
C.Y_FRN ,
DECODE(C.Y_BASIC,'Y','1',' ') Y_BASIC,
DECODE(C.Y_OBST,'Y','1',' ') Y_OBST,
DECODE(C.Y_CHILD,'Y','1',' ') Y_CHILD,
DECODE(C.I_REL,'H90000',DECODE(A.Y_WOMAN,'Y','1',' '),' ') Y_WOMAN,
CASE
WHEN DECODE(SUBSTR(C.N_RSDT_NO,7,1),3,20,4,20,19)||SUBSTR(C.N_RSDT_NO,1,6) < SUBSTR(TO_CHAR(SYSDATE, 'YYYY')-71,1,4)||'1231' THEN --만70세 이상 --
CASE
WHEN C.Y_BASIC = 'Y' THEN '1'
ELSE ' '
END
ELSE ' '
END Y_OLD,
DECODE(C.I_REL,'H90040',DECODE(C.Y_BASIC,'Y','1',' '),' ') Y_MANYCHILD,
DECODE(C.Y_CHILD_AD,'Y','1',' ') Y_CHILD_AD,
C.Y_INSU,
C.Y_MED,
C.Y_EDU,
C.Y_CARD,
NVL(D.W_INSU,0)W_INSU,
NVL(D.W_MED,0)W_MED,
NVL(D.W_EDU,0)W_EDU,
NVL(D.W_CARD,0)W_CARD,
NVL(D.W_CHECK,0)W_CHECK,
NVL(D.W_MART,0)W_MART,
NVL(D.W_CASH,0)W_CASH,
NVL(D.W_GIFT,0)W_GIFT,
NVL(D.W_ETC_INSU,0)W_ETC_INSU,
NVL(D.W_ETC_MED,0)W_ETC_MED,
NVL(D.W_ETC_EDU,0)W_ETC_EDU,
NVL(D.W_ETC_CARD,0)W_ETC_CARD,
NVL(D.W_ETC_CHECK,0)W_ETC_CHECK,
NVL(D.W_ETC_MART,0)W_ETC_MART,
NVL(D.W_ETC_CASH,0)W_ETC_CASH,
NVL(D.W_ETC_GIFT,0)W_ETC_GIFT,
NVL(B.W_ACDM,0)W_ACDM
FROM HU_YEAREND_M A,
HU_YEARBASE_M B,
HU_YEARFMLY_M C,
HU_YEARFMLY_D D
WHERE A.I_EMP_NO = C.I_EMP_NO
AND C.I_EMP_NO = D.I_EMP_NO(+)
AND C.N_RSDT_NO = D.N_RSDT_NO(+)
AND D.I_YEAR (+) = P_I_YEAR
AND A.I_YEAR = P_I_YEAR --2009.03.03 FCS 추가
AND C.I_EMP_NO = P_I_EMP_NO
AND A.I_DV IN (SELECT I_DV FROM CS_DIVISION_M WHERE N_AVT_RPT_DV = P_I_DV)
AND C.Y_SBTR = 'Y'
ORDER BY I_REL
)
)
WHERE CNT < 6 AND I_REL <> 0 ;
-- 5명 초과시
CURSOR C2 IS
SELECT
CNT, I_EMP_NO, I_REL,N_NAME,REL_N_RSDT_NO,Y_FRN ,Y_BASIC,Y_OBST,
Y_CHILD_AD,-- 2009.03.02 FCS 출산입양공제 추가
Y_CHILD, Y_WOMAN, Y_OLD, Y_MANYCHILD, Y_INSU, Y_MED, Y_EDU, Y_CARD,W_INSU, W_MED, W_EDU, W_CARD, W_CHECK,
W_CASH, W_GIFT, W_ETC_INSU, W_ETC_MED, W_ETC_EDU, W_ETC_CARD,W_ETC_CHECK,W_ETC_CASH,W_ETC_GIFT,
W_MART, W_ETC_MART, W_ACDM
FROM
(
SELECT
ROWNUM CNT, I_EMP_NO, I_REL,N_NAME,REL_N_RSDT_NO,Y_FRN ,Y_BASIC,Y_OBST,
Y_CHILD_AD,-- 2009.03.02 FCS 출산입양공제 추가
Y_CHILD, Y_WOMAN, Y_OLD, Y_MANYCHILD, Y_INSU, Y_MED, Y_EDU, Y_CARD,W_INSU, W_MED, W_EDU, W_CARD,W_CHECK,
W_CASH, W_GIFT, W_ETC_INSU, W_ETC_MED, W_ETC_EDU, W_ETC_CARD,W_ETC_CHECK,W_ETC_CASH,W_ETC_GIFT,
W_MART, W_ETC_MART, W_ACDM
FROM
(
SELECT
C.I_EMP_NO,
SUBSTR(C.I_REL,5,1) I_REL,
C.N_NAME,
C.N_RSDT_NO REL_N_RSDT_NO,
C.Y_FRN ,
DECODE(C.Y_BASIC,'Y','1',' ') Y_BASIC,
DECODE(C.Y_OBST,'Y','1',' ') Y_OBST,
DECODE(C.Y_CHILD,'Y','1',' ') Y_CHILD,
DECODE(C.I_REL,'H90000',DECODE(A.Y_WOMAN,'Y','1',' '),' ') Y_WOMAN,
CASE
WHEN DECODE(SUBSTR(C.N_RSDT_NO,7,1),3,20,4,20,19)||SUBSTR(C.N_RSDT_NO,1,6) < SUBSTR(TO_CHAR(SYSDATE, 'YYYY')-66,1,4)||'1231' THEN --만65세 이상 --
CASE
WHEN C.Y_BASIC = 'Y' THEN '1'
ELSE ' '
END
ELSE ' '
END Y_OLD,
DECODE(C.I_REL,'H90040',DECODE(C.Y_BASIC,'Y','1',' '),' ') Y_MANYCHILD,
DECODE(C.Y_CHILD_AD,'Y','1',' ') Y_CHILD_AD, -- 2009.03.02 FCS 출산입양공제 추가
C.Y_INSU,
C.Y_MED,
C.Y_EDU,
C.Y_CARD,
NVL(D.W_INSU,0)W_INSU,
NVL(D.W_MED,0)W_MED,
NVL(D.W_EDU,0)W_EDU,
NVL(D.W_CARD,0)W_CARD,
NVL(D.W_CHECK,0)W_CHECK,
NVL(D.W_MART,0)W_MART,
NVL(D.W_CASH,0)W_CASH,
NVL(D.W_GIFT,0)W_GIFT,
NVL(D.W_ETC_INSU,0)W_ETC_INSU,
NVL(D.W_ETC_MED,0)W_ETC_MED,
NVL(D.W_ETC_EDU,0)W_ETC_EDU,
NVL(D.W_ETC_CARD,0)W_ETC_CARD,
NVL(D.W_ETC_CHECK,0)W_ETC_CHECK,
NVL(D.W_ETC_MART,0)W_ETC_MART,
NVL(D.W_ETC_CASH,0)W_ETC_CASH,
NVL(D.W_ETC_GIFT,0)W_ETC_GIFT,
NVL(B.W_ACDM,0)W_ACDM
FROM HU_YEAREND_M A,
HU_YEARBASE_M B,
HU_YEARFMLY_M C,
HU_YEARFMLY_D D
WHERE A.I_EMP_NO = C.I_EMP_NO
AND C.I_EMP_NO = D.I_EMP_NO(+)
AND C.N_RSDT_NO = D.N_RSDT_NO(+)
AND D.I_YEAR(+) = P_I_YEAR
AND A.I_YEAR = P_I_YEAR --2009.03.03 FCS 추가
AND C.I_EMP_NO = P_I_EMP_NO
AND A.I_DV IN (SELECT I_DV FROM CS_DIVISION_M WHERE N_AVT_RPT_DV = P_I_DV)
AND C.Y_SBTR = 'Y'
ORDER BY I_REL
)
)
WHERE CNT > 5;
-- 레코드 생성 부분
BEGIN
TS_PO := 'E00'; /* 레코드생성 */
SELECT I_TAX_NO, N_RSDT_NO
INTO V_I_TAX_NO, V_N_RSDT_NO
FROM HU_PSN_M A,
CS_DIVISION_M B,
HU_YEAREND_M C
WHERE C.I_DV = B.I_DV
AND A.I_EMP_NO = C.I_EMP_NO
AND C.I_YEAR = P_I_YEAR --2009.03.02 FCS
AND A.I_EMP_NO = P_I_EMP_NO;
V_DATA_E := NULL;
V_DATA_E := 'E'; --레코드 구분(1)
V_DATA_E := SUBSTRB(V_DATA_E, 1, 1) || '20'; --자료구분(2)
V_DATA_E := SUBSTRB(V_DATA_E, 1, 3) || SUBSTR(V_I_TAX_NO,1,3); --세무서(3)
V_DATA_E := SUBSTRB(V_DATA_E, 1, 6) || LPAD(TO_CHAR(TO_NUMBER(P_NO)),6,'0'); --일련번호(6)
/* 원천징수의무자 */
V_DATA_E := SUBSTRB(V_DATA_E, 1, 12) || LPAD(V_I_TAX_NO,10,' '); --사업자등록번호(10)
/* 소득자(근로자) */
V_DATA_E := SUBSTRB(V_DATA_E, 1, 22) || LPAD(V_N_RSDT_NO,13,' '); --주민등록번호(13)
V_LEN := LENGTH(V_DATA_E);
TS_PO := 'E01'; /* 레코드생성 */
SELECT SUM(DECODE(C.I_REL,'H90040',DECODE(C.Y_BASIC,'Y',1,0),0)) Y_MANYCHILD_CHK
INTO CHILD_CHK
FROM HU_YEAREND_M A,
HU_YEARFMLY_M C,
HU_YEARFMLY_D D
WHERE A.I_EMP_NO = C.I_EMP_NO
AND C.I_EMP_NO = D.I_EMP_NO(+)
AND C.N_RSDT_NO = D.N_RSDT_NO(+)
AND D.I_YEAR(+) = P_I_YEAR
AND C.I_EMP_NO = P_I_EMP_NO
AND A.I_DV IN (SELECT I_DV FROM CS_DIVISION_M WHERE N_AVT_RPT_DV = P_I_DV);
FOR R1 IN C1 LOOP
/* 소득공제명세1의 인적사항 */
V_DATA_E := V_DATA_E || LPAD(R1.I_REL,1,' '); --관계(1)
V_DATA_E := V_DATA_E || LPAD(R1.Y_FRN,1,' '); --내외국인구분코드(1)
V_DATA_E := V_DATA_E || LPAD(R1.N_NAME,20,' '); --성명(20)
V_DATA_E := V_DATA_E || LPAD(R1.REL_N_RSDT_NO,13,' '); --주민등록번호(13)
V_DATA_E := V_DATA_E || LPAD(R1.Y_BASIC,1,' '); --기본공제(1)
V_DATA_E := V_DATA_E || LPAD(R1.Y_OBST,1,' '); --장애인(1)
V_DATA_E := V_DATA_E || LPAD(R1.Y_CHILD,1,' '); --자녀양육비(1)
V_DATA_E := V_DATA_E || LPAD(R1.Y_WOMAN,1,' '); --부녀자(1)
V_DATA_E := V_DATA_E || LPAD(R1.Y_OLD,1,' '); --경로우대(1)
V_DATA_E := V_DATA_E || LPAD(R1.Y_CHILD_AD,1,' '); --출산입양자공제(1)
/* 소득공제명세1의 국세청자료 공제금액 */
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R1.W_INSU),10,'0'); --보험료(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R1.W_MED),10,'0'); --의료비(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R1.W_EDU),10,'0'); --교육비(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R1.W_CARD),10,'0'); --신용카드 등(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R1.W_CHECK),10,'0'); --직불카드 등(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R1.W_CASH),10,'0'); --현금영수증(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R1.W_MART),10,'0'); --전통시장(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R1.W_GIFT),13,'0'); --기부금(13)
/* 소득공제명세1의 국세청자료 이외의 공제금액 */
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R1.W_ETC_INSU),10,'0'); --보험료외(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R1.W_ETC_MED),10,'0'); --의료비외(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R1.W_ETC_EDU),10,'0'); --교육비외(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R1.W_ETC_CARD),10,'0'); --신용카드 등외(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R1.W_ETC_CHECK),10,'0'); --직불카드 등외(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R1.W_ACDM),10,'0'); --학원비지로납부액(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R1.W_ETC_MART),10,'0'); --전통시장 사용액외(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R1.W_ETC_GIFT),13,'0'); --기부금(13)
V_WHILE_CNT := V_WHILE_CNT + 1;
END LOOP;
V_LEN := LENGTH(V_DATA_E);
/* 소득공제명세2의 인적사항 */
WHILE V_WHILE_CNT < 6 LOOP
V_DATA_E := V_DATA_E || LPAD(' ',1,' '); --관계(1)
V_DATA_E := V_DATA_E || LPAD(' ',1,' '); --내외국인구분코드(1)
V_DATA_E := V_DATA_E || LPAD(' ',20,' '); --성명(20)
V_DATA_E := V_DATA_E || LPAD(' ',13,' '); --주민등록번호(13)
V_DATA_E := V_DATA_E || LPAD(' ',1,' '); --기본공제(1)
V_DATA_E := V_DATA_E || LPAD(' ',1,' '); --장애인(1)
V_DATA_E := V_DATA_E || LPAD(' ',1,' '); --자녀양육비(1)
V_DATA_E := V_DATA_E || LPAD(' ',1,' '); --부녀자(1)
V_DATA_E := V_DATA_E || LPAD(' ',1,' '); --경로우대(1)
V_DATA_E := V_DATA_E || LPAD(' ',1,' '); --출산입양자공제(1)
/* 소득공제명세2의 국세청자료 공제금액 */
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --보험료(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --의료비(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --교육비(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --신용카드 등(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --직불카드 등(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --현금영수증(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --전통시장(10)
V_DATA_E := V_DATA_E || LPAD('0',13,'0'); --기부금(13)
/* 소득공제명세2의 국세청자료 이외의 공제금액 */
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --보험료외(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --의료비외(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --교육비외(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --신용카드 등외(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --직불카드 등외(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --학원비지로납부액(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --전통시장 등외(10)
V_DATA_E := V_DATA_E || LPAD('0',13,'0'); --기부금(13)
V_LEN := LENGTH(V_DATA_E);
V_WHILE_CNT := V_WHILE_CNT + 1;
END LOOP;
V_LEN := LENGTH(V_DATA_E);
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(TO_NUMBER(V_NO)),2,'0'); --일련번호(2)
V_NO := V_NO+1;
V_DATA_E := V_DATA_E || LPAD(' ',258,' '); --공란(2)
SELECT COUNT(O_SEQ)
INTO V_CHK
FROM HU_YEARREC_M
WHERE I_YEAR = P_I_YEAR
AND I_DV = P_I_DV
AND I_EMP_NO = P_I_EMP_NO
AND I_REC_GBN = 'E';
IF V_CHK > 0 THEN
DELETE HU_YEARREC_M WHERE I_YEAR = P_I_YEAR AND I_DV = P_I_DV AND I_EMP_NO = P_I_EMP_NO AND I_REC_GBN = 'E';
ELSE
SELECT MAX(O_SEQ)
INTO V_CNT
FROM HU_YEARREC_M
WHERE I_YEAR = P_I_YEAR
AND I_DV = P_I_DV;
INSERT INTO HU_YEARREC_M ( I_YEAR, I_DV, O_SEQ, I_REC_GBN, I_EMP_NO, N_REC )
VALUES ( P_I_YEAR, P_I_DV, V_CNT + 1, 'E', P_I_EMP_NO, V_DATA_E );
END IF;
--5명이 초과 되면 생성되는 레코드
SELECT COUNT(A.I_EMP_NO)
INTO V_CNT2
FROM HU_YEAREND_M A,
HU_YEARFMLY_M C,
HU_YEARFMLY_D D
WHERE A.I_EMP_NO = C.I_EMP_NO
AND C.I_EMP_NO = D.I_EMP_NO(+)
AND C.N_RSDT_NO = D.N_RSDT_NO(+)
AND D.I_YEAR(+) = P_I_YEAR
AND A.I_YEAR = P_I_YEAR
AND C.I_EMP_NO = P_I_EMP_NO
AND A.I_DV IN (SELECT I_DV FROM CS_DIVISION_M WHERE N_AVT_RPT_DV = P_I_DV);
IF V_CNT2 > 5 THEN
V_DATA_E := NULL;
V_DATA_E := 'E'; --레코드 구분(1)
V_DATA_E := SUBSTRB(V_DATA_E, 1, 1) || '20'; --자료구분(2)
V_DATA_E := SUBSTRB(V_DATA_E, 1, 3) || SUBSTR(V_I_TAX_NO,1,3); --세무서(3)
V_DATA_E := SUBSTRB(V_DATA_E, 1, 6) || LPAD(TO_CHAR(TO_NUMBER(P_NO)),6,'0'); --일련번호(6)
/* 원천징수의무자 */
V_DATA_E := SUBSTRB(V_DATA_E, 1, 12) || LPAD(V_I_TAX_NO,10,' '); --사업자등록번호(10)
/* 소득자(근로자) */
V_DATA_E := SUBSTRB(V_DATA_E, 1, 22) || LPAD(V_N_RSDT_NO,13,' '); --주민등록번호(13)
V_LEN := LENGTH(V_DATA_E);
V_WHILE_CNT := 1;
FOR R2 IN C2 LOOP
/* 소득공제명세1의 인적사항 */
V_DATA_E := V_DATA_E || LPAD(R2.I_REL,1,' '); --관계(1)
V_DATA_E := V_DATA_E || LPAD(R2.Y_FRN,1,' '); --내외국인구분코드(1)
V_DATA_E := V_DATA_E || LPAD(R2.N_NAME,20,' '); --성명(20)
V_DATA_E := V_DATA_E || LPAD(R2.REL_N_RSDT_NO,13,' '); --주민등록번호(13)
V_DATA_E := V_DATA_E || LPAD(R2.Y_BASIC,1,' '); --기본공제(1)
V_DATA_E := V_DATA_E || LPAD(R2.Y_OBST,1,' '); --장애인(1)
V_DATA_E := V_DATA_E || LPAD(R2.Y_CHILD,1,' '); --자녀양육비(1)
V_DATA_E := V_DATA_E || LPAD(R2.Y_WOMAN,1,' '); --부녀자(1)
V_DATA_E := V_DATA_E || LPAD(R2.Y_OLD,1,' '); --경로우대(1)
V_DATA_E := V_DATA_E || LPAD(R2.Y_CHILD_AD,1,' '); --출산입양자공제(1)
/* 소득공제명세1의 국세청자료 공제금액 */
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R2.W_INSU),10,'0'); --보험료(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R2.W_MED),10,'0'); --의료비(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R2.W_EDU),10,'0'); --교육비(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R2.W_CARD),10,'0'); --신용카드 등(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R2.W_CHECK),10,'0'); --직불카드 등(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R2.W_CASH),10,'0'); --현금영수증(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R2.W_MART),10,'0'); --전통시장(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R2.W_GIFT),13,'0'); --기부금(13)
/* 소득공제명세1의 국세청자료 이외의 공제금액 */
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R2.W_ETC_INSU),10,'0'); --보험료외(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R2.W_ETC_MED),10,'0'); --의료비외(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R2.W_ETC_EDU),10,'0'); --교육비외(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R2.W_ETC_CARD),10,'0'); --신용카드 등외(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R2.W_ETC_CHECK),10,'0'); --직불카드 등외(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R2.W_ACDM),10,'0'); --학원비지로(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R2.W_ETC_MART),10,'0'); --전통시장 등외(10)
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(R2.W_ETC_GIFT),13,'0'); --기부금(13)
V_WHILE_CNT := V_WHILE_CNT + 1;
END LOOP;
WHILE V_WHILE_CNT < 6 LOOP
V_DATA_E := V_DATA_E || LPAD(' ',1,' '); --관계(1)
V_DATA_E := V_DATA_E || LPAD(' ',1,' '); --내외국인구분코드(1)
V_DATA_E := V_DATA_E || LPAD(' ',20,' '); --성명(20)
V_DATA_E := V_DATA_E || LPAD(' ',13,' '); --주민등록번호(13)
V_DATA_E := V_DATA_E || LPAD(' ',1,' '); --기본공제(1)
V_DATA_E := V_DATA_E || LPAD(' ',1,' '); --장애인(1)
V_DATA_E := V_DATA_E || LPAD(' ',1,' '); --자녀양육비(1)
V_DATA_E := V_DATA_E || LPAD(' ',1,' '); --부녀자(1)
V_DATA_E := V_DATA_E || LPAD(' ',1,' '); --경로우대(1)
V_DATA_E := V_DATA_E || LPAD(' ',1,' '); --출산입양자공제(1)
/* 소득공제명세1의 국세청자료 공제금액 */
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --보험료(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --의료비(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --교육비(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --신용카드 등(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --직불카드 등(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --현금영수증(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --전통시장(10)
V_DATA_E := V_DATA_E || LPAD('0',13,'0'); --기부금(13)
/* 소득공제명세1의 국세청자료 이외의 공제금액 */
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --보험료외(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --의료비외(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --교육비외(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --신용카드 등외(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --직불카드 등외(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --학원비지로(10)
V_DATA_E := V_DATA_E || LPAD('0',10,'0'); --전통시장 등외(10)
V_DATA_E := V_DATA_E || LPAD('0',13,'0'); --기부금(13)
V_LEN := LENGTH(V_DATA_E);
V_WHILE_CNT := V_WHILE_CNT + 1;
END LOOP;
V_LEN := LENGTH(V_DATA_E);
V_DATA_E := V_DATA_E || LPAD(TO_CHAR(TO_NUMBER(V_NO)),2,'0'); --일련번호(2)
V_NO := V_NO+1;
V_DATA_E := V_DATA_E || LPAD(' ',258,' '); --공란(2)
SELECT COUNT(O_SEQ)
INTO V_CHK
FROM HU_YEARREC_M
WHERE I_YEAR = P_I_YEAR
AND I_DV = P_I_DV
AND I_EMP_NO = P_I_EMP_NO
AND I_REC_GBN = 'E';
SELECT MAX(O_SEQ)
INTO V_CNT
FROM HU_YEARREC_M
WHERE I_YEAR = P_I_YEAR
AND I_DV = P_I_DV;
INSERT INTO HU_YEARREC_M ( I_YEAR, I_DV, O_SEQ, I_REC_GBN, I_EMP_NO, N_REC )
VALUES ( P_I_YEAR, P_I_DV, V_CNT + 1, 'E', P_I_EMP_NO, V_DATA_E );
END IF;
COMMIT;
RETURN_TEXT := '0';
EXCEPTION
WHEN NO_DATA_FOUND THEN
ROLLBACK;
RETURN_TEXT := TS_PO || ':' || SQLERRM;
WHEN OTHERS THEN
ROLLBACK;
RETURN_TEXT := TS_PO || ':' || SQLERRM;
END SA04150_P3 ;
/