iT邦幫忙

2023 iThome 鐵人賽

DAY 6
1

紙本電子發票有兩種查詢方式,一個是輸入發票號碼、驗證碼和發票日期,而另一種則是用掃描紙本發票上面的 QRcode。這一篇會先介紹手動輸入的方式。

財政部電子發票應用規格書有提到, 一維條碼是 BarCode、二維條碼是 QRcode

https://ithelp.ithome.com.tw/upload/images/20230917/201143802fpbQrUtvQ.png

對照 source code 發現大小寫有一點點不一樣,不過不影響使用體驗。

依照下面 function 我們可以得知查詢紙本電子發票要輸入三個參數

  1. invoice_number: 發票號碼
  2. invoice_date:發票日期
  3. invoice_random:隨機碼
  4. invoice_term:發票期別

(我這邊有個想法,其實發票期別應該可以透過發票日期去產生,應該就不用再輸入一次。但現在還是要輸入)

def get_invoice_detail(
        self,
        barcode_type: Literal["QRCode", "Barcode"],
        invoice_number: str,
        invoice_date: date,
        invoice_random: str,
        invoice_term: Union[str, None] = None,
        invoice_encrypt: Union[str, None] = None,
        seller_id: Union[str, None] = None,
    ):
        """
        查詢發票明細 v0.6
        `invoice_random`: 錯誤將僅回傳發票表頭,正確將回傳完整明細

        `barcode_type`: "Barcode"
        `invoice_number`: 發票號碼
        `invoice_date`: 發票日期
        `invoice_random`: 發票隨機碼 (4位)
        `invoice_term`: 發票期別, 3 位民國年+ 2 位雙數月份,如:11006

        or

        `barcode_type`: "QRCode"
        `invoice_number`: 發票號碼
        `invoice_date`: 發票日期
        `invoice_random`: 發票隨機碼 (4位)
        `invoice_encrypt`: 發票檢驗碼 (左側QRCode中,24位)
        `seller_id`: 商家統編
        """

這邊做了個小實驗

  1. 只有輸錯了發票期別,你會得到「該筆發票並無開立

https://ithelp.ithome.com.tw/upload/images/20230917/20114380ekFCjNV55g.png

  1. 只有輸錯了隨機碼,你會得到資料,但是沒有購買明細的 details

https://ithelp.ithome.com.tw/upload/images/20230917/20114380M2iPkf5ZeI.png

  1. 輸錯了發票日期,你會得到「該筆發票並無開立

https://ithelp.ithome.com.tw/upload/images/20230917/2011438023s0ebOXae.png

  1. 輸錯的發票號碼,你也會得到「該筆發票並無開立

https://ithelp.ithome.com.tw/upload/images/20230917/20114380IUHwwNQeAT.png

基本上可以得知,如果發票號碼、發票日期、發票期別打錯的話,會得到「該筆發票並無開立」(發票),只有隨機碼打錯回傳不一樣。在後續設計上,可以通知使用者發票的隨機碼是否有輸入錯誤。

以上完整程式碼可參考連結


上一篇
Day 5:站在巨人的肩膀上 tw_invoice
下一篇
Day 7:如何查詢紙本電子發票(QRcode)
系列文
透過 python 建立發票系統 - 自己的發票自己查30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言