3 คะแนน โดย GN⁺ 2024-09-17 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Plain Text Accounting (PTA) คือแนวทางการบันทึกข้อมูลบัญชีไว้ในไฟล์ข้อความล้วน แล้วประมวลผลด้วยเครื่องมือที่เป็นมิตรกับบรรทัดคำสั่ง เช่น Ledger, hledger และ Beancount โดยเว็บไซต์นี้เป็นพอร์ทัลที่รวบรวมทรัพยากรที่เกี่ยวข้องไว้ในที่เดียว
  • กิจกรรมของชุมชนกระจายอยู่ใน Matrix/IRC, ฟอรัม, Reddit, Lemmy, Hacker News, Mastodon, X, Bluesky เป็นต้น ทำให้สามารถติดตามคำถาม ข่าวสาร และบทสนทนาแยกตามโปรเจกต์ได้หลายช่องทาง
  • ทรัพยากรการเรียนรู้ถูกจัดเป็นการเปรียบเทียบแอป เอกสารทางการ พื้นฐานบัญชี คู่มือเริ่มต้น ชีตสรุป คุกบุ๊ก FAQ สไลด์ และวิดีโอ ทำให้ผู้ที่เริ่มใช้ PTA ครั้งแรกเข้าถึงได้เป็นลำดับขั้น
  • อีโคซิสเต็มของแอปมีศูนย์กลางอยู่ที่ Ledger, Beancount และ hledger พร้อมมี implementation หลายตัวและตารางเมทริกซ์ฟีเจอร์ โดยเครื่องมือหลัก 3 ตัวนี้พัฒนาด้วย C++/Python/Haskell ตามลำดับ และมีประวัติการออกรุ่นในปี 2025~2026
  • มีการเชื่อมต่อไปถึงการนำเข้า·แปลงข้อมูล ปลั๊กอินเอดิเตอร์ ใบแจ้งหนี้ การดึงราคา รายงาน การบันทึกเวลา UI เวิร์กโฟลว์ และไลบรารี ทำให้สามารถนำ ข้อมูลบัญชีแบบข้อความล้วนไปผูกกับสภาพแวดล้อมการทำงานที่หลากหลาย ได้

แนวคิดของ PTA และบทบาทของ plaintextaccounting.org

  • Plain Text Accounting คือแนวทางการทำบัญชีและการลงบัญชีด้วยไฟล์ข้อความล้วนและซอฟต์แวร์ที่มีประสิทธิภาพและเป็นมิตรกับบรรทัดคำสั่ง เช่น Ledger, hledger และ Beancount
  • plaintextaccounting.org ทำหน้าที่เป็นพอร์ทัลไปยัง เครื่องมือ เอกสาร และแนวปฏิบัติ ของชุมชน PTA
  • สามารถรับอัปเดตของ repository ของเว็บไซต์ได้ และยังมีรายงานการเงินกับข้อมูลการสนับสนุนให้ด้วย

ชุมชนและช่องทางสนทนา

  • การสนทนาแบบเรียลไทม์เชื่อมต่อผ่าน #plaintextaccounting บน Matrix, plaintextaccounting Matrix space และช่อง IRC #plaintextaccounting บน Libera Chat
  • การพูดคุยและข่าวสารกระจายอยู่ในช่องสาธารณะหลายแห่ง
    • PTA forum
    • /r/plaintextaccounting
    • lemmy.world/c/plaintextaccounting
    • การค้นหา stories/comments ที่เกี่ยวข้องกับ plain text accounting บน Hacker News
    • #plaintextaccounting, #ledgercli, #hledger, #beancount บน Mastodon
    • การค้นหาและแฮชแท็กบน Twitter/X, Bluesky
  • บน Stack Exchange มีแท็ก ledger-cli และ hledger พร้อมลิงก์ค้นหาให้
  • ยังเชื่อมต่อกับ mailing list และแชตแยกตามโปรเจกต์ รวมถึง This Week In Hledger ด้วย

เอกสารและทรัพยากรการเรียนรู้

  • ทรัพยากร เปรียบเทียบแอป มีรายการแอป PTA, เมทริกซ์ฟีเจอร์, FAQ “ควรเลือกแอป PTA ตัวใด” และ Syntax Quick Reference
  • เอกสารทางการของแอปเชื่อมไปยัง Ledger, hledger, Beancount, rustledger, Ledger(Go), Tackler และเอกสาร pta
  • ทรัพยากร พื้นฐานบัญชี มี PTA FAQ, Accounting basics/links ของ hledger, Double-Entry Counting Method ของ Beancount, “Accounting for Computer Scientists” เป็นต้น
  • เนื้อหาเริ่มต้นถูกแบ่งตามจุดเริ่มต้น
  • ชีตสรุป คุกบุ๊ก FAQ สไลด์ และวิดีโอ ก็ถูกจัดไว้เป็นหมวดแยกต่างหาก โดยในหมวดวิดีโอมีบันทึกว่าการค้นหาวิดีโอ PTA บน YouTube ทำได้ยาก

