為什麼我們要自主開發這個模組?

市售 ERP 的電子發票模組有很多問題:

我們開發這個模組的初衷很簡單:讓台灣中小企業能夠用免費、開源、完全符合財政部規範的方式處理電子發票。

核心特色:


模組功能概覽

功能 說明 MIG 格式
銷售發票開立 從訂單/出貨單自動產生電子發票 C0401
銷售發票作廢 發票開立錯誤時進行作廢 C0401 + C0501
折讓單開立 部分退貨或折讓時使用 D0401
批次匯出 ZIP 大量發票批次產生 XML 並壓縮 C0401/D0401/C0501
單張下載 XML 單一發票即時下載 依類型
發票狀態追蹤 開立、已上傳、作廢等狀態管理 內部狀態
發票查詢報表 依日期、客戶、狀態篩選查詢 -

安裝與設定

系統需求

安裝步驟

步驟 1:下載並安裝模組

taiwaneinvoice 資料夾放置於:

[你的 Dolibarr 路徑]/custom/taiwaneinvoice/

步驟 2:啟用模組

  1. 登入 Dolibarr 管理員帳號
  2. 進入「首頁 → 設定 → 模組/應用程式」
  3. 找到「璦閣-臺灣電子發票模組」並啟用

步驟 3:基本設定

進入「電子發票設定」頁面(custom/taiwaneinvoice/setup.php):

設定項目 說明 範例
發票類型 預設開立的發票類型 一般稅額計算(02)
捐贈標記 是否為捐贈發票 否(0)
載具類型 預設載具(如手機條碼) 一般紙本(0)
公司統編 開立發票的公司統一編號 12345678

使用方法

情境一:從訂單開立電子發票

Step 1:建立標準發票

  1. 進入「帳務 → 客戶發票」
  2. 點擊「建立發票」
  3. 選擇客戶、填入商品明細
  4. 關鍵:在發票備註欄填入買方統一編號(如有)
  5. 確認無誤後「建立草稿」

Step 2:產生電子發票 XML

  1. 在發票卡片頁面,找到「電子發票」區塊
  2. 點擊「產生 C0401 XML」按鈕
  3. 系統會自動:
    • 檢查發票資料完整性
    • 驗證統編格式
    • 產生符合 MIG 4.1 的 XML 檔案

Step 3:下載並上傳

  1. 點擊「下載 XML」
  2. 登入財政部電子發票整合服務平台
  3. 上傳 XML 檔案
  4. 發票狀態自動更新為「已上傳」

情境二:批次處理大量發票

