thanakan-accounting
ส่งออก Statement ไปยังโปรแกรมบัญชี
การติดตั้ง
Quick Start
from thanakan_statement import parse_all_pdfs, consolidate_by_account
from thanakan_accounting import export_to_peak
# Parse statements
statements = parse_all_pdfs("./statements/")
accounts = consolidate_by_account(statements)
# Export to Peak format
export_to_peak(accounts, "peak_import.xlsx")
รูปแบบที่รองรับ
| โปรแกรม | Function | คำอธิบาย |
|---|---|---|
| Peak | export_to_peak |
Peak Import Statement format |
Peak Export
export_to_peak
Export หลายบัญชีเป็น Excel file (แยก sheet ต่อบัญชี)
Parameters:
| Parameter | Type | คำอธิบาย |
|---|---|---|
accounts |
list[Account] |
บัญชีที่จะ export |
output_path |
str \| Path |
Path สำหรับ output Excel file |
export_single_to_peak
Export บัญชีเดียว
from thanakan_accounting import export_single_to_peak
export_single_to_peak(accounts[0], "peak_single.xlsx")
รูปแบบ Peak Import Statement
ไฟล์ Excel ที่สร้างมีรูปแบบตาม Peak Import Statement:
| Column | ชื่อ | รูปแบบ | ตัวอย่าง |
|---|---|---|---|
| A | วันที่รายการ | YYYYMMDD | 20240115 |
| B | จำนวนเงิน | Number | -1500.00, 3000.00 |
| C | หมายเหตุ | Text | โอนเงิน K PLUS - REF123 |
ตัวอย่าง Output
| วันที่รายการ | จำนวนเงิน | หมายเหตุ |
|---|---|---|
| 20240115 | -1500.00 | โอนเงิน K PLUS - REF123456 |
| 20240116 | 3000.00 | เงินเข้า - Transfer from BBL |
| 20240117 | -500.00 | PromptPay - 0812345678 |
หมายเหตุ
- ถอนเงิน: จำนวนเป็นลบ (-)
- ฝากเงิน: จำนวนเป็นบวก (+)
- หมายเหตุ: รวมจาก description + channel + check number + reference
ตัวอย่างการใช้งาน
Full Pipeline
from thanakan_statement import parse_all_pdfs, consolidate_by_account
from thanakan_accounting import export_to_peak
# 1. Parse PDF statements
statements = parse_all_pdfs("./statements/", password="DDMMYYYY")
# 2. Consolidate by account (remove duplicates)
accounts = consolidate_by_account(statements, preferred_language="en")
# 3. Export to Peak format
export_to_peak(accounts, "peak_import.xlsx")
print(f"Exported {len(accounts)} accounts")
for account in accounts:
print(f" {account.account_number}: {len(account.all_transactions)} transactions")
With Gmail Download
from thanakan_mail import GmailProvider, StatementDownloader, BANK_CONFIGS
from thanakan_statement import parse_all_pdfs, consolidate_by_account
from thanakan_accounting import export_to_peak
# 1. Download from Gmail
provider = GmailProvider()
downloader = StatementDownloader(provider, BANK_CONFIGS["kbank"], "./downloads")
downloader.download_statements(max_emails=100)
# 2. Parse
statements = parse_all_pdfs("./downloads")
accounts = consolidate_by_account(statements)
# 3. Export
export_to_peak(accounts, "peak_import.xlsx")
เพิ่ม Exporter ใหม่
สามารถเพิ่ม exporter สำหรับโปรแกรมบัญชีอื่นได้:
# exporters/zoho.py
from pathlib import Path
from thanakan_statement import Account
def export_to_zoho(accounts: list[Account], output_path: Path | str) -> None:
"""Export to Zoho Books format."""
# Implementation here
pass
แล้วเพิ่มใน __init__.py:
from .exporters.zoho import export_to_zoho
__all__ = [
"export_to_peak",
"export_single_to_peak",
"export_to_zoho",
]
การ Import เข้า Peak
- เปิด Peak และไปที่ Bank Statement
- เลือกบัญชีธนาคารที่ต้องการ
- คลิก Import Statement
- เลือกไฟล์ Excel ที่ export
- ตรวจสอบข้อมูลและยืนยันการ import
- ทำ Bank Reconciliation ตามปกติ