แอป PTA หลักและการเปรียบเทียบฟีเจอร์

  • เมื่อเริ่มใช้ PTA สามารถลองแอปอย่างน้อยหนึ่งตัวจากรายการในเว็บไซต์ได้ และโดยทั่วไปสามารถ ย้ายข้อมูล ระหว่างแอปได้
  • รายการแอปหลักในปัจจุบันรวบรวมหลายโปรเจกต์ไว้ด้วยกัน
    • Ledger: C++, เริ่มปี 2003, รุ่นล่าสุดปี 2025, committer ประมาณ 245 คน, stars ประมาณ 5.9k
    • Beancount: Python, เริ่มปี 2008, รุ่นล่าสุดปี 2026, committer ประมาณ 103 คน, stars ประมาณ 5.5k
    • hledger: Haskell, เริ่มปี 2007, รุ่นล่าสุดปี 2026, committer ประมาณ 194 คน, stars ประมาณ 4.4k
    • Transity, Ledger(Go), Abandon, zhang, Tackler, rustledger, knut, acc, ledg ฯลฯ ก็รวมอยู่ในรายการปัจจุบันด้วย
  • โปรเจกต์เก่าหรือไม่ active ถูกจัดแยกไว้ เช่น placc, budget-cli, mynt, awk-pta, pta, blossom, .Net Ledger, monescript, Penny, UMM, cl-ledger เป็นต้น
  • เมทริกซ์ฟีเจอร์ ของ Ledger, hledger และ Beancount อัปเดตล่าสุด ณ 2024-09 และเปรียบเทียบเรื่องอินเทอร์เฟซผู้ใช้ การติดตั้ง วิธีใช้ รูปแบบอินพุต/เอาต์พุต คำสั่ง การตั้งค่า ความสามารถในการขยาย ชื่อบัญชี งบประมาณ กราฟ การดึงราคา คิวรี การตรวจสอบความถูกต้อง เป็นต้น
  • ความแตกต่างหลักเน้นรายการที่ส่งผลโดยตรงต่อการเลือกเครื่องมือ
    • CLI เชื่อมกับ ledger ของ Ledger, hledger ของ hledger และ beanquery ของ Beancount
    • การติดตั้งและตั้งค่าที่ง่ายแสดงเป็น yes สำหรับ Ledger/hledger และ no สำหรับ Beancount
    • hledger รองรับรูปแบบเอาต์พุต text/html/csv/tsv/fods/beancount/sql/json
    • การตรวจสอบความถูกต้องของ Beancount แสดงว่าเข้มงวดเสมอ ส่วน Ledger และ hledger แสดงว่าสามารถตั้งค่าได้

อีโคซิสเต็มซอฟต์แวร์

  • หมวด AI มี accountant24 ซึ่งเป็นเอเจนต์ AI แบบ local-first หลายโมเดลที่ใช้ hledger และบทความการตั้งค่าที่ใช้ Claude Code เป็น agent layer ร่วมกับ hledger และ Obsidian vault
  • การแจกจ่าย·การตั้งค่าทางเลือกมี Full-fledged hledger, hledger-flow, Lazy Beancount, hledger-youtube-business, rtrLEDGER, docker-finance
  • การแปลง·นำเข้าข้อมูล มีสัดส่วนมาก โดยนอกจากการแปลง CSV ในตัวของ Ledger และ hledger แล้ว ยังมีเครื่องมือนำเข้าของ Beancount v2, banks2ledger, beancount-import, beancount2ledger, hledger2beancount, ledger2beancount, plaid2text เป็นต้น
    • เครื่องมือสำหรับย้ายจาก GnuCash, Intuit/QuickBooks/QIF, KMyMoney, YNAB ไปยัง *ledger หรือ Beancount ก็ถูกจัดไว้เป็นหมวดย่อยแยกต่างหาก
  • เครื่องมือสร้างข้อมูลใช้สำหรับงานสร้าง price transactions, ค่าเสื่อมราคา, ดอกเบี้ย, รายการซ้ำ และ postings ของกำไรขาดทุนจากทุน เป็นต้น
  • ปลั๊กอินเอดิเตอร์แบ่งตาม Emacs, JetBrains IDE, Nano, Sublime, TextMate, Vim และ VS Code
    • ตัวอย่าง: ledger-mode, beancount-mode, hledger-mode, vim-ledger, vim-beancount, hledger-vscode, vscode-beancount
  • เครื่องมือจัดรูปแบบมี beancount-black, beancount-black web app, hledger-fmt
  • เครื่องมือใบแจ้งหนี้แนะนำ kairos ซึ่งเป็นเครื่องมือภาษา Go ที่สร้างใบแจ้งหนี้จากไฟล์ hledger timedot