適合月底一次處理整月發票:

  1. 進入「電子發票管理」頁面(manage_invoice.php
  2. 選擇日期範圍(如 2026/04/01 ~ 2026/04/30)
  3. 系統列出該期間所有未產生電子發票的發票
  4. 勾選要處理的發票(或全選)
  5. 點擊「批次產生 ZIP」
  6. 下載 ZIP 檔,內含所有 C0401 XML

批次處理優勢:

情境三:發票作廢

當發票開立錯誤需要作廢時:

  1. 進入原發票卡片
  2. 點擊「產生 C0501 作廢 XML」
  3. 系統會:
    • 檢查原發票是否已上傳財政部(未上傳可直接刪除)
    • 產生 C0501 作廢 XML
    • 標記原發票為「待作廢」狀態
  4. 上傳 C0501 XML 到財政部平台
  5. 確認作廢成功後,系統自動更新狀態

情境四:折讓單開立

當客戶部分退貨需要折讓時:

  1. 進入「電子折讓單管理」(manage_allowance.php
  2. 點擊「建立折讓單」
  3. 選擇原發票
  4. 填入折讓明細(品名、數量、金額)
  5. 產生 D0401 折讓單 XML
  6. 上傳財政部平台並通知客戶確認

MIG 4.1 規範完整支援

什麼是 MIG 4.1?

MIG(Message Implementation Guide)是財政部定義的電子發票資料交換標準。4.1 版是目前最新版本,規範了:

我們的實現方式

1. XML 產生核心(lib/taiwaneinvoice_xml.lib.php

// 範例:C0401 銷售發票 XML 結構
$xml = generateC0401XML($invoice_data);
// 自動處理:
// - 發票基本資料(發票號碼、日期、買賣方統編)
// - 商品明細(品名、數量、單價、金額、稅額)
// - 總計資訊(未稅金額、稅額、總計)
// - 驗證碼計算

2. 資料驗證機制

3. 完整 XML 範例結構

<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:GEINV:eInvoiceMessage:C0401:3.2">
  <Main>
    <InvoiceNumber>AB-12345678</InvoiceNumber>
    <InvoiceDate>20260501</InvoiceDate>
    <InvoiceTime>143000</InvoiceTime>
    <Seller>
      <Identifier>12345678</Identifier>
      <Name>璦閣數位科技有限公司</Name>
    </Seller>
    <Buyer>
      <Identifier>87654321</Identifier>
      <Name>範例科技股份有限公司</Name>
    </Buyer>
    <InvoiceType>07</InvoiceType>
    <DonateMark>0</DonateMark>
    <PrintMark>Y</PrintMark>
  </Main>
  <Details>
    <ProductItem>
      <Description>ERP 軟體授權</Description>
      <Quantity>1</Quantity>
      <UnitPrice>50000</UnitPrice>
      <Amount>50000</Amount>
      <TaxType>1</TaxType>
    </ProductItem>
  </Details>
  <Amount>
    <SalesAmount>50000</SalesAmount>
    <TaxType>1</TaxType>
    <TaxRate>0.05</TaxRate>
    <TaxAmount>2500</TaxAmount>
    <TotalAmount>52500</TotalAmount>
  </Amount>
</Invoice>

技術架構說明

檔案結構

taiwaneinvoice/
├── core/
│   ├── modules/
│   │   └── modTaiwanEInvoice.class.php    # 模組定義
│   └── triggers/
│       └── interface_500_modTaiwanEInvoice_TaiwanEInvoiceTriggers.class.php
├── class/
│   └── actions_taiwaneinvoice.class.php    # 動作處理
├── lib/
│   └── taiwaneinvoice_xml.lib.php         # XML 產生核心
├── sql/
│   └── llx_taiwaneinvoice_data.sql        # 資料表結構
├── manage_invoice.php                      # 發票管理頁面
├── manage_allowance.php                    # 折讓單管理
├── setup.php                               # 設定頁面
└── README.md

資料庫結構

模組建立以下資料表:

-- 電子發票附加資料表
CREATE TABLE llx_taiwaneinvoice_data (
    rowid INT AUTO_INCREMENT PRIMARY KEY,
    fk_object INT NOT NULL,           -- 關聯發票 ID
    einvoice_type VARCHAR(10),        -- C0401, D0401, C0501
    status INT DEFAULT 0,             -- 0=待開立, 1=已開立, 2=作廢
    einvoice_number VARCHAR(20),      -- 電子發票號碼
    track_code VARCHAR(10),           -- 發票追蹤碼
    upload_date DATETIME,             -- 上傳日期
    xml_content TEXT                  -- XML 內容備份
);

觸發器機制(Triggers)

模組透過 Dolibarr 的觸發器系統,在以下事件自動執行:


常見問題 FAQ

Q1:這個模組真的可以免費使用嗎?

是的。這是我們自主開發並以 GPL-3 授權公開的模組,任何人都可以:

但請注意:電子發票上傳財政部平台,財政部不會收取費用(不像第三方平台會收張數費)。

Q2:和第三方電子發票平台有什麼不同?

比較項目 第三方平台 我們的模組
費用 每月 500-3000 元(依張數) 免費
整合度 需手動匯入/匯出 與 Dolibarr 無縫整合
客製化 無法調整 開源碼可自由修改
資料安全 資料在第三方伺服器 資料在自己的伺服器
統編驗證 不一定有 即時驗證

Q3:發票 XML 上傳財政部失敗怎麼辦?

常見原因與解決:

  1. 統編格式錯誤

    • 檢查買方統編是否為 8 碼數字
    • 模組會自動驗證並提示
  2. 發票號碼重複

    • 檢查是否已開立過此發票
    • 查詢財政部平台確認
  3. XML 格式錯誤

    • 下載 XML 後用財政部驗證工具檢查
    • 聯絡我們協助除錯

Q4:可以產生 B2C 發票嗎?

可以。支援以下類型:

在發票設定或個別發票可選擇稅率類型。

Q5:發票開立後可以修改嗎?

電子發票一旦上傳財政部,不能修改內容(這是財政部規定)。

如果發現錯誤:

模組會在產生 XML 前再次確認資料,減少錯誤機會。


客製化與進階功能

API 介面

模組提供以下內部函數供客製開發:

// 產生 C0401 XML
$result = generateC0401XML($invoice_id, $options);

// 產生 C0501 作廢 XML
$result = generateC0501XML($original_invoice_id, $reason);

// 產生 D0401 折讓 XML
$result = generateD0401XML($allowance_data);

// 驗證統一編號
$isValid = validateGUINumber('12345678');

// 取得發票狀態
$status = getEInvoiceStatus($invoice_id);

工作流程自動化

可搭配 Dolibarr 的工作流程模組:

  1. 出貨自動開票:出貨單確認時自動產生發票草稿
  2. 付款自動上傳:收到款項後自動批次上傳發票
  3. 定期作廢檢查:每日檢查是否有待作廢發票需處理

下一步?

需要我們協助導入這個模組?

我們提供:

完全免費諮詢,沒有推銷壓力。

預約 Dolibarr 電子發票諮詢


P.S. 這個模組是我們團隊自主開發的成果,完全符合台灣財政部規範。我們相信:台灣企業應該要有真正適合自己的工具,而不是被國外軟體或第三方平台綁架。

版本資訊: V1.0.1 | 開發公司: 璦閣數位科技 | 授權: GPL-3