2012-11-16

종이없는 연말정산




/*국세청 연말정산 간소화 시스템(http://yesone.go.kr)에서 다운받은 pdf xml로 변환하여 table parsing하는 sql*/
<?xml version="1.0" encoding="utf-8" ?>
<yesone>
   <doc>
   <doc_type>A</doc_type>
   <seq>2012100410196214</seq>
   <att_year>2012</att_year>
</doc>
 
                    :
                    중략
                    :
 
<form form_cd="L101Y">
   <man resid="7001011234567" name="홍길동">
      <data dat_cd="L01" busnid="1128206550" trade_nm="국제백신연구소(International Vaccine Institute(해피빈재단)" donation_cd="40">
         <sum>500000</sum>
      </data>
      <data dat_cd="L01" busnid="1318201425" trade_nm="용현2,5동새마을금고(열매)" donation_cd="10">
         <sum>500000</sum>
      </data>
      <data dat_cd="L01" busnid="2038200639" trade_nm="대한적십자사" donation_cd="10">
         <sum>10000</sum>
      </data>
      <data dat_cd="L01" busnid="7770800001" trade_nm="대한민국사회복지단체" donation_cd="10">
         <sum>150000</sum>
      </data>
      <data dat_cd="L01" busnid="7770800002" trade_nm="우리나라선거관리위원회" donation_cd="20">
         <sum>200000</sum>
      </data>
      <data dat_cd="L01" busnid="7770800003" trade_nm="가나다라적십자사" donation_cd="30">
         <sum>100000</sum>
      </data>
      <data dat_cd="L01" busnid="7770800004" trade_nm="코리아후원사" donation_cd="40">
         <sum>100000</sum>
      </data>
   </man>
      <man resid="3801011234567" name="홍부친">
      <data dat_cd="L01" busnid="2038212345" trade_nm="대한적십자사" donation_cd="10">
         <sum>10000</sum>
      </data>
   </man>
   <man resid="4001012234567" name="김모친">
      <data dat_cd="L01" busnid="2038212345" trade_nm="대한적십자사" donation_cd="10">
         <sum>1000000</sum>
      </data>
   </man>  
</form>
                    :
                    중략
                    :
</yesone>
 


--기부금 연간합계(L101Y)
WITH tb AS (
   SELECT
        EXTRACTVALUE ( VALUE ( p ), '/man/@resid' ) man_resid
      , EXTRACTVALUE ( VALUE ( p ), '/man/@name' ) man_name
      , EXTRACT ( VALUE ( p ), '/man/data' ) man_data
     FROM
       TABLE ( XMLSEQUENCE ( EXTRACT ( xmltype ( xml소스문자열 ), '/yesone/form[@form_cd="L101Y"]/man' ) ) ) p
)
SELECT
       tb.man_resid
     , tb.man_name
     , EXTRACTVALUE ( td.COLUMN_VALUE, '/data/@busnid' ) busnid
     , EXTRACTVALUE ( td.COLUMN_VALUE, '/data/@trade_nm' ) trade_nm
     , EXTRACTVALUE ( td.COLUMN_VALUE, '/data/@donation_cd' ) donation_cd
     , EXTRACTVALUE ( td.COLUMN_VALUE, '/data/sum' ) SUM
  FROM tb CROSS JOIN TABLE ( XMLSEQUENCE ( EXTRACT ( tb.man_data, '/data' ) ) ) td

 
<그림1 쿼리 실행결과>



사용자가 연말정산 간소화 시스템에서 다운로드 받은 파일로 연말정산 지급조서 제출파일용 자료를 자동으로 생성해 주도록 해준다.

pdf를 xml로 전환하는것 까지는 국세청 셈플소스를 거의 그대로 사용해도 될듯하고...

음...xml로 통째로 디비로 넘겨서 오라클 프로시져에서 테이블로 변환하면 작업이 한결 편해지고 사용자 입력오류도 줄일 수 있다.

음...우리 erp에 적용은 ???

글쎄다..ㅡㅡ; 작년에 사내 포털에서 직접 입력했다는데...

현업이 해준다니 싫덴다...이건 뭘까? ㅋㅋ

댓글 없음:

댓글 쓰기

-------------------------------------------------------
스마트폰 기종 :
OS버젼 :
-------------------------------------------------------
문제점 및문의 :