UI, การรายงาน, เวิร์กโฟลว์, ไลบรารี

  • เครื่องมือ ดึงราคา มี bean-price ของ Beancount, hledger-stockquotes, ledger-get-prices, pricehist และเครื่องมือดึงราคาหุ้น·อัตราแลกเปลี่ยนบนฐาน Yahoo Finance เป็นต้น
  • เครื่องมือรายงานขยายไปสู่เรื่องงบประมาณ การวิเคราะห์สินทรัพย์ รายงานส่วนต่าง อัตราผลตอบแทนภายใน กราฟ Sankey เอาต์พุต PDF การคำนวณกำไรจากทุน เป็นต้น
  • เครื่องมือบันทึกเวลามี org, Taskwarrior hook, Toggl CSV, การแปลง timeclock และตัวอย่างการบันทึกเวลาบนฐาน hledger
  • Terminal UI เช่น hledger add, hledger-ui, hledger-iadd, bean-add, ledger xact, puffin, regdel รองรับการป้อน·ค้นหา·แก้ไขธุรกรรม
  • GUI, เว็บ และ UI บนมือถือก็เชื่อมไปยังเครื่องมือแยกต่างหาก
    • เว็บ: fava, hledger-web, Paisa, BeanHub
    • มือถือ: Beancount Mobile CE, beancount-mobile, NanoLedger, cashier, cone, MoLe
    • GUI: fruit-credits, Ledgera, Prudent, Surebeans เป็นต้น
  • หมวดเวิร์กโฟลว์ครอบคลุมการสร้าง journal ของ hledger จาก CSV หรือการตั้งค่าบนฐาน Docker เพื่อติดตาม·รายงานการเงินแบบดั้งเดิมและคริปโตเคอร์เรนซี
  • หมวดไลบรารีรวบรวมคอมโพเนนต์สำหรับนักพัฒนาเพื่อ parse·query·report·integrate ไฟล์ PTA เช่น Beancount parser, BeanHub API, hledger-lib, hledger-web JSON API, node-hledger, pyhledger

