顯示具有 電子發票整合 標籤的文章。 顯示所有文章
顯示具有 電子發票整合 標籤的文章。 顯示所有文章

2022年6月15日 星期三

[電子發票] Turnkey發票資料交換-歷史存證檢核郵件自動檢查

 開始使用電子發票上傳發票大平台後,每日大平台都每日寄送歷史存證檢核表

主要目的係供比對前一日上傳資料筆數,若發現上傳資料筆數不符時再與電子發票技術客服人員聯繫。

問題是,誰有那功夫每天去打開來檢查……一般都是直接乎略,到真正發生問題被通知才會發現。

因此寫了一個小程式,每天自動收信檢附檔中的excel檔,檢查 傳輸差異數、存證差異數、存證異常清單。如果有異常就轉發出來。

程式碼分享出來,如果有需要的可以參考使用 TurnkeyMailChecker

主要使用套件:

MailKit:用來收信、發信

SharpZipLib:用來解壓信件zip附檔

NPOI:用來讀取excel檔資料


大致說明一下做法思路:

(1)建立一個專門收電子發票平台的帳號

(2)使用IMAPClient收信 

     這裡要注意 IMAP使用的 port,

     無加密使用 143 

     SMTPClient.Connect("exaple.com", 143, SecureSocketOptions.None );

     有加密使用 993

     SMTPClient.Connect("exaple.com", 993, SecureSocketOptions.SslOnConnect);

     收信時檢查只有寄信者為 peinvmgr@einvoice.nat.gov.tw,並符合關鍵主旨XXX有限公司{年-月-日} 歷史存證檢核表,才進行處理,其他信件直接刪除,每次收完就刪除處理過的信件,避免信箱爆掉。

(3)檢查第1個Sheet以下欄位值:傳輸差異數  存證差異數 

     及第3個Sheet 存證異常清單計算筆數,如果其中一個數值大於0,表示有異常,隨即發送通知

程式不難,主要就是使用各方的套件,像組積木一樣完成自已想要的功能,感謝這些強大套件的開發者們的努力,讓事件簡單化!

主程式如下:

2017年10月19日 星期四

Java簡易電子發票資料Turnkey交換範例

Java簡易電子發票資料Turnkey交換範例

Turnkey應用教育訓練簡報檔中的Java範例只有片段,這邊以A0101進行實作。

C# 簡易電子發票資料Turnkey交換範例

 C# 簡易電子發票資料Turnkey交換範例

        雖然財政部所提供的Turnkey軟體中 tv-gateway-einv-1.2.11.jar( 2020/12/25 更新:Tunkey 2.0.2版位於 cht-gateway-einv-2.0.0.0.jar )已經有建立各版本的資料交換完整的物件,考慮到java在目前公司尚未有人可以協助維護,所以想了一個比較簡易型套用樣版的方式來執行為了簡單快速,省去物件的建模,一切從簡有些XSD中的選填元素沒有一定得上拋就直接省略。

2020/12/25 補充: XSD 可以透過工具轉成 XML,可google關鍵字  XSD to XML

樣版工具使用:Mustache sharp 可至NuGet下載

程式碼參考如下:

主程式:Program.cs

其中利用 XmlReader 物件載入xsd來進行驗證xml產出是否符合規範

電子發票資料交換xsd檔可在tv-gateway-einv-1.2.11.jar中找到(參考附註)


樣版檔:templateA0401.txt

A0401物件:InvoiceA0401.csInvoiceA0401ProductItem.cs

完整程式可至GitHub下載



附註:安裝完Turnkey程式後可在 C:\Program Files\EINVTurnkey\lib 下找到 tv-gateway-einv-1.2.11.jar ( 2020/12/25 更新:Tunkey 2.0.2版位於 cht-gateway-einv-2.0.0.0.jar )

透過解壓縮工具解開後的xsd資料夾中可發現各版本的xsd都位於此