링크허브에서 제공하는 전자세금계산서 API 를 이용한 ‘수정세금계산서’ 작성방법을 안내해 드리도록 하겠습니다. 수정세금계산서 작성을 위해서는 임시저장(register) API 호출시 ‘수정사유코드(modifyCode)’ 와 원본 세금계산서의 ‘아이템키(ItemKey)’를 기재해야 합니다. 다음의 수정사유코드, 아이템키에 대한 설명과 언어별 임시저장 예제코드를 참조하여 수정세금계산서를 작성하시기 바랍니다.
수정세금계산서
국세청 전송이 완료된 전자세금계산서의 수정사유가 발생한 경우, 양자 간 폐기처분을 할 수 없으므로 반드시 세법에 적합한 수정세금계산서를 발행해야 합니다.『부가세법 시행령 제59조』 단, 발행장수가 2장인 경우에는 반드시 발행방법에 따라 2장 모두 발행해야 합니다.
구분 | 작성 · 발행장수 · 작성월일 | 발행기한 | |||
---|---|---|---|---|---|
방법 | 발행장수 | 작성월일 | 비고란 | ||
기재사항 착오정정 |
부(-)의 세금계산서 1장 추가하여 정확한 세금계산서 1장 발행 | 2장 |
원본 세금계산서 작성일 |
– | 착오사실을 인식한 날 |
공급가액 변동 | 증감되는 분에 대하여 정(+)/부(-)의 세금계산서 발행 | 1장 |
변동사유발생일 |
원본 세금계산서 작성일 기재 |
변동사유 발생일 다음달 10일 |
환 입 | 환입금액분에 대하여 부(-)의 세금계산서 발행 | 1장 |
환입된 날 |
원본 세금계산서 작성일 기재 |
환입된 날 다음달 10일 |
계약의 해제 | 부(-)의 세금계산서 발행 | 1장 |
계약 해제일 |
원본 세금계산서 작성일 기재 |
계약 해제일 다음달 10일 |
착오에 의한 이중발행 |
부(-)의 세금계산서 발행 | 1장 |
원본 세금계산서 작성일 |
– | 착오사실을 인식한 날 |
내국신용장 사후개설 |
부(-)의 세금계산서1장과 추가하여 영세율 세금계산서발행 | 2장 |
원본 세금계산서 작성일 |
내국신용장 개설일자 기재 |
내국신용장 개설 다음달 10일 (단, 과세기간 종료 후 20일 이내 개설된 경우는 20일까지 발행) |
수정사유코드(modifyCode)
세금계산서 임시저장(register) API 요청시 세금계산서 정보항목의 수정사유코드(modifyCode) 항목에 기재하는 1자리 숫자값 입니다. 아래에 설명되어 있는 수정사유에 해당하는 사유코드를 기재합니다. 수정사유별 설명을 참조하여 작성하시기 바랍니다.
수정사유 | 사유코드 | 설명 |
---|---|---|
기재사항 착오정정 |
1 |
필요적 기재사항 등이 착오 또는 착오 외로 잘못 적힌 경우 원본 취소분 부(-)의 세금계산서 1장, 수정분 1장, 총 2장 세금계산서 발행 |
공급가액 변동 | 2 |
공급가액에 추가 또는 차감되는 금액이 발생한 경우 가감금액에 따라 원본 발행분에 대한 부(-) 또는 정(+)의 세금계산서 1장 발행 |
환입 | 3 |
원본 공급한 재화가 환입(반품)된 경우 환입(반품)된 금액만큼 부(-)의 수정세금계산서 1장 발행 |
계약의 해제 | 4 |
계약이 해제된 경우 원본 발행한 세금계산서의 내용대로 부(-)의 수정세금계산서 1장 발행 |
내국신용장 사후개설 |
5 |
내국신용장 등이 사후개설된 경우 개설된 금액만큼 부(-)로 1장, 영세율로 1장, 총 2장 수정세금계산서 발행 |
착오에 의한 이중발행 |
6 |
착오로 이중으로 발행된 경우, 발행대상이 아닌 거래에 대하여 발행한 경우 원본 발급한 세금계산서의 내용대로 부(-)의 수정세금계산서 1장 발행 |
[참고] 팝빌블로그 – 수정사유별 수정세금계산서 작성방법 안내 [바로가기]
원본 세금계산서 아이템키(ItemKey) 확인방법
아이템키(ItemKey)란 고객이 작성한 세금계산서를 관리하기 위한 팝빌에서 생성한 식별번호로 상태/요약정보 조회(getInfo) API의 응답전문에서 확인할 수 있습니다. 수정세금계산서를 작성하기 위해서는 원본 세금계산서의 아이템키를 임시저장(register) API 호출시 ‘originalTaxinvoiceKey’ 값에 기재하면 수정세금계산서를 작성할 수 있습니다.
개발언어별 수정세금계산서 작성예시
고객사의 연동환경에 해당하는 언어별 수정세금계산서 작성 예제소스를 참조하시기 바랍니다.
- Java(SpringMVC) 예제코드
- Java(JSP) 예제코드
- .NET 예제코드
- PHP 예제코드
- Python 예제코드
- ASP 예제코드
- Delphi 예제코드
- Visual Basic 예제코드
- VBA 예제코드
- PowerBuilder 예제코드
- Node.js 예제코드
- Ruby – Rails 예제코드
Java(SpringMVC) 수정세금계산서 작성예제
“TaxinvoiceServiceExample.java” 파일의 임시저장 RequestMapping이 선언된 register() 함수의 ‘setModifyCode’, ‘setOriginTaxinvoiceKey’ 변수값을 각각 수정사유코드와 원본 세금계산서의 아이템키(ItemKey)로 기재하고 해당 페이지를 호출합니다.
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 |
@RequestMapping(value = "register", method = RequestMethod.GET) public String register( Model m) { Taxinvoice taxinvoice = new Taxinvoice(); taxinvoice.setWriteDate("20150408"); taxinvoice.setChargeDirection("정과금"); taxinvoice.setIssueType("정발행"); taxinvoice.setPurposeType("영수"); taxinvoice.setIssueTiming("직접발행"); taxinvoice.setTaxType("과세"); //공급자 정보 기재 taxinvoice.setInvoicerCorpNum(testCorpNum); taxinvoice.setInvoicerTaxRegID(""); taxinvoice.setInvoicerCorpName("공급자 상호"); taxinvoice.setInvoicerMgtKey("1234"); taxinvoice.setInvoicerCEOName("공급자 대표자 성명"); taxinvoice.setInvoicerAddr("공급자 주소"); taxinvoice.setInvoicerBizClass("공급자 업종"); taxinvoice.setInvoicerBizType("공급자 업태,업태2"); taxinvoice.setInvoicerContactName("공급자 담당자명"); taxinvoice.setInvoicerEmail("test@test.com"); taxinvoice.setInvoicerTEL("070-7070-0707"); taxinvoice.setInvoicerHP("010-000-2222"); taxinvoice.setInvoicerSMSSendYN(true); //공급받는자 정보 기재 taxinvoice.setInvoiceeType("사업자"); taxinvoice.setInvoiceeCorpNum("8888888888"); taxinvoice.setInvoiceeCorpName("공급받는자 상호"); taxinvoice.setInvoiceeMgtKey(""); taxinvoice.setInvoiceeCEOName("공급받는자 대표자 성명"); taxinvoice.setInvoiceeAddr("공급받는자 주소"); taxinvoice.setInvoiceeBizClass("공급받는자 업종"); taxinvoice.setInvoiceeBizType("공급받는자 업태"); taxinvoice.setInvoiceeContactName1("공급받는자 담당자명"); taxinvoice.setInvoiceeEmail1("test@invoicee.com"); taxinvoice.setSupplyCostTotal("100000"); taxinvoice.setTaxTotal("10000"); taxinvoice.setTotalAmount("110000"); // 수정세금계산서 작성시 1~6까지 선택기재. // 1 - 기재사항 착오정정, 2 - 공급가액변동 // 3 - 환입, 4 - 계약의 해지 // 5 - 내국신용장 사후개설 // 6 - 착오에 의한 이중발행 taxinvoice.setModifyCode((short) 4); // 수정세금계산서 작성시 원본 세금계산서의 ItemKey기재. taxinvoice.setOriginalTaxinvoiceKey("015032315555100001"); taxinvoice.setSerialNum("123"); taxinvoice.setCash(""); taxinvoice.setChkBill(""); taxinvoice.setNote(""); taxinvoice.setCredit(""); taxinvoice.setRemark1("비고1"); taxinvoice.setRemark2("비고2"); taxinvoice.setRemark3("비고3"); taxinvoice.setKwon((short) 1); taxinvoice.setHo((short) 1); taxinvoice.setBusinessLicenseYN(false); taxinvoice.setBankBookYN(false); taxinvoice.setDetailList(new ArrayList<TaxinvoiceDetail>()); TaxinvoiceDetail detail = new TaxinvoiceDetail(); detail.setSerialNum((short) 1); detail.setPurchaseDT("20140319"); detail.setItemName("품목명"); detail.setSpec("규격"); detail.setQty("1"); detail.setUnitCost("100000"); detail.setSupplyCost("100000"); detail.setTax("10000"); detail.setRemark("품목비고"); taxinvoice.getDetailList().add(detail); detail = new TaxinvoiceDetail(); try { Response response = taxinvoiceService.register(testCorpNum,taxinvoice,testUserID); m.addAttribute("Response",response); } catch (PopbillException e) { m.addAttribute("Exception", e); return "exception"; } return "response"; } |
[참고] 수정사유코드 확인하기 [바로가기]
[참고] 원본 세금계산서 아이템키 확인방법 [바로가기]
[참고] 팝빌블로그 – 수정사유별 수정세금계산서 작성방법 안내 [바로가기]
Java(JSP) 수정세금계산서 작성예제
예제폴더에 포함되어 있는 “register.jsp” 파일의 ‘setModifyCode’, ‘setOriginalTaxinvoiceKey’ 변수값을 각각 수정사유코드와 원본 세금계산서의 아이템키(ItemKey)로 기재하고 해당 jsp 페이지를 호출합니다.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
Taxinvoice taxinvoice = new Taxinvoice(); taxinvoice.setWriteDate("20150408"); taxinvoice.setIssueType("정발행"); taxinvoice.setChargeDirection("정과금"); taxinvoice.setPurposeType("영수"); taxinvoice.setIssueTiming("직접발행"); taxinvoice.setTaxType("과세"); //공급자 정보 taxinvoice.setInvoicerCorpNum("1231212312"); taxinvoice.setInvoicerTaxRegID("1234"); taxinvoice.setInvoicerCorpName("공급자 상호"); taxinvoice.setInvoicerMgtKey("20141230-12"); taxinvoice.setInvoicerCEOName("공급자 대표자 성명"); taxinvoice.setInvoicerAddr("공급자 주소"); taxinvoice.setInvoicerBizClass("공급자 업종"); taxinvoice.setInvoicerBizType("공급자 업태,업태2"); taxinvoice.setInvoicerContactName("공급자 담당자명"); taxinvoice.setInvoicerEmail("test@test.com"); taxinvoice.setInvoicerTEL("070-7070-0707"); taxinvoice.setInvoicerHP("010-000-2222"); taxinvoice.setInvoicerSMSSendYN(false); //공급받는자 정보 기재 taxinvoice.setInvoiceeType("사업자"); taxinvoice.setInvoiceeCorpNum("8888888888"); taxinvoice.setInvoiceeCorpName("공급받는자 상호"); taxinvoice.setInvoiceeMgtKey(""); taxinvoice.setInvoiceeCEOName("공급받는자 대표자 성명"); taxinvoice.setInvoiceeAddr("공급받는자 주소"); taxinvoice.setInvoiceeBizClass("공급받는자 업종"); taxinvoice.setInvoiceeBizType("공급받는자 업태"); taxinvoice.setInvoiceeContactName1("공급받는자 담당자명"); taxinvoice.setInvoiceeEmail1("weicome@innopost.com"); taxinvoice.setSupplyCostTotal("200000"); taxinvoice.setTaxTotal("20000"); taxinvoice.setTotalAmount("220000"); // 수정세금계산서 작성시 1~6까지 선택기재. // 1 - 기재사항 착오정정, 2 - 공급가액변동 // 3 - 환입, 4 - 계약의 해지 // 5 - 내국신용장 사후개설 // 6- 착오에 의한 이중발행 taxinvoice.setModifyCode((short) 4); // 수정세금계산서 작성시 원본 세금계산서의 ItemKey기재. ItemKey는 getInfo로 확인. taxinvoice.setOriginalTaxinvoiceKey("015032315555100001"); taxinvoice.setSerialNum("123"); taxinvoice.setCash(""); taxinvoice.setChkBill(""); taxinvoice.setNote(""); taxinvoice.setCredit(""); taxinvoice.setRemark1("비고1"); taxinvoice.setRemark2("비고2"); taxinvoice.setRemark3("비고3"); taxinvoice.setKwon((short) 1); taxinvoice.setHo((short) 1); taxinvoice.setBusinessLicenseYN(false); taxinvoice.setBankBookYN(false); taxinvoice.setDetailList(new ArrayList<TaxinvoiceDetail>()); TaxinvoiceDetail detail = new TaxinvoiceDetail(); detail.setSerialNum((short) 1); detail.setPurchaseDT("20150402"); detail.setItemName("품목명"); detail.setSpec("규격"); detail.setQty("1"); detail.setUnitCost("100000"); detail.setSupplyCost("100000"); detail.setTax("10000"); detail.setRemark("품목비고"); taxinvoice.getDetailList().add(detail); Response CheckResponse = null; try { String testCorpNum = "1231212312"; String userID = "userid"; CheckResponse = taxinvoiceService.register(testCorpNum, taxinvoice, userID); } catch (PopbillException pe) { throw pe; } |
[참고] 수정사유코드 확인하기 [바로가기]
[참고] 원본 세금계산서 아이템키 확인방법 [바로가기]
[참고] 팝빌블로그 – 수정사유별 수정세금계산서 작성방법 안내 [바로가기]
.NET 수정세금계산서 작성예제
예제폴더에 포함되어 있는 “frmExample.cs” 파일의 btnRegister_Click() 함수의 ‘taxinvoice.modifyCode’, ‘taxinvoice.originalTaxinvoiceKey’ 변수값을 각각 수정사유코드와 원본 세금계산서의 아이템키(ItemKey)로 해당 버튼의 이벤트를 호출합니다.
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 |
private void btnRegister_Click(object sender, EventArgs e) { Taxinvoice taxinvoice = new Taxinvoice(); taxinvoice.writeDate = "20140923"; taxinvoice.chargeDirection = "정과금"; taxinvoice.issueType = "정발행"; taxinvoice.purposeType = "영수"; taxinvoice.issueTiming = "직접발행"; taxinvoice.taxType = "과세"; taxinvoice.invoicerCorpNum = "1231212312"; taxinvoice.invoicerTaxRegID = ""; taxinvoice.invoicerCorpName = "공급자 상호"; taxinvoice.invoicerMgtKey = txtMgtKey.Text; taxinvoice.invoicerCEOName = "공급자 대표자 성명"; taxinvoice.invoicerAddr = "공급자 주소"; taxinvoice.invoicerBizClass = "공급자 업종"; taxinvoice.invoicerBizType = "공급자 업태,업태2"; taxinvoice.invoicerContactName = "공급자 담당자명"; taxinvoice.invoicerEmail = "test@test.com"; taxinvoice.invoicerTEL = "070-7070-0707"; taxinvoice.invoicerHP = "010-000-2222"; taxinvoice.invoicerSMSSendYN = true; taxinvoice.invoiceeType = "사업자"; taxinvoice.invoiceeCorpNum = "8888888888"; taxinvoice.invoiceeCorpName = "공급받는자 상호"; taxinvoice.invoiceeMgtKey = ""; taxinvoice.invoiceeCEOName = "공급받는자 대표자 성명"; taxinvoice.invoiceeAddr = "공급받는자 주소"; taxinvoice.invoiceeBizClass = "공급받는자 업종"; taxinvoice.invoiceeBizType = "공급받는자 업태"; taxinvoice.invoiceeContactName1 = "공급받는자 담당자명"; taxinvoice.invoiceeEmail1 = "test@invoicee.com"; taxinvoice.supplyCostTotal = "100000"; taxinvoice.taxTotal = "10000"; taxinvoice.totalAmount = "110000"; //수정세금계산서 작성시 1~6까지 선택기재. // 1 - 기재사항 착오정정, 2 - 공급가액변동 // 3 - 환입, 4 - 계약의 해지 // 5 - 내국신용장 사후개설 // 6 - 착오에 의한 이중발행 taxinvoice.modifyCode = 4; //수정세금계산서 작성시 원본 세금계산서의 ItemKey기재. taxinvoice.originalTaxinvoiceKey = "015032315555100001"; taxinvoice.serialNum = "123"; taxinvoice.cash = ""; taxinvoice.chkBill = ""; taxinvoice.note = ""; taxinvoice.credit = ""; taxinvoice.remark1 = "비고1"; taxinvoice.remark2 = "비고2"; taxinvoice.remark3 = "비고3"; taxinvoice.kwon = 1; taxinvoice.ho = 1; taxinvoice.businessLicenseYN = false; taxinvoice.bankBookYN = false; taxinvoice.faxreceiveNum = ""; taxinvoice.faxsendYN = false; taxinvoice.detailList = new List<TaxinvoiceDetail>(); TaxinvoiceDetail detail = new TaxinvoiceDetail(); detail.serialNum = 1; detail.purchaseDT = "20140319"; detail.itemName = "품목명"; detail.spec = "규격"; detail.qty = "1"; detail.unitCost = "100000"; detail.supplyCost = "100000"; detail.tax = "10000"; detail.remark = "품목비고"; taxinvoice.detailList.Add(detail); try { Response response = taxinvoiceService.Register(txtCorpNum.Text, taxinvoice, txtUserId.Text, false); MessageBox.Show(response.message); } catch (PopbillException ex) { MessageBox.Show(ex.code.ToString() + " | " + ex.Message); } } |
[참고] 수정사유코드 확인하기 [바로가기]
[참고] 원본 세금계산서 아이템키 확인방법 [바로가기]
[참고] 팝빌블로그 – 수정사유별 수정세금계산서 작성방법 안내 [바로가기]
PHP 수정세금계산서 작성예제
예제폴더에 포함되어 있는 “register.php” 파일의 ‘modifyCode’, ‘originalTaxinvoiceKey’ 변수값을 각각 수정사유코드와 원본 세금계산서의 아이템키(ItemKey)로 기재하고 해당 php 페이지를 호출합니다.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
<?php include 'common.php'; $testCorpNum = '1234567890'; $invoicerMgtKey = '20150211-01'; $testUserID = 'testkorea'; $writeSpecification = false; $Taxinvoice = new Taxinvoice(); $Taxinvoice->writeDate = '20150204'; $Taxinvoice->issueType = '정발행'; $Taxinvoice->chargeDirection = '정과금'; $Taxinvoice->purposeType = '영수'; $Taxinvoice->taxType = '과세'; $Taxinvoice->issueTiming = '직접발행'; $Taxinvoice->invoicerCorpNum = $testCorpNum; $Taxinvoice->invoicerCorpName = '공급자상호'; $Taxinvoice->invoicerMgtKey = $invoicerMgtKey; $Taxinvoice->invoicerCEOName = '공급자 대표자성명'; $Taxinvoice->invoicerAddr = '공급자 주소'; $Taxinvoice->invoicerContactName = '공급자 담당자성명'; $Taxinvoice->invoicerEmail = 'tester@test.com'; $Taxinvoice->invoicerTEL = '070-0000-0000'; $Taxinvoice->invoicerHP = '010-0000-0000'; $Taxinvoice->invoicerSMSSendYN = false; $Taxinvoice->invoiceeType = '사업자'; $Taxinvoice->invoiceeCorpNum = '8888888888'; $Taxinvoice->invoiceeCorpName = '공급받는자 상호'; $Taxinvoice->invoiceeMgtKey = ''; $Taxinvoice->invoiceeCEOName = '공급받는자 대표자성명'; $Taxinvoice->invoiceeAddr = '공급받는자 주소'; $Taxinvoice->invoiceeContactName1 = '공급받는자 담당자성명'; $Taxinvoice->invoiceeEmail1 = 'tester@test.com'; $Taxinvoice->invoiceeTEL1 = '070-0000-0000'; $Taxinvoice->invoiceeHP1 = '010-0000-0000'; $Taxinvoice->invoiceeSMSSendYN = false; $Taxinvoice->supplyCostTotal = '200000'; $Taxinvoice->taxTotal = '20000'; $Taxinvoice->totalAmount = '220000'; # 수정세금계산서 작성시 1~6까지 선택기재. # 1 - 기재사항 착오정정, 2 - 공급가액변동 # 3 - 환입, 4 - 계약의 해지 # 5 - 내국신용장 사후개설 # 6 - 착오에 의한 이중발행 $Taxinvoice->modifyCode = '4'; # 수정세금계산서 작성시 원본 세금계산서의 ItemKey기재. $Taxinvoice->originalTaxinvoiceKey = '015032315555100001'; $Taxinvoice->serialNum = '123'; $Taxinvoice->cash = ''; $Taxinvoice->chkBill = ''; $Taxinvoice->note = ''; $Taxinvoice->credit = ''; $Taxinvoice->remark1 = '비고1'; $Taxinvoice->remark2 = '비고2'; $Taxinvoice->remark3 = '비고3'; $Taxinvoice->kwon = '1'; $Taxinvoice->ho = '1'; $Taxinvoice->businessLicenseYN = false; $Taxinvoice->bankBookYN = false; $Taxinvoice->detailList = array(); $Taxinvoice->detailList[] = new TaxinvoiceDetail(); $Taxinvoice->detailList[0]->serialNum = 1; $Taxinvoice->detailList[0]->purchaseDT = '20150101'; $Taxinvoice->detailList[0]->itemName = '품목명1번'; $Taxinvoice->detailList[0]->spec = '규격'; $Taxinvoice->detailList[0]->qty = '1'; $Taxinvoice->detailList[0]->unitCost = '100000'; $Taxinvoice->detailList[0]->supplyCost = '100000'; $Taxinvoice->detailList[0]->tax = '10000'; $Taxinvoice->detailList[0]->remark = '품목비고'; try { #Register(사업자번호, 세금계산서객체, 회원아이디, 거래명세서 동시작성여부) $result = $TaxinvoiceService->Register($testCorpNum, $Taxinvoice, $testUserID, $writeSpecification); $code = $result->code; $message = $result->message; } catch(PopbillException $pe) { $code = $pe->getCode(); $message = $pe->getMessage(); } ?> |
[참고] 수정사유코드 확인하기 [바로가기]
[참고] 원본 세금계산서 아이템키 확인방법 [바로가기]
[참고] 팝빌블로그 – 수정사유별 수정세금계산서 작성방법 안내 [바로가기]
Python 수정세금계산서 작성예제
예제폴더에 포함되어 있는 “register.py” 파일의 “modifiCode”, “originalTaxinvoiceKey” 변수값을 각각 수정사유코드와 원본 세금계산서의 아이템키(ItemKey)로 기재하고 register.py 파일을 실행합니다.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
try: print("세금계산서 1건 임시저장") taxinvoice = Taxinvoice(writeDate = "20150121", chargeDirection = "정과금", issueType = "정발행", purposeType = "영수", issueTiming = "직접발행", taxType = "과세", invoicerCorpNum = testValue.testCorpNum, invoicerTaxRegID = None, invoicerCorpName = "공급자 상호", invoicerMgtKey = "111-2222-3333", invoicerCEOName = "공급자 대표자 성명", invoicerAddr = "공급자 주소", invoicerBizClass = "공급자 업종", invoicerBizType = "공급자 업태", invoicerContactName = "공급자 담당자명", invoicerEmail = "test@test.com", invoicerTEL = "070-4304-2980", invoicerHP = '010-1111-2222', invoicerSMSSendYN = False, invoiceeType = '사업자', invoiceeCorpNum = '8888888888', invoiceeCorpName = "공급받는자 상호_#$@#$!<>&_Python", invoiceeMgtKey = None, invoiceeCEOName = "공급받는자 상호", invoiceeAddr = "공급받는자 주소", invoiceeBizClass = "공급받는자 업종", invoiceeBizType = "공급받는자 업태", invoiceeContactName1 = "공급받는자 담당자", invoiceeEmail1 = "test@test.com", invoiceeHP1 = "010-2222-1111", invoiceeFAX1 = "070-4304-2980", invoiceeSMSSendYN = False, supplyCostTotal = "100000", taxTotal = "10000", totalAmount = "110000", # 수정사유코드, 수정세금계산서 작성시 1~6까지 선택기재. # 1 - 기재사항 착오정정, 2 - 공급가액변동 # 3 - 환입, 4 - 계약의 해지 # 5 - 내국신용장 사후개설 # 6 - 착오에 의한 이중발행 modifyCode = 4, # 수정세금계산서 작성시에 원본 세금계산서의 ItemKey를 기재 # ItemKey 는 getInfo()를 통해 확인. originalTaxinvoiceKey = '015032315555100001', serialNum = '123', cash = '', chkBill = None, note = None, credit = '', remark1 = '비고1', remark2 = '비고2', remark3 = '비고3', kwon = 1, ho = 2, businessLicenseYN = False, bankBookYN = False ) taxinvoice.detailList = [ TaxinvoiceDetail(serialNum = 1, purchaseDT = '20150121', itemName="품목1", spec = '규격', qty = 1, unitCost = '100000', supplyCost = '100000', tax = '10000', remark = '품목비고' ) ] taxinvoice.addContactList = [ Contact(serialNum = 1, contactName='추가담당자 성명', email='test1@test.com'), Contact(serialNum = 2, contactName='추가담당자2', email='test2@test.com') ] writeSpecification = False UserID = testValue.testUserID result = taxinvoiceService.register(testValue.testCorpNum,taxinvoice,writeSpecification,UserID) print("처리결과 : [%d] %s" % (result.code,result.message)) except PopbillException as PE: print("Exception Occur : [%d] %s" % (PE.code , PE.message)) |
[참고] 수정사유코드 확인하기 [바로가기]
[참고] 원본 세금계산서 아이템키 확인방법 [바로가기]
[참고] 팝빌블로그 – 수정사유별 수정세금계산서 작성방법 안내 [바로가기]
ASP 수정세금계산서 작성예제
예제폴더에 포함되어 있는 “TaxinvoiceExample/register.asp” 파일의 “newTaxinvoice.modifyCode”, “newTaxinvoice.originalTaxinvoiceKey” 변수값을 각각 수정사유코드와 원본 세금계산서의 아이템키(ItemKey)로 기재하고 해당 ASP 페이지를 호출합니다.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
<% Set newTaxinvoice = New Taxinvoice newTaxinvoice.writeDate = "20140122" newTaxinvoice.chargeDirection = "정과금" newTaxinvoice.issueType = "정발행" newTaxinvoice.purposeType = "영수" newTaxinvoice.issueTiming = "직접발행" newTaxinvoice.taxType = "과세" newTaxinvoice.invoicerCorpNum = "1234567890" newTaxinvoice.invoicerTaxRegID = "" newTaxinvoice.invoicerCorpName = "공급자 상호" newTaxinvoice.invoicerMgtKey = "20150122-30" newTaxinvoice.invoicerCEOName = "공급자 대표자 성명" newTaxinvoice.invoicerAddr = "공급자 주소" newTaxinvoice.invoicerBizClass = "공급자 업종" newTaxinvoice.invoicerBizType = "공급자 업태,업태2" newTaxinvoice.invoicerContactName = "공급자 담당자명" newTaxinvoice.invoicerEmail = "test@test.com" newTaxinvoice.invoicerTEL = "070-7070-0707" newTaxinvoice.invoicerHP = "010-000-2222" newTaxinvoice.invoicerSMSSendYN = False newTaxinvoice.invoiceeType = "사업자" newTaxinvoice.invoiceeCorpNum = "1231212312" newTaxinvoice.invoiceeCorpName = "공급받는자 상호" newTaxinvoice.invoiceeMgtKey = "" newTaxinvoice.invoiceeCEOName = "공급받는자 대표자 성명" newTaxinvoice.invoiceeAddr = "공급받는자 주소" newTaxinvoice.invoiceeBizClass = "공급받는자 업종" newTaxinvoice.invoiceeBizType = "공급받는자 업태" newTaxinvoice.invoiceeContactName1 = "공급받는자 담당자명" newTaxinvoice.invoiceeEmail1 = "test@invoicee.com" newTaxinvoice.supplyCostTotal = "100000" newTaxinvoice.taxTotal = "10000" newTaxinvoice.totalAmount = "110000" # 수정사유코드, 수정세금계산서 작성시 1~6까지 선택기재. # 1 - 기재사항 착오정정, 2 - 공급가액변동 # 3 - 환입, 4 - 계약의 해지 # 5 - 내국신용장 사후개설 # 6 - 착오에 의한 이중발행 newTaxinvoice.modifyCode = 4 # 수정세금계산서 작성시 원본 세금계산서의 ItemKey기재. # ItemKey는 문서확인(getInfo.asp) API 통해 확인. newTaxinvoice.originalTaxinvoiceKey = "015032315555100001" newTaxinvoice.serialNum = "123" newTaxinvoice.cash = "" newTaxinvoice.chkBill = "" newTaxinvoice.note = "" newTaxinvoice.credit = "" newTaxinvoice.remark1 = "비고1" newTaxinvoice.remark2 = "비고2" newTaxinvoice.remark3 = "비고3" newTaxinvoice.kwon = "1" newTaxinvoice.ho = "1" newTaxinvoice.businessLicenseYN = False newTaxinvoice.bankBookYN = False Set newDetail = New TaxinvoiceDetail newDetail.serialNum = 1 newDetail.purchaseDT = "20140410" newDetail.itemName = "품명" newDetail.spec = "규격" newDetail.qty = "1" '수량 newDetail.unitCost = "100000" newDetail.supplyCost = "100000" newDetail.tax = "10000" newDetail.remark = "비고" newTaxinvoice.AddDetail newDetail Set newDetail = New TaxinvoiceDetail On Error Resume Next testCorpNum = "1234567890" writeSpecificationYN = False userID = "testkorea" Set Presponse = m_TaxinvoiceService.Register(testCorpNum, newTaxinvoice, writeSpecificationYN, userID) If Err.Number <> 0 Then code = Err.Number message = Err.Description Err.Clears Else code = Presponse.code message =Presponse.message End If On Error GoTo 0 %> |
[참고] 수정사유코드 확인하기 [바로가기]
[참고] 원본 세금계산서 아이템키 확인방법 [바로가기]
[참고] 팝빌블로그 – 수정사유별 수정세금계산서 작성방법 안내 [바로가기]
Delphi 수정세금계산서 작성예제
예제폴더에 포함되어 있는 “Example.pas” 파일의 btnRegisterClick 프로시저에 선언되어있는 “taxinvoice.modifyCode”, “taxinvoice.originalTaxinvoiceKey” 변수값을 각각 수정사유코드와 원본 세금계산서의 아이템키(ItemKey)로 기재하고 해당 버튼의 이벤트를 호출합니다.
243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 |
procedure TfrmExample.btnRegisterClick(Sender: TObject); var taxinvoice : TTaxinvoice; response : TResponse; begin taxinvoice := TTaxinvoice.Create; taxinvoice.writeDate := '20140723'; taxinvoice.chargeDirection := '정과금'; taxinvoice.issueType := '정발행'; taxinvoice.purposeType := '영수'; taxinvoice.issueTiming := '직접발행'; taxinvoice.taxType :='과세'; taxinvoice.invoicerCorpNum := '1231212312'; taxinvoice.invoicerTaxRegID := ''; taxinvoice.invoicerCorpName := '공급자 상호'; taxinvoice.invoicerMgtKey := tbMgtKey.Text; taxinvoice.invoicerCEOName := '공급자"" 대표자 성명'; taxinvoice.invoicerAddr := '공급자 주소'; taxinvoice.invoicerBizClass := '공급자 업종'; taxinvoice.invoicerBizType := '공급자 업태,업태2'; taxinvoice.invoicerContactName := '공급자 담당자명'; taxinvoice.invoicerEmail := 'test@test.com'; taxinvoice.invoicerTEL := '070-7070-0707'; taxinvoice.invoicerHP := '010-000-2222'; taxinvoice.invoicerSMSSendYN := true; taxinvoice.invoiceeType := '사업자'; taxinvoice.invoiceeCorpNum := '8888888888'; taxinvoice.invoiceeCorpName := '공급받는자 상호'; taxinvoice.invoiceeMgtKey := ''; taxinvoice.invoiceeCEOName := '공급받는자 대표자 성명'; taxinvoice.invoiceeAddr := '공급받는자 주소'; taxinvoice.invoiceeBizClass := '공급받는자 업종'; taxinvoice.invoiceeBizType := '공급받는자 업태'; taxinvoice.invoiceeContactName1 := '공급받는자 담당자명'; taxinvoice.invoiceeEmail1 := 'test@invoicee.com'; taxinvoice.supplyCostTotal := '100000'; taxinvoice.taxTotal := '10000'; taxinvoice.totalAmount := '110000'; // 수정사유코드, 수정세금계산서 작성시 1~6까지 선택기재. // 1 - 기재사항 착오정정, 2 - 공급가액변동 // 3 - 환입, 4 - 계약의 해지 // 5 - 내국신용장 사후개설 // 6 - 착오에 의한 이중발행 taxinvoice.modifyCode := 4; // 수정세금계산서 작성시 원본 세금계산서의 ItemKey기재. taxinvoice.originalTaxinvoiceKey := '015032315555100001'; taxinvoice.serialNum := '123'; taxinvoice.cash := ''; taxinvoice.chkBill := ''; taxinvoice.note := ''; taxinvoice.credit := ''; taxinvoice.remark1 := '비고1'; taxinvoice.remark2 := '비고2'; taxinvoice.remark3 := '비고3'; taxinvoice.kwon := '1'; taxinvoice.ho := '1'; taxinvoice.businessLicenseYN := false; taxinvoice.bankBookYN := false ; taxinvoice.faxreceiveNum := ''; taxinvoice.faxsendYN := false; taxinvoice.originalTaxinvoiceKey := '12312312331'; setLength(taxinvoice.detailList, 2); taxinvoice.detailList[0] := TTaxinvoiceDetail.Create; taxinvoice.detailList[0].serialNum := 1; taxinvoice.detailList[0].purchaseDT := '20140319'; taxinvoice.detailList[0].itemName := '품목명'; taxinvoice.detailList[0].spec := '규격'; taxinvoice.detailList[0].qty := '1'; taxinvoice.detailList[0].unitCost := '100000'; taxinvoice.detailList[0].supplyCost := '100000'; taxinvoice.detailList[0].tax := '10000'; taxinvoice.detailList[0].remark := '품목비고'; taxinvoice.detailList[1] := TTaxinvoiceDetail.Create; taxinvoice.detailList[1].serialNum := 2; taxinvoice.detailList[1].itemName := '품목명'; try response := taxinvoiceService.Register(txtCorpNum.text,taxinvoice,txtUserID.Text); except on le : EPopbillException do begin ShowMessage(IntToStr(le.code) + ' | ' + le.Message); Exit; end; end; ShowMessage(IntToStr(response.code) + ' | ' + response.Message); end; |
[참고] 수정사유코드 확인하기 [바로가기]
[참고] 원본 세금계산서 아이템키 확인방법 [바로가기]
[참고] 팝빌블로그 – 수정사유별 수정세금계산서 작성방법 안내 [바로가기]
Visual Basic 수정세금계산서 작성예제
예제코드의 “frmExample.frm” 파일의 btnRegister_Click() 함수에 선언되어있는 “Taxinvoice.modifyCode”, “Taxinvoice.originalTaxinvoiceKey” 변수값을 각각 수정사유코드와 원본 세금계산서의 아이템키(ItemKey)로 기재하고 해당 버튼의 이벤트를 호출합니다.
1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 |
Private Sub btnRegister_Click() Dim Taxinvoice As New PBTaxinvoice Taxinvoice.writeDate = "20140319" Taxinvoice.chargeDirection = "정과금" Taxinvoice.issueType = "정발행" Taxinvoice.purposeType = "영수" Taxinvoice.issueTiming = "직접발행" Taxinvoice.taxType = "과세" Taxinvoice.invoicerCorpNum = "1231212312" Taxinvoice.invoicerTaxRegID = "" Taxinvoice.invoicerCorpName = "공급자 상호" Taxinvoice.invoicerMgtKey = txtMgtKey.Text Taxinvoice.invoicerCEOName = "공급자"" 대표자 성명" Taxinvoice.invoicerAddr = "공급자 주소" Taxinvoice.invoicerBizClass = "공급자 업종" Taxinvoice.invoicerBizType = "공급자 업태,업태2" Taxinvoice.invoicerContactName = "공급자 담당자명" Taxinvoice.invoicerEmail = "test@test.com" Taxinvoice.invoicerTEL = "070-7070-0707" Taxinvoice.invoicerHP = "010-000-2222" Taxinvoice.invoicerSMSSendYN = True Taxinvoice.invoiceeType = "사업자" Taxinvoice.invoiceeCorpNum = "8888888888" Taxinvoice.invoiceeCorpName = "공급받는자 상호" Taxinvoice.invoiceeMgtKey = "" Taxinvoice.invoiceeCEOName = "공급받는자 대표자 성명" Taxinvoice.invoiceeAddr = "공급받는자 주소" Taxinvoice.invoiceeBizClass = "공급받는자 업종" Taxinvoice.invoiceeBizType = "공급받는자 업태" Taxinvoice.invoiceeContactName1 = "공급받는자 담당자명" Taxinvoice.invoiceeEmail1 = "test@invoicee.com" Taxinvoice.supplyCostTotal = "100000" Taxinvoice.taxTotal = "10000" Taxinvoice.totalAmount = "110000" ' 수정사유코드, 수정세금계산서 작성시 1~6까지 선택기재. ' 1 - 기재사항 착오정정, 2 - 공급가액변동 ' 3 - 환입, 4 - 계약의 해지 ' 5 - 내국신용장 사후개설 ' 6 - 착오에 의한 이중발행 Taxinvoice.modifyCode = 4 ' 수정세금계산서 작성시 원본 세금계산서의 ItemKey기재. Taxinvoice.originalTaxinvoiceKey = "015032315555100001" Taxinvoice.serialNum = "123" Taxinvoice.cash = "" Taxinvoice.chkBill = "" Taxinvoice.note = "" Taxinvoice.credit = "" Taxinvoice.remark1 = "비고1" Taxinvoice.remark2 = "비고2" Taxinvoice.remark3 = "비고3" Taxinvoice.kwon = "1" Taxinvoice.ho = "1" Taxinvoice.businessLicenseYN = False Taxinvoice.bankBookYN = False Taxinvoice.faxreceiveNum = "" Taxinvoice.faxsendYN = False '상세항목 추가. Set Taxinvoice.detailList = New Collection Dim newDetail As New PBTIDetail newDetail.serialNum = 1 newDetail.purchaseDT = "20140410" newDetail.itemName = "품명" newDetail.spec = "규격" newDetail.qty = "1" newDetail.unitCost = "100000" newDetail.supplyCost = "100000" newDetail.tax = "10000" newDetail.remark = "비고" Taxinvoice.detailList.Add newDetail Dim Response As PBResponse Set Response = TaxinvoiceService.Register(txtCorpNum.Text, Taxinvoice, False, txtUserID.Text) If Response Is Nothing Then MsgBox ("[" + CStr(TaxinvoiceService.LastErrCode) + "] " + TaxinvoiceService.LastErrMessage) Exit Sub End If MsgBox (Response.message) End Sub |
[참고] 수정사유코드 확인하기 [바로가기]
[참고] 원본 세금계산서 아이템키 확인방법 [바로가기]
[참고] 팝빌블로그 – 수정사유별 수정세금계산서 작성방법 안내 [바로가기]
VBA 수정세금계산서 작성예제
예제파일 “taxinvoice_example.accdb(mdb)”의 btnRegister_Click() 함수에 선언되어있는 “Taxinvoice.modifyCode”, “Taxinvoice.originalTaxinvoiceKey” 변수값을 각각 수정사유코드와 원본 세금계산서의 아이템키(ItemKey)로 기재하고 해당 버튼의 이벤트를 호출합니다.
1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 |
Private Sub btnRegister_Click() Dim Taxinvoice As New PBTaxinvoice Taxinvoice.writeDate = "20140319" Taxinvoice.chargeDirection = "정과금" Taxinvoice.issueType = "정발행" Taxinvoice.purposeType = "영수" Taxinvoice.issueTiming = "직접발행" Taxinvoice.taxType = "과세" Taxinvoice.invoicerCorpNum = "1231212312" Taxinvoice.invoicerTaxRegID = "" Taxinvoice.invoicerCorpName = "공급자 상호" Taxinvoice.invoicerMgtKey = txtMgtKey.value Taxinvoice.invoicerCEOName = "공급자"" 대표자 성명" Taxinvoice.invoicerAddr = "공급자 주소" Taxinvoice.invoicerBizClass = "공급자 업종" Taxinvoice.invoicerBizType = "공급자 업태,업태2" Taxinvoice.invoicerContactName = "공급자 담당자명" Taxinvoice.invoicerEmail = "test@test.com" Taxinvoice.invoicerTEL = "070-7070-0707" Taxinvoice.invoicerHP = "010-000-2222" Taxinvoice.invoicerSMSSendYN = True Taxinvoice.invoiceeType = "사업자" Taxinvoice.invoiceeCorpNum = "8888888888" Taxinvoice.invoiceeCorpName = "공급받는자 상호" Taxinvoice.invoiceeMgtKey = "" Taxinvoice.invoiceeCEOName = "공급받는자 대표자 성명" Taxinvoice.invoiceeAddr = "공급받는자 주소" Taxinvoice.invoiceeBizClass = "공급받는자 업종" Taxinvoice.invoiceeBizType = "공급받는자 업태" Taxinvoice.invoiceeContactName1 = "공급받는자 담당자명" Taxinvoice.invoiceeEmail1 = "test@invoicee.com" Taxinvoice.supplyCostTotal = "100000" Taxinvoice.taxTotal = "10000" Taxinvoice.totalAmount = "110000" ' 수정사유코드, 수정세금계산서 작성시 1~6까지 선택기재. ' 1 - 기재사항 착오정정, 2 - 공급가액변동 ' 3 - 환입, 4 - 계약의 해지 ' 5 - 내국신용장 사후개설 ' 6 - 착오에 의한 이중발행 Taxinvoice.modifyCode = 4 ' 수정세금계산서 작성시 원본 세금계산서의 ItemKey기재. Taxinvoice.originalTaxinvoiceKey = "015032315555100001" Taxinvoice.serialNum = "123" Taxinvoice.cash = "" Taxinvoice.chkBill = "" Taxinvoice.note = "" Taxinvoice.credit = "" Taxinvoice.remark1 = "비고1" Taxinvoice.remark2 = "비고2" Taxinvoice.remark3 = "비고3" Taxinvoice.kwon = "1" Taxinvoice.ho = "1" Taxinvoice.businessLicenseYN = False Taxinvoice.bankBookYN = False Taxinvoice.faxreceiveNum = "" Taxinvoice.faxsendYN = False '상세항목 추가. Set Taxinvoice.detailList = New Collection Dim newDetail As New PBTIDetail newDetail.serialNum = 1 newDetail.purchaseDT = "20140410" newDetail.itemName = "품명" newDetail.spec = "규격" newDetail.qty = "1" newDetail.unitCost = "100000" newDetail.supplyCost = "100000" newDetail.tax = "10000" newDetail.remark = "비고" Taxinvoice.detailList.Add newDetail Dim Response As PBResponse Set Response = TaxinvoiceService.Register(txtCorpNum.Text, Taxinvoice, False, txtUserID.Text) If Response Is Nothing Then MsgBox ("[" + CStr(TaxinvoiceService.LastErrCode) + "] " + TaxinvoiceService.LastErrMessage) Exit Sub End If MsgBox (Response.message) End Sub |
[참고] 수정사유코드 확인하기 [바로가기]
[참고] 원본 세금계산서 아이템키 확인방법 [바로가기]
[참고] 팝빌블로그 – 수정사유별 수정세금계산서 작성방법 안내 [바로가기]
PowerBuilder 수정세금계산서 작성예제
예제코드의 examplewindow Form-등록 버튼의 “clicked()” 이벤트에 선언된 “l_taxinvoice.modifyCode”, “l_taxinvoice.originaltaxinvoiceKey” 변수값을 각각 수정사유코드와 원본 세금계산서의 아이템키(ItemKey)로 기재하고 해당 버튼의 click() 이벤트를 호출합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
taxinvoice l_taxinvoice response l_response l_taxinvoice.writeDate = "20150223" l_taxinvoice.chargeDirection = "정과금" l_taxinvoice.issueType = "정발행" l_taxinvoice.purposeType = "영수" l_taxinvoice.issueTiming = "직접발행" l_taxinvoice.taxType = "과세" l_taxinvoice.invoicerCorpNum = "1234567890" l_taxinvoice.invoicerTaxRegID = "" l_taxinvoice.invoicerCorpName = "공급자 상호" l_taxinvoice.invoicerMgtKey = sle_mgtKey.Text l_taxinvoice.invoicerCEOName = "공급자 대표자 성명" l_taxinvoice.invoicerAddr = "공급자 주소" l_taxinvoice.invoicerBizClass = "공급자 업종" l_taxinvoice.invoicerBizType = "공급자 업태,업태2" l_taxinvoice.invoicerContactName = "공급자 담당자명" l_taxinvoice.invoicerEmail = "test@test.com" l_taxinvoice.invoicerTEL = "070-7070-0707" l_taxinvoice.invoicerHP = "010-000-2222" l_taxinvoice.invoicerSMSSendYN = False l_taxinvoice.invoiceeType = "사업자" l_taxinvoice.invoiceeCorpNum = "8888888888" l_taxinvoice.invoiceeCorpName = "공급받는자 상호" l_taxinvoice.invoiceeMgtKey = "" l_taxinvoice.invoiceeCEOName = "공급받는자 대표자 성명" l_taxinvoice.invoiceeAddr = "공급받는자 주소" l_taxinvoice.invoiceeBizClass = "공급받는자 업종" l_taxinvoice.invoiceeBizType = "공급받는자 업태" l_taxinvoice.invoiceeContactName1 = "공급받는자 담당자명" l_taxinvoice.invoiceeEmail1 = "test@invoicee.com" l_taxinvoice.supplyCostTotal = "100000" l_taxinvoice.taxTotal = "10000" l_taxinvoice.totalAmount = "110000" // 수정사유코드, 수정세금계산서 작성시 1~6까지 선택기재. // 1 - 기재사항 착오정정, 2 - 공급가액변동 // 3 - 환입, 4 - 계약의 해지 // 5 - 내국신용장 사후개설 // 6 - 착오에 의한 이중발행 l_taxinvoice.modifyCode = 4 // 수정세금계산서 작성시 원본 세금계산서의 ItemKey기재. l_taxinvoice.originaltaxinvoiceKey = "015032315555100001" l_taxinvoice.serialNum = "123" l_taxinvoice.cash = "" l_taxinvoice.chkBill = "" l_taxinvoice.note = "" l_taxinvoice.credit = "" l_taxinvoice.remark1 = "비고1" l_taxinvoice.remark2 = "비고2" l_taxinvoice.remark3 = "비고3" l_taxinvoice.kwon = "1" l_taxinvoice.ho = "1" l_taxinvoice.businessLicenseYN = False l_taxinvoice.bankBookYN = False l_taxinvoice.detailList[1].serialNum = 1 l_taxinvoice.detailList[1].purchaseDT = "20150223" l_taxinvoice.detailList[1].itemName = "품명" l_taxinvoice.detailList[1].spec = "규격" l_taxinvoice.detailList[1].qty = "1" l_taxinvoice.detailList[1].unitCost = "100000" l_taxinvoice.detailList[1].supplyCost = "100000" l_taxinvoice.detailList[1].tax = "10000" l_taxinvoice.detailList[1].remark = "비고" try l_response = in_taxinvoiceService.register(sle_corpnum.text, l_taxinvoice) messagebox("팝빌 예제",String(l_response.code) + " | " + l_response.message) catch(popbillexception pe) messagebox("팝빌 오류",String(pe.getcode()) + " | " + pe.getmessage()) end try |
[참고] 수정사유코드 확인하기 [바로가기]
[참고] 원본 세금계산서 아이템키 확인방법 [바로가기]
[참고] 팝빌블로그 – 수정사유별 수정세금계산서 작성방법 안내 [바로가기]
Node.js 수정세금계산서 작성예제
예제코드의 ./routes/ 폴더에 taxinvoiceService.register 라우트핸들러 함수의 “modifyCode”, “originaltaxinvoiceKey” 변수값을 각각 수정사유코드와 원본 세금계산서의 아이템키(ItemKey)로 기재하여 호출합니다
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 |
// 세금계산서 임시저장 router.get('/register', function(req,res,next){ var testCorpNum = '1234567890'; // 팝빌회원 사업자번호, '-' 제외 10자리 var testUserID = 'testkorea'; // 팝빌회원 아이디 var mgtKey = '20150813-01'; // 문서관리번호, 1~24자리 영문,숫자,'-','_' 조합으로 사업자별로 중복되지 않도록 구성 var writeSpecification = false; // 거래명세서 동시작성여부 // 세금계산서 항목 var Taxinvoice = { writeDate : '20150813', // [필수] 작성일자, 형태 yyyyMMdd chargeDirection : '정과금', // [필수] 과금방향, (정과금, 역과금) 중 기재, 역과금은 역발행의 경우만 가능 issueType : '정발행', // [필수] 발행형태, (정발행, 역발행, 위수탁) 중 기재 purposeType : '영수', // [필수] (영수, 청구) 중 기재 issueTiming : '직접발행', // [필수] 발행시점, (직접발행, 승인시자동발행) 중 기재 taxType : '과세', // [필수] 과세형태, (과세, 영세, 면세) 중 기재 invoicerCorpNum : '1234567890', // [필수] 공급자 사업자번호, '-' 제외 10자리 invoicerMgtKey : mgtKey, // [정발행시 필수] 문서관리번호, 1~24자리 숫자,영문,'-','_' 조합으로 구성 invoicerTaxRegID : '1234', // 공급자 종사업장 식별번호, 필요시 기재, 4자리 숫자 invoicerCorpName : '공급자 상호', // [필수] invoicerCEOName : '대표자 성명', // [필수] invoicerAddr : '공급자 주소', invoicerBizClass : '공급자 업종', invoicerBizType : '공급자 업태', invoicerContactName : '공급자 담당자명', invoicerTEL : '070-4304-2991', invoicerHP : '010-000-111', invoicerEmail : 'test@test.com', invoicerSMSSendYN : false, // 정발행시 알림문자 전송여부 invoiceeType : '사업자', // [필수] 공급받는자 구분, (사업자, 개인, 외국인) 기재 invoiceeCorpNum : '8888888888', // [필수] 공급받는자 사업자번호, '-'제외 10자리 invoiceeMgtKey : '', // 공급받는자 문서관리번호 invoiceeTaxRegID : '', // 공급받는자 종사업장 식별번호, 필요시 기재, 4자리 숫자 invoiceeCorpName : '공급받는자 상호', // [필수] invoiceeCEOName : '공급받는자 대표자 성명', // [필수] invoiceeAddr : '공급받는자 주소', invoiceeBizClass : '공급받는자 업종', invoiceeBizType : '공급받는자 업태', invoiceeContactName1 : '공급받는자 담당자명', invoiceeTEL1 : '010-111-222', invoiceeHP1 : '070-111-222', invoiceeEmail1 : 'test2@test.com', invoiceeSMSSendYN : false, // 역발행시 알림문자 전송여부 taxTotal : '1000', // [필수] 세액합계 supplyCostTotal : '10000', // [필수] 공급가액 합계 totalAmount : '11000', // [필수] 합계금액(세액합계 + 공급가액 합계) modifyCode : 1, // [수정세금계산서 발행시 필수] 수정사유코드, 아래의 링크 참조 // 수정세금계산서 작성방법 안내 : http://blog.linkhub.co.kr/650/ originalTaxinvoiceKey : '015032315555100001', // [수정세금계산서 발행시 필수] 원본 세금계산서의 ItemKey값 기재 serialNum : '123', // 기재 상 '일련번호'' 항목 cash : '', // 기재 상 '현금'' 항목 chkBill : '', // 기재 상 '수표' 항목 note : '', // 기재 상 '어음' 항목 credit : '', // 기재 상 '외상' 항목 remark1 : '비고', remark2 : '비고2', remark3 : '비고3', kwon : '', // 기재 상 '권' 항목 ho : '', // 기재 상 '호' 항목 businessLicenseYN : false, // 사업자등록증 첨부여부 bankBookYN : false, // 통장사본 첨부여부 // 상세항목(품목) 정보 배열, 99개까지 기재 가능 detailList : [ { serialNum : 1, // 일련번호, 1부터 순차기재 purchaseDT : '20150721', // 거래일자, 형식 : yyyyMMdd itemName : '품명', spec : '규격', qty : '1', // 수량, 소수점 2자리까지 기재 가능 unitCost : '10000', // 단가, 소수점 2자리까지 기재 가능 supplyCost : '10000', // 공급가액, 소수점 기재불가, 원단위 이하는 절사하여 표현 tax : '1000', // 세액, 소수점 기재불가, 원단위 이하는 절사하여 표현 remark : '비고' }, { serialNum : 2, itemName : '품명2' } ], // 추가담당자 정보 배열 addContactList : [ { serialNum : 1, // 일련번호, 1부터 순차기재 contactName : '담당자 성명', // 담당자 성명 email : 'test2@test.com' // 담당자 메일 }, { serialNum : 2, contactName : '담당자 성명 2', email : 'test3@test.com' } ] }; taxinvoiceService.register(testCorpNum, Taxinvoice, testUserID, writeSpecification, function(result){ res.render('response', {path : req.path, code: result.code, message : result.message}); }, function(Error){ res.render('response', {path : req.path, code : Error.code, message : Error.message}); }); }); |
[참고] 수정사유코드 확인하기 [바로가기]
[참고] 원본 세금계산서 아이템키 확인방법 [바로가기]
[참고] 팝빌블로그 – 수정사유별 수정세금계산서 작성방법 안내 [바로가기]
Ruby – Rails 수정세금계산서 작성예제
예제코드의 /app/controllers 폴더에 taxinvoice_controller.rb 세금계산서 즉시발행(registIssue) 핸들러에 선언되어있는 항목중 “modifyCode”와 “originaltaxinvoiceKey” 변수값을 각각 수정사유코드와 원본 세금계산서의 아이템키(ItemKey)로 기재하여 호출합니다
512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 |
# 기재 상 '외상미수금' 항목 "credit" => "", # 기재 상 '비고' 항목 "remark1" => "비고1", "remark2" => "비고2", "remark3" => "비고3", # 사업자등록증 이미지 첨부여부 "businessLicenseYN" => false, # 통장사본 이미지 첨부여부 "bankBookYN" => false, ######################### 수정세금계산서 정보 ########################## # - 수정세금계산서 관련 정보는 연동매뉴얼 또는 개발가이드 링크 참조 # - [참고] 수정세금계산서 작성방법 안내 - http://blog.linkhub.co.kr/650 # 수정사유코드, 수정사유에 따라 1~6중 선택기재, 미기재시 nil 로 처리 "modifyCode" => 1, # 원본 세금계산서의 ItemKey, 문서확인 (GetInfo API)의 응답결과(ItemKey 항목) 확인 "originalTaxinvoiceKey" => "017020716082300001", ######################### 공급자정보 ######################### # [필수] 공급자 사업자번호, '-' 제외 10자리 "invoicerCorpNum" => corpNum, # 공급자 종사업장 식별번호, 필요시 숫자 4자리 기재 "invoicerTaxRegID" => "", # [필수] 공급자 상호 "invoicerCorpName" => "상호명", # [필수] 공급자 대표자 성명 "invoicerCEOName" => "대표자명", |
[참고] 수정사유코드 확인하기 [바로가기]
[참고] 원본 세금계산서 아이템키 확인방법 [바로가기]
[참고] 팝빌블로그 – 수정사유별 수정세금계산서 작성방법 안내 [바로가기]
지금까지 전자세금계산서 API의 수정세금계산서 작성방법에 대해 안내해 드렸습니다. 수정세금계산서에 대한 자세한 사항은 [팝빌블로그 – 수정세금계산서 작성방법 안내] 참조하시기 바랍니다.
고객님들의 편의를 위하여 이메일, 전화 등 다양한 채널을 열어놓고 있으니 언제든지 연락주시기 바랍니다.
링크허브 개발팀 정요한 과장 / T.1600-9854 / D. 070-4304-2991/ E. code@linkhub.co.kr