1 ความคิดเห็น

 
GN⁺ 2024-09-17
ความคิดเห็นจาก Hacker News
  • ระบบที่ต้องการ การจัดหมวดหมู่อย่างเข้มงวดทันที ไม่เหมาะกับบางคน ที่บริษัทเก่าที่เคยทำงาน เราใช้วิธี 2 ขั้นตอนคือ ก่อนอื่นจดสั้น ๆ ใน iPhone Notes เช่น -50 Alice tools, +20 Bob returned loan แล้วภายหลังให้สคริปต์พาร์สวันที่·คีย์เวิร์ด·คู่กรณี·รายการวิเคราะห์ภายใน แล้วแปลงเป็นเทมเพลตบัญชีคู่
    รายการที่สคริปต์ระบุไม่ได้ก็จัดหมวดหมู่ด้วยมือ และถ้าจำเป็นก็เพิ่มเข้าไปในรายการกฎ อีกทั้งมีรายการแมปแยกตามบุคคลเพื่อไม่ให้ Alice กับ Bob ต้องใช้คำศัพท์ให้ตรงกัน
    จินตนาการได้ยากว่าทุกครั้งที่มีเงินเข้าออก คนที่กำลังยืนต่อคิว ขับรถ หรืออยู่ระหว่างสนทนาจะกรอกรูปแบบอย่าง Cat1:cat2:cat3 ได้ทุกครั้ง สุดท้ายก็น่าจะกลับไปใช้โน้ตสั้น ๆ หรือแชตอีก หรือไม่ก็พยายาม “จำแล้วค่อยกรอก” ไม่ใช่ตอนสิ้นวัน แต่คงเป็นช่วงสุดสัปดาห์

    • วิธีนั้นก็ฟังดูเหมือน การบัญชีแบบข้อความธรรมดา อยู่ดี ผมเองก็ใช้คล้าย ๆ กันมาก คือไม่ได้ป้อนลงไฟล์บัญชีแยกประเภทโดยตรง แต่ใส่ใน KMyMoney แล้วใช้สคริปต์แปลงเป็นไฟล์ ledger
      ถ้าเป็นเครื่องมือแบบข้อความ ก็สามารถสร้างโฟลว์ที่ต้องการได้อย่างอิสระ เช่น ต่อสคริปต์ที่รับโน้ตจาก iPhone แล้วแปลงเป็นรูปแบบ ledger ดังนั้นมันเลยรู้สึกแปลกนิดหน่อยที่จะมองว่าเป็นข้อร้องเรียน
    • พวกเราก็ไม่ได้พิมพ์ไฟล์ ledger โดยตรงเหมือนกัน และแทนที่จะแปลงโน้ตรูปแบบอิสระ เราจะเขียนบัญชีที่จะใช้ไว้ใน ช่อง memo ของแอปธนาคารและแอปรายงานค่าใช้จ่าย Zoho
      ทุกไตรมาสจะดาวน์โหลด CSV จากบัญชีธนาคาร บัตรเครดิต และ Zoho แล้วสคริปต์ Ruby จะดูช่อง memo เพื่อแปลงเป็นไฟล์ ledger สคริปต์กับผลลัพธ์ยังต้องปรับแต่งบ้าง แต่ทำอัตโนมัติได้มากกว่า 95%
      แถมยังเพิ่ม การตรวจสอบความถูกต้องสอดคล้อง ลงในไฟล์ ledger ด้วย เช่น ยอดตรงกับยอดคงเหลือที่ได้จากธนาคารหรือไม่ และรายการอยู่ในช่วงเวลาปัจจุบันหรือไม่
  • ผมใช้ ledger-cli มาเกือบ 20 ปีตั้งแต่เริ่มทำธุรกิจส่วนตัว และถึงจะไม่สมบูรณ์แบบแต่ก็พอใจมาก ทุกอย่างเป็นข้อความธรรมดา จึงประมวลผลด้วยสคริปต์ อ่านใน VIM และดึงข้อมูลออกมาได้ง่าย
    ไฟล์ ledger ของหนึ่งในบริษัทที่กำลังดำเนินอยู่ตอนนี้เป็นไฟล์ข้อความธรรมดาขนาด 2MB ที่มีธุรกรรมตั้งแต่ปี 2016 เป็นต้นมา ผมไม่ได้เห็นคุณค่ามากนักในการแยกบัญชี/หมวดหมู่ให้ละเอียดมาก ๆ แต่สำหรับการติดตามภาพรวมนั้นเป็นเครื่องมือที่ขาดไม่ได้
    การเรียนรู้ บัญชีคู่ ที่เครื่องมืออย่าง ledger ใช้ก็สนุก และเมื่อมองย้อนกลับไปก็ไม่ได้ยาก อีกทั้งรู้สึกว่าเป็นทักษะที่จะมีประโยชน์ไปตลอดชีวิต

    • ตอนนี้ยังไม่ได้ใช้เครื่องมือแบบนี้ แต่ QuickBooks กับธนาคารทำธุรกรรมหายไปสองสามรายการจนกำลังจัดการอยู่ บทความนี้เลยโผล่มาได้ถูกจังหวะพอดี
      กลยุทธ์บัญชี/หมวดหมู่ที่ใช้คือทำให้สอดคล้องกับหมวดค่าใช้จ่ายที่กรมสรรพากรแคนาดากำหนดในแบบยื่นภาษี ตอนแรกผมสร้างหมวดหมู่ตามตรรกะ เช่น ค่าโฮสติ้ง ค่าใช้จ่ายต้นแบบ/การผลิต แต่หลังจากต้องแมปกลับไปเป็นหมวดของ CRA อยู่หลายปี ก็รู้ว่าการจัดให้ตรงกับหมวดภาษีตั้งแต่แรกทำให้การยื่นภาษีปลายปีง่ายขึ้นมาก
    • ตอนขายบ้าน บริษัทเอสโครว์ส่งเช็คคืนเงินประมาณ 3,000 ดอลลาร์จากการปิดบัญชีซื้อขายมาให้ แต่ผมไม่เคยได้รับเช็คนั้นเลย ผ่านไป 5 ปี หลังจากเริ่มใช้ ledger-cli ถึงได้รู้เรื่องนี้
    • ขอโหวตให้ ledger เป็นสิ่งที่ดีที่สุดเท่าที่เคยใช้มา และจุดที่ ทำสคริปต์ได้ นั้นยอดเยี่ยมมาก หลังจากเริ่มใช้ การทำภาษีของผมถูกต้องมาตลอดกว่า 2 ปีแล้ว
    • พอคิดให้มากขึ้น สิ่งที่เสียดายที่สุดคือข้อจำกัดโดยรวมของข้อความธรรมดา นั่นคือ ไม่มีไฟล์แนบ ผมสร้างระบบส่วนตัวสำหรับอ้างอิงไฟล์เฉพาะ และยังทำแอป Mac ที่เมื่อวางไฟล์ลงในธุรกรรมแล้วจะคัดลอกไปยังโฟลเดอร์ที่กำหนดและติดแท็กให้ธุรกรรมนั้น
      ถ้าข้อมูลเป็น SQLite ก็คงทำได้ง่ายกว่ามาก แต่ก็จะเสียข้อดีของการแก้ไขโดยตรงด้วยตัวแก้ไขข้อความไป
  • ด้วย LLM ทำให้ทำการบัญชีแบบข้อความธรรมดาอย่างต่อเนื่องได้ง่ายขึ้นมาก โดยเฉพาะช่วยเลี่ยงการป้อนข้อมูลด้วยมือตอนนำรายการเดินบัญชีธนาคารเข้า hledger
    ผมใช้ไฟล์ JSON สำหรับแมปธุรกรรมธนาคารเข้ากับบัญชี hledger และถ้ามีธุรกรรมที่ยังไม่มีการแมปใหม่ สคริปต์ Python จะสร้างพรอมป์สำหรับ Claude โดย Claude จะดูรายการบัญชีแล้วเสนอการแมปของธุรกรรมใหม่ และส่งคืนรายการบันทึกบัญชี hledger ตามนั้น
    จากนั้นสคริปต์อีกตัวจะพิมพ์รายการบันทึกบัญชี hledger ของธุรกรรมธนาคารในเดือนนั้นออกมาอย่างเป็นระเบียบ แล้วผมปรับแก้ไม่กี่นาทีก่อนยืนยัน คำสั่งแมปที่สมัยก่อนคงกลายเป็นกอง regex กับเงื่อนไขเปราะบาง ตอนนี้ก็เขียนเป็น ภาษาธรรมชาติ ได้

    • คุณมองว่า LLM ไม่เปราะบางหรือ? แล้วการส่งข้อมูลธนาคารไปให้ Anthropic ก็ค่อนข้างใจกล้าเหมือนกัน
  • ผมสนุกกับกระบวนการเรียนรู้ระหว่างใช้ Beancount การเขียนเครื่องมือนำเข้าข้อมูล และประสบการณ์ที่ได้ลงมือจัดการบัญชีเอง แต่ตอนนี้ผ่านไปเกือบ 1 ปีแล้วตั้งแต่นำเข้าข้อมูลครั้งล่าสุด และถึงตั้งใจจะทำทุกเดือน แม้จะอัตโนมัติไปพอสมควรแล้ว ก็ยังใช้เวลา 30–60 นาทีจนรู้สึกยุ่งยาก

    • อยากให้ธนาคารต่าง ๆ ไม่ขัดขวาง การส่งออกข้อมูล อย่างจริงจังแบบนี้ เมื่อก่อนผมเคยทำสคริปต์ที่ reverse engineering ขั้นตอนล็อกอินด้วย OCR และจัดการรายการที่ผิดพลาด แต่ค่าบำรุงรักษาสูงเกินไป
      พอต้องมีการยืนยันบนมือถือด้วย ก็เลยยอมแพ้ไป
    • ผมเจอประสบการณ์เดียวกันเป๊ะใน GnuCash ถ้าทำทุกสัปดาห์ก็ยังโอเค การพลาดไป 1–3 สัปดาห์ยังพอรับได้ แต่ถ้านานกว่านั้น ภาระในการไล่ตามจะพอกพูนเป็นก้อนหิมะ
      ผมเองก็ไม่ได้ทำการนำเข้ามาประมาณ 1 ปีแล้ว และถ้าจะฟื้นกลับมา คิดออกแค่ว่าต้องแบ่งเป็นชิ้นเล็ก ๆ เช่น อัปโหลดทีละเดือนตลอดหลายวัน
    • ถ้ารับความรู้สึกไม่ค่อยสบายใจเล็กน้อยได้ Plaid ก็น่าดู มี tier ทดสอบที่เพียงพอสำหรับการใช้งานส่วนตัว และเชื่อมต่อบัญชีได้ถึง 100 บัญชี
      https://plaid.com/
    • ถ้าใช้ teller.io การตั้งค่าจะง่ายกว่า Plaid มาก ผมใช้ซิงก์รายการเดินบัญชีธนาคาร Chase และบัตรเครดิตไปยัง Google Sheets
  • ใช้ ledger สำหรับการทำบัญชีและงานบัญชีของตัวเองกับ LLC หลายแห่ง ถ้าคุณคุ้นกับเทอร์มินัล ใช้ CLI ได้คล่อง และใช้งาน vim หรือ emacs, พื้นฐาน sed/awk, สคริปต์ bash/python/perl/ruby อยู่บ่อย ๆ ก็มีโอกาสสูงมากที่การเรียน ledger และ การทำบัญชีแบบสองด้าน แล้วเปลี่ยนมาใช้ จะทำให้พึงพอใจกว่าวิธีที่ใช้อยู่ตอนนี้มาก
    reckon มีประโยชน์ในการนำเข้าธุรกรรมอย่างรวดเร็ว: https://github.com/cantino/reckon
    การแยกปัญหาด้วย include ก็เป็นเรื่องดีเช่นกัน bal --dc อาจดูคุ้นตาสำหรับนักบัญชีอเมริกันอยู่บ้าง แต่หลายครั้งพวกเขาไม่เข้าใจจริง ๆ ว่า ledger ใช้ค่าติดลบอย่างไร ดังนั้นการเขียนสคริปต์สักสองสามตัวเพื่อแปลงเป็นสไตล์ DR/CR กลับง่ายกว่า ผม/ฉันประหลาดใจที่เห็นว่านักบัญชีที่เคยติดต่อด้วยจัดการกับ abstraction ได้แย่แค่ไหน

    • เห็นด้วยกับสองเคล็ดลับแรก ข้อที่สามก็น่าจะดีเหมือนกัน แต่ไม่เคยจำเป็นต้องใช้
      ถ้าจะเพิ่มเคล็ดลับสักข้อ คือให้ผูกทุกอย่างไว้ด้วย Makefile หรือสิ่งที่คล้ายกัน เพราะไฟล์ธุรกรรมมักถูกแยกไว้หลายไฟล์ตามบัญชี และคำสั่งสำหรับ include ไฟล์ที่ถูกต้องก็มักจะยาวได้ง่าย
      สคริปต์กราฟและสรุปต่าง ๆ ก็มีไวยากรณ์ที่จำไม่ได้ทุกครั้ง แต่ถ้าใช้ make ก็เรียกได้แบบ make cashflow, make balance 'A=Checking', make balance-plot 'A=retirement'
  • เคยเขียนบทความ สูตรใช้งานจริง หลายตอนเกี่ยวกับการใช้ Ledger ให้มีประสิทธิภาพในสถานการณ์ที่ซับซ้อนกว่าบทสอนพื้นฐาน: https://felixcrux.com/blog/ledger-practices

    • ในฐานะคนที่ใช้ ledger เยอะ สูตรเหล่านั้นยอดเยี่ยมมาก ผม/ฉันใช้รูปแบบที่ติดตามลูกค้าและซัพพลายเออร์อย่างละเอียด และต้องจัดสรรรายการจ่าย/รับเงินให้กับโปรเจกต์เฉพาะและหมวดหมู่ภายในโปรเจกต์นั้น
      เมื่อนำเข้าธุรกรรมธนาคาร จะจัดสรรเข้าบัญชีตามชื่อคู่ค้าก่อน จากนั้นสคริปต์จะใช้ ledger print สร้างไฟล์ journal ไฟล์ที่สองแยกตามคู่ค้า กลับรายการธุรกรรมเดิม แล้วใส่ไว้ชั่วคราวในบัญชีย่อยของโปรเจกต์ Unknown และหมวดหมู่ Unknown
      หลังจากนั้นผู้ดูแลบัญชีจะจับคู่ธุรกรรมกับใบแจ้งหนี้เฉพาะ และจัดสรรไปยังบัญชี Project:Category หากจำเป็นก็แยกการชำระเงินครั้งเดียวออกเป็นหลายโปรเจกต์/หมวดหมู่ เมื่อ include ทั้ง journal ธุรกรรมธนาคารและ journal ของคู่ค้าแล้ว ก็ใช้ ledger bal ตรวจสอบได้ว่าการลงบัญชีเสร็จสมบูรณ์หรือไม่
  • การทำบัญชีด้วยข้อความธรรมดานั้นเจ๋ง แต่คิดว่าอุปสรรคใหญ่ที่สุดสำหรับหลายคนคือการดาวน์โหลดข้อมูลธนาคารใน รูปแบบมาตรฐาน
    ธนาคารคงไม่สนับสนุนอะไรเกินกว่า CSV หรือ Excel อย่างจริงจัง และแพลตฟอร์มรวบรวมข้อมูลอย่าง Yodlee หรือ Plaid ก็ไม่เป็นมิตรกับโอเพนซอร์สหรือผู้ใช้สมัครเล่น
    เมื่อก่อนมีบริษัทชื่อ Wesabe(https://en.wikipedia.org/wiki/Wesabe) ที่ทำซอฟต์แวร์ซิงก์ธนาคารบนเดสก์ท็อป แต่ถูก Mint.com เบียดจนแทบหายไป ถึงอย่างนั้นแนวทางนั้นยังติดอยู่ในใจ และดูเหมือนจะทำได้ในโลกโอเพนซอร์สด้วย

    • hledger มีเครื่องมือสำหรับ แปลง CSV ที่ค่อนข้างอิสระให้เป็นธุรกรรม: https://hledger.org/1.40/hledger.html#csv
      ยังไม่เคยลองใช้ แต่หลังจากใช้เวลาช่วยแก้ปัญหาการเชื่อมต่อธนาคารของบริษัททำบัญชีแบบ SaaS ไปถึง 4 ชั่วโมงตลอดหลายวัน ก็ยินดีจะลงทุนเวลาลองดู
      ทุกครั้งที่กระทบยอดธุรกรรม ก็ต้องสู้กับระบบที่มองข้างในไม่ได้และแก้เองไม่ได้ ตอนนี้เริ่มสงสัยแล้วว่าคุ้มกับแรงที่ลงไปหรือไม่ และถ้ามีเครื่องมือที่ใช้ได้ การจัดการ CSV เองน่าจะดีกว่า อนึ่ง บริษัทนั้นไม่คืนเงินให้ด้วย โดยบอกว่าเป็น “เรื่องปกติ”
    • ช่วงหลังเพิ่งค้นพบ Paisa ซึ่งโดยพื้นฐานคือ UI ที่ดีตัวหนึ่งวางอยู่บน ledger-cli การนำเข้าสะดวกมาก แค่อัปโหลดไฟล์อย่าง CSV ดูตัวอย่าง แล้วเขียนสคริปต์ที่แปลงแต่ละแถวเป็นรูปแบบข้อความของ ledger
      มี lint ด้วย และถ้าพอใจกับผลลัพธ์ก็สามารถบันทึกสคริปต์ไว้แล้วนำเข้าใหม่ได้ทุกเมื่อ รองรับการดาวน์โหลดราคาสินค้าโภคภัณฑ์/สินทรัพย์สำหรับการติดตามอย่างหุ้นด้วย
      กราฟยังไม่ทั่วไปพอสำหรับรสนิยมของผม/ฉัน จึงส่งออกข้อมูลไปที่อื่น แต่สำหรับการป้อนข้อมูลถือว่ายอดเยี่ยม
    • เคยเจอกรณีที่รายการ PDF ซึ่งธนาคารต้องจัดให้ตามกฎหมาย ไม่ตรงกับ CSV แถมใน CSV แทบไม่มีข้อมูลยอดคงเหลือ
      เลยต้องดาวน์โหลด PDF แล้วดึงข้อมูลออกมา ซึ่งเจ็บปวดเกินจำเป็นมาก การทำ PDF ที่เครื่องอ่านได้ง่าย แค่ทำตามกฎง่าย ๆ ก็พอ เพื่อให้ดึงฟิลด์ธุรกรรม 3–4 ช่อง และฟิลด์รายการเดินบัญชีอีกไม่กี่ช่องอย่างวันที่กับยอดคงเหลือได้ โดยไม่ต้องพึ่ง heuristic ที่เปราะบาง
      PDF ที่มีแบรนด์และอ่านง่ายสำหรับคน กับ PDF ที่อ่านง่ายสำหรับเครื่อง ไม่ได้ขัดแย้งกัน
    • ในสหราชอาณาจักรมี Open Banking ซึ่งเป็น API มาตรฐานสำหรับการเข้าถึงข้อมูลธนาคาร: https://www.openbanking.org.uk/
    • ในประเทศของเรา ธุรกรรมทั้งหมดส่งมาทาง SMS จึงสร้างระบบด้วย Tasker เพื่อดัก SMS แล้วบันทึกลงไฟล์ CSV แล้วเอา CSV นั้นใส่ไว้ในโฟลเดอร์ที่ซิงก์ไปยังเดสก์ท็อปด้วย SyncThing
      ตั้งใจว่าจะประมวลผลข้อมูลนั้นแล้วใส่เข้าระบบบัญชี แต่ไม่ได้ทำจริง และต่อมาโทรศัพท์พังจนแอ็กชันของ Tasker ก็หายไปด้วย ตอนนี้ไม่เหลือแรงจูงใจจะทำใหม่แล้ว
  • โดเมนที่เกี่ยวข้องยังคงอยู่เหมือนเดิม บทความปี 2023: https://news.ycombinator.com/item?id=36022005, บทความปี 2021: https://news.ycombinator.com/item?id=28420797, บทความปี 2016: https://news.ycombinator.com/item?id=11164330
    ดูการกล่าวถึงแนวคิดนี้เพิ่มเติมได้ที่ https://hn.algolia.com/?q=Plain+Text+Accounting

  • อยากรู้ว่าคนอื่น ๆ ใช้เครื่องมือบัญชีแบบข้อความล้วนจริง ๆ กันอย่างไร อยากรู้ว่าใช้เพื่อทำความเข้าใจพฤติกรรมการใช้จ่ายและเปลี่ยนพฤติกรรม ใช้เพื่อติดตามค่าใช้จ่าย·รายได้·มูลค่าสุทธิ หรือแค่ กระบวนการที่เป็นระเบียบในตัวมันเอง ที่น่าดึงดูดกันแน่
    ทุกครั้งที่เห็นหัวข้อนี้ จะรู้สึกทั้งอยากทุ่มตัวลงไปให้เต็มที่ และรู้สึกผิดที่เคยลองแล้วทำต่อเนื่องไม่ได้ไปพร้อมกัน ตอนนี้ไม่ได้อัปเดตสมุดบัญชีส่วนตัวมาเดือนครึ่งแล้ว เลยรู้สึกผิดมากกว่า
    สุดท้ายเพราะไม่มั่นใจว่าตัวเองใช้สิ่งนี้ไปทำไม พอเวลาผ่านไปก็เหมือนบันทึกธุรกรรมเพียงเพื่อบันทึกเท่านั้น

    • ผมใช้เสมอกับ การหารค่าใช้จ่ายกลุ่ม แบบเฉพาะหน้า ในสถานการณ์อย่างคนสามคนไปเที่ยวด้วยกัน การแบ่งค่าใช้จ่ายในวันนั้นหรือช่วงปลายสัปดาห์จะง่ายกว่ามาก และค่อยสะสมความสัมพันธ์เรื่องหนี้ไว้แล้วเคลียร์เมื่อจำเป็น ค่าใช้จ่ายยุ่ง ๆ แบบนี้ติดตามด้วยวิธีอื่นได้ยากมาก
      ค่าใช้จ่ายในการทำงานก็คล้ายกัน ผมจ่ายค่าอุปกรณ์หรือบริการด้วยบัตรของตัวเอง แล้วค่อยรายงานภายหลังเพื่อรับเงินคืนเป็นเงินสดหรือโอนเข้าบัญชี แต่บางประเทศหรือบางธุรกิจก็ใช้วิธีนี้ไม่ได้
      ค่าใช้จ่ายส่วนตัวในชีวิตประจำวันนั้นดูจากธนาคารและประสบการณ์ก็รู้อยู่แล้ว จึงไม่จำเป็นต้องทำบัญชีด้วย ต้องมีแรงจูงใจแบบ ตัวเงิน ไม่ใช่แรงจูงใจทางอารมณ์ ถ้ารู้ว่าการเลิกทำบัญชีจะทำให้เพื่อนเสียเงินหลายร้อยดอลลาร์ไปกับค่าเหล้า หรือทำให้บริษัทได้สาย HDMI ไปฟรี ๆ หนึ่งเส้น ก็จะกรอกจำนวนเงินโดยไม่ลังเล เหตุผลที่บัญชีส่วนตัวมักไปไม่รอดคือสิ่งที่เสียไปไม่ใช่เงิน แต่เป็นแค่การวิเคราะห์เท่านั้น
    • ผมเป็นฟรีแลนซ์ จึงใช้ Beancount กับบัญชีธุรกิจและพอร์ตหุ้น ชอบแนวทางที่เข้มงวดกว่า และ Fava ซึ่งเป็นเว็บ UI ก็สะดวกสำหรับรายงานและการแสดงผลเป็นภาพ
      มีสคริปต์อยู่บ้างสำหรับทำกระบวนการต่าง ๆ ให้เป็นอัตโนมัติ เช่น นำเข้าธุรกรรม Wise หรือคอยติดตามอัตราแลกเปลี่ยน แต่ไม่มีวินัยพอจะใช้กับค่าใช้จ่ายส่วนตัวรายวันหรือการจัดงบประมาณ
    • ไม่ได้ใช้เป็นเครื่องมือสร้างแรงจูงใจเพื่อเปลี่ยนพฤติกรรมการใช้จ่าย แต่ชอบการเก็บบันทึกบัญชีและสินทรัพย์ทั้งหมดไว้ ทำให้เข้าใจสถานะการเงินโดยรวมได้ดีขึ้น และสร้าง บัญชีเสมือน ไว้ภายในบัญชีออมทรัพย์ที่มีสภาพคล่อง เพื่อแบ่งยอดคงเหลือตามรายการที่กันเงินไว้ เช่น ค่าบำรุงรักษารถหรือประกัน
    • ใช้ hledger หลายอย่าง ติดตามลูกหนี้การค้า การจัดหมวดค่าใช้จ่ายอย่างอาหาร ของกินนอกบ้าน หนังสือ และสมาชิกนิตยสาร ยอดคงเหลือปัจจุบันของบัญชีหลายสกุลเงิน เงินที่ให้คนอื่นยืมและของขวัญ รวมถึง ซองเงินเสมือน สำหรับการออมอย่างทริป ของขวัญ และเป้าหมายการลงทุน
      การได้เช็กว่าทุกวันเสียเงินกับการกินข้างนอกไปเท่าไร และลองคำนวณผลลัพธ์ทบต้นหากเอาเงินจำนวนนั้นไปลงกองทุนดัชนี ช่วยลดนิสัยกินนอกบ้านได้มาก ยังสามารถแยกดูลูกหนี้การค้า กระแสเงินสดจริง และกระแสเงินสดตามรายได้คาดการณ์ได้ด้วย
      พอลองแบ่งยอดบัญชีออมทรัพย์ในใจเป็น “เป้าหมายการลงทุน 40%, ของขวัญ 1%” ก็ลดการเห็นยอดใหญ่แล้วเผลอใช้จ่ายตามอารมณ์ลงได้ มีโปรแกรมที่ทำกราฟการเพิ่มขึ้นของสินทรัพย์ การเพิ่ม·ลดของค่าใช้จ่ายแต่ละหมวด และบันทึกว่าการเปลี่ยนแปลงนั้นส่งผลสุทธิต่อชีวิตหรือไม่ แล้ว dump ออกมาเป็นเว็บเพจ ใช้ตอนวางแผนปีถัดไปทุกปี
      มีสคริปต์ Python ที่แปลงไฟล์ ledger เป็น Excel แล้วส่งให้ accountant เพื่อยื่นภาษีประจำปีด้วย ไฟล์ ledger สำหรับธุรกิจแยกไว้อีกชุด ไม่ได้ดูแลด้วยมือเองโดยตรง แต่ export ข้อมูลจากซอฟต์แวร์ของ accountant แล้วมาคำนวณเองที่บ้าน
      ในธุรกิจ ใช้ทำประมาณการกระแสเงินสดเพื่อคาดการณ์ว่าค่าใช้จ่ายจะเพิ่มอย่างไรตามยอดขายที่เพิ่มขึ้น ใช้ตรวจจับ outlier ของค่าใช้จ่ายตามแผนก ใช้ตัดสินใจว่าจะเพิ่มการจ้างงานหรือเพิ่มงบการตลาด และใช้คำนวณตัวชี้วัดอย่าง ROIC
      การทำบัญชีคู่ช่วยในการนำเข้าใบแจ้งยอดธนาคารเพื่อสร้าง ledger แล้วจับความไม่ตรงกันทางบัญชี แยกบัญชีตามวัตถุประสงค์ เช่น ค่าใช้จ่ายตามดุลยพินิจ สวัสดิการพนักงาน และต้นทุนที่ใส่เข้าไปในธุรกิจ แล้วให้โอนเงินจากบัญชีหลักเข้ามาทุกสัปดาห์เพื่อตรวจดูความผิดปกติ
      เคยมี accountant ที่ไม่พูดอย่างโปร่งใสและลงค่าใช้จ่ายปลอมในสมุดบัญชี ทำให้ดูเหมือนประหยัดภาษีได้มาก สุดท้ายต้องขึ้นศาลและจ่ายค่าปรับก้อนใหญ่พร้อมเงินเพิ่มจากการชำระล่าช้า ตอนนี้จึงไม่เชื่อ accountant และต้องตรวจซ้ำเองเสมอ
      มีสคริปต์อัตโนมัติจำนวนมากสำหรับนำเข้า Stripe, ใบแจ้งยอดธนาคาร, สมุดบัญชีของ accountant ฯลฯ แล้วใช้ Python เทียบกันเพื่อหาความไม่ตรงกัน สำหรับผมซึ่งเป็นโปรแกรมเมอร์ บัญชีแบบข้อความล้วนเข้ากันได้ดี และผมสร้างระบบของตัวเองบน hledger มาหลายปีแล้ว