<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>beancount on TripleZ&#39;s Blog</title>
    <link>https://blog.triplez.cn/tags/beancount/</link>
    <description>Recent content in beancount on TripleZ&#39;s Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-cn</language>
    <lastBuildDate>Tue, 10 Aug 2021 22:38:24 +0800</lastBuildDate><atom:link href="https://blog.triplez.cn/tags/beancount/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>浅谈 beancount 借款还款交易记录方法</title>
      <link>https://blog.triplez.cn/posts/beancount-lend-return-bookkeeping-method/</link>
      <pubDate>Tue, 10 Aug 2021 22:38:24 +0800</pubDate>
      
      <guid>https://blog.triplez.cn/posts/beancount-lend-return-bookkeeping-method/</guid>
      <description>本文基于的假设是：友人 A 需要购买产品 B，但需要你来代他购买。探讨几种事件发生顺序的记账方法。</description>
      <content:encoded><![CDATA[<p>本文基于的假设是：友人 A 需要购买产品 B，但需要你来代他购买。探讨以下几种事件发生顺序的记账方法。</p>
<p>除了自己已有的 <code>Assets:Bank:Z</code> 外，需要额外建立这些账户：</p>
<ul>
<li><code>Assets:Receivables:A</code></li>
</ul>
<h2 id="先转账再交易">先转账，再交易</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt" id="hl-0-1"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-1"> 1</a>
</span><span class="lnt" id="hl-0-2"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-2"> 2</a>
</span><span class="lnt" id="hl-0-3"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-3"> 3</a>
</span><span class="lnt" id="hl-0-4"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-4"> 4</a>
</span><span class="lnt" id="hl-0-5"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-5"> 5</a>
</span><span class="lnt" id="hl-0-6"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-6"> 6</a>
</span><span class="lnt" id="hl-0-7"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-7"> 7</a>
</span><span class="lnt" id="hl-0-8"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-8"> 8</a>
</span><span class="lnt" id="hl-0-9"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-9"> 9</a>
</span><span class="lnt" id="hl-0-10"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-10">10</a>
</span><span class="lnt" id="hl-0-11"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-11">11</a>
</span><span class="lnt" id="hl-0-12"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-12">12</a>
</span><span class="lnt" id="hl-0-13"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-13">13</a>
</span><span class="lnt" id="hl-0-14"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-14">14</a>
</span><span class="lnt" id="hl-0-15"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-15">15</a>
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">; 转账
</span></span><span class="line"><span class="cl">0000-00-00 * &#34;A transfer money&#34;
</span></span><span class="line"><span class="cl">  Assets:Receivables:A -1000.00 CNY
</span></span><span class="line"><span class="cl">  Assets:Bank:Z         1000.00 CNY
</span></span><span class="line"><span class="cl">  
</span></span><span class="line"><span class="cl">; 此时 Assets:Bank:Z 账户起着代持资金的作用。
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">; 交易
</span></span><span class="line"><span class="cl">0000-00-01 * &#34;Buy B for A&#34;
</span></span><span class="line"><span class="cl">  Assets:Bank:Z         -1000.00 CNY  
</span></span><span class="line"><span class="cl">  Assets:Receivables:A   1000.00 CNY
</span></span><span class="line"><span class="cl">  
</span></span><span class="line"><span class="cl">; 整个过程结束后各账户余额：
</span></span><span class="line"><span class="cl">; Assets:Bank:Z             0.00 CNY
</span></span><span class="line"><span class="cl">; Assets:Receivables:A      0.00 CNY
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="先交易再转账垫付">先交易，再转账（垫付）</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt" id="hl-1-1"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-1"> 1</a>
</span><span class="lnt" id="hl-1-2"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-2"> 2</a>
</span><span class="lnt" id="hl-1-3"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-3"> 3</a>
</span><span class="lnt" id="hl-1-4"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-4"> 4</a>
</span><span class="lnt" id="hl-1-5"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-5"> 5</a>
</span><span class="lnt" id="hl-1-6"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-6"> 6</a>
</span><span class="lnt" id="hl-1-7"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-7"> 7</a>
</span><span class="lnt" id="hl-1-8"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-8"> 8</a>
</span><span class="lnt" id="hl-1-9"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-9"> 9</a>
</span><span class="lnt" id="hl-1-10"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-10">10</a>
</span><span class="lnt" id="hl-1-11"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-11">11</a>
</span><span class="lnt" id="hl-1-12"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-12">12</a>
</span><span class="lnt" id="hl-1-13"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-13">13</a>
</span><span class="lnt" id="hl-1-14"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-14">14</a>
</span><span class="lnt" id="hl-1-15"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-15">15</a>
</span><span class="lnt" id="hl-1-16"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-16">16</a>
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">; 交易（垫付）
</span></span><span class="line"><span class="cl">0000-00-00 * &#34;Buy B for A&#34;
</span></span><span class="line"><span class="cl">  Assets:Receivables:A  1000.00 CNY
</span></span><span class="line"><span class="cl">  Assets:Bank:Z        -1000.00 CNY
</span></span><span class="line"><span class="cl">  
</span></span><span class="line"><span class="cl">; 此时 Assets:Bank:Z 账户起着垫付资金的作用，
</span></span><span class="line"><span class="cl">; Assets:Receivables:A 用于应收来自 A 的款项。
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">; 转账（还款）
</span></span><span class="line"><span class="cl">0000-00-01 * &#34;A transfer money&#34;
</span></span><span class="line"><span class="cl">  Assets:Bank:Z          1000.00 CNY
</span></span><span class="line"><span class="cl">  Assets:Receivables:A  -1000.00 CNY
</span></span><span class="line"><span class="cl">  
</span></span><span class="line"><span class="cl">; 交易结束后各账户余额：
</span></span><span class="line"><span class="cl">; Assets:Bank:Z             0.00 CNY
</span></span><span class="line"><span class="cl">; Assets:Receivables:A      0.00 CNY
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="转账和交易同步">转账和交易同步</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt" id="hl-2-1"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-2-1"> 1</a>
</span><span class="lnt" id="hl-2-2"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-2-2"> 2</a>
</span><span class="lnt" id="hl-2-3"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-2-3"> 3</a>
</span><span class="lnt" id="hl-2-4"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-2-4"> 4</a>
</span><span class="lnt" id="hl-2-5"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-2-5"> 5</a>
</span><span class="lnt" id="hl-2-6"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-2-6"> 6</a>
</span><span class="lnt" id="hl-2-7"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-2-7"> 7</a>
</span><span class="lnt" id="hl-2-8"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-2-8"> 8</a>
</span><span class="lnt" id="hl-2-9"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-2-9"> 9</a>
</span><span class="lnt" id="hl-2-10"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-2-10">10</a>
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">; 转账+交易
</span></span><span class="line"><span class="cl">0000-00-00 * &#34;A transfer money to buy B&#34;
</span></span><span class="line"><span class="cl">  Assets:Receivables:A -1000.00 CNY
</span></span><span class="line"><span class="cl">  Assets:Bank:Z         1000.00 CNY
</span></span><span class="line"><span class="cl">  Assets:Bank:Z        -1000.00 CNY
</span></span><span class="line"><span class="cl">  Assets:Receivables:A  1000.00 CNY
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">; 交易结束后各账户余额：
</span></span><span class="line"><span class="cl">; Assets:Bank:Z              0.00 CNY
</span></span><span class="line"><span class="cl">; Assets:Receivables:A       0.00 CNY
</span></span></code></pre></td></tr></table>
</div>
</div>]]></content:encoded>
    </item>
    
    <item>
      <title>月度记账工作流</title>
      <link>https://blog.triplez.cn/posts/monthly-bookkeeping-workflow/</link>
      <pubDate>Sun, 27 Jun 2021 12:57:49 +0800</pubDate>
      
      <guid>https://blog.triplez.cn/posts/monthly-bookkeeping-workflow/</guid>
      <description>个人记账工作流记录</description>
      <content:encoded><![CDATA[<h2 id="准备工作">准备工作</h2>
<ul>
<li>一部装有 <code>beancount</code> 、<code>fava</code> 以及 <code>double-entry-generator</code> 的 Mac 或 PC。</li>
<li>一部 iPhone 或 Android 手机。</li>
<li>本地存储个人 <code>my-bookkeepings</code> 账本最新内容。</li>
</ul>
<h2 id="开始工作">开始工作！</h2>
<details>
<summary>Balance CheatSheet</summary>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt" id="hl-0-1"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-1"> 1</a>
</span><span class="lnt" id="hl-0-2"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-2"> 2</a>
</span><span class="lnt" id="hl-0-3"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-3"> 3</a>
</span><span class="lnt" id="hl-0-4"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-4"> 4</a>
</span><span class="lnt" id="hl-0-5"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-5"> 5</a>
</span><span class="lnt" id="hl-0-6"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-6"> 6</a>
</span><span class="lnt" id="hl-0-7"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-7"> 7</a>
</span><span class="lnt" id="hl-0-8"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-8"> 8</a>
</span><span class="lnt" id="hl-0-9"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-9"> 9</a>
</span><span class="lnt" id="hl-0-10"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-10">10</a>
</span><span class="lnt" id="hl-0-11"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-11">11</a>
</span><span class="lnt" id="hl-0-12"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-12">12</a>
</span><span class="lnt" id="hl-0-13"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-13">13</a>
</span><span class="lnt" id="hl-0-14"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-14">14</a>
</span><span class="lnt" id="hl-0-15"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-15">15</a>
</span><span class="lnt" id="hl-0-16"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-0-16">16</a>
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">; wechat pay balance
</span></span><span class="line"><span class="cl">0000-00-00 document Assets:Digital:Wechat:Cash &#34;./path/to/your_wechat_bills.csv&#34;
</span></span><span class="line"><span class="cl">0000-00-01 balance  Assets:Digital:Wechat:Cash    &lt;balance_value&gt; ~ 0.00 CNY
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">; alipay balance
</span></span><span class="line"><span class="cl">0000-00-00 document Assets:Digital:Alipay:Cash &#34;./path/to/your_alipay_bills.csv&#34;
</span></span><span class="line"><span class="cl">0000-00-01 balance  Assets:Digital:Alipay:Cash    &lt;balance_value&gt; ~ 0.00 CNY
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">; bank balance
</span></span><span class="line"><span class="cl">0000-00-01 balance Assets:Bank:CN:ICBC:Savings          &lt;balance_value&gt; ~ 0.00 CNY
</span></span><span class="line"><span class="cl">0000-00-01 balance Assets:Bank:CN:ICBC:SocialSecurity   &lt;balance_value&gt; ~ 0.00 CNY
</span></span><span class="line"><span class="cl">0000-00-01 balance Assets:Bank:CN:BOCOM:Savings         &lt;balance_value&gt; ~ 0.00 CNY
</span></span><span class="line"><span class="cl">0000-00-01 balance Assets:Bank:CN:BOC:Savings           &lt;balance_value&gt; ~ 0.00 CNY
</span></span><span class="line"><span class="cl">0000-00-01 balance Liabilities:CreditCard:CN:ICBC       &lt;balance_value&gt; ~ 0.00 CNY
</span></span><span class="line"><span class="cl">1111-11-19 balance Liabilities:CreditCard:CN:CMB        &lt;balance_value&gt; ~ 0.00 CNY
</span></span><span class="line"><span class="cl">1111-11-20 balance Liabilities:CreditCard:CN:BOCOM      &lt;balance_value&gt; ~ 0.00 CNY
</span></span></code></pre></td></tr></table>
</div>
</div></details>
<h3 id="导入微信支付账单">导入微信支付账单</h3>
<p>先查看上月微信 beancount 账单，确定最后导入日。</p>
<p>在<a href="https://blog.triplez.cn/posts/bills-export-methods/#%E5%BE%AE%E4%BF%A1%E6%94%AF%E4%BB%98">「微信」中导出</a>从最后导入日至今日的微信支付账单。</p>
<p>使用如下命令生成账单：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt" id="hl-1-1"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-1">1</a>
</span><span class="lnt" id="hl-1-2"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-2">2</a>
</span><span class="lnt" id="hl-1-3"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-3">3</a>
</span><span class="lnt" id="hl-1-4"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-4">4</a>
</span><span class="lnt" id="hl-1-5"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-1-5">5</a>
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">double-entry-generator translate <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --config ./config/double-entry-generator/wechat.yaml <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --provider wechat <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --output tmp-wechat.beancount <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  your_wechat_bills.csv
</span></span></code></pre></td></tr></table>
</div>
</div><p>修改相关 <code>FIXME</code> 账户交易（posting）。</p>
<p>在当月 <code>index.beancount</code> 中添加微信支付的相关 <code>balance</code> 和 <code>document</code> 语句，例：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt" id="hl-2-1"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-2-1">1</a>
</span><span class="lnt" id="hl-2-2"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-2-2">2</a>
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">0000-00-00 document Assets:Digital:Wechat:Cash &#34;./path/to/your_wechat_bills.csv&#34;
</span></span><span class="line"><span class="cl">0000-00-01 balance  Assets:Digital:Wechat:Cash    &lt;balance_value&gt; ~ 0.00 CNY
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p><code>balance</code> 日期必须为 <code>T+1</code>，否则语句会忽略今日交易，导致对账失败。</p>
<p>若对账失败，特别是小额差异，极有可能是「零钱通」发放利息所致。值得注意的是，微信「零钱通」的利息发放并不包括在微信导出的账单当中。</p>
<p>值得注意的是，从「理财通」转入至「银行卡」的交易，微信支付是没有记录的，见<a href="https://github.com/deb-sig/double-entry-generator/issues/29#issuecomment-888331269">这里</a>。</p>
</blockquote>
<h3 id="导入支付宝账单">导入支付宝账单</h3>
<p>先查看上月支付宝 beancount 账单，确定最后导入日。</p>
<p>在<a href="https://blog.triplez.cn/posts/bills-export-methods/#%E6%94%AF%E4%BB%98%E5%AE%9D">「支付宝」导出</a>从最后导入日至今日的支付宝账单。</p>
<p>使用如下命令生成账单：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt" id="hl-3-1"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-3-1">1</a>
</span><span class="lnt" id="hl-3-2"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-3-2">2</a>
</span><span class="lnt" id="hl-3-3"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-3-3">3</a>
</span><span class="lnt" id="hl-3-4"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-3-4">4</a>
</span><span class="lnt" id="hl-3-5"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-3-5">5</a>
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">double-entry-generator translate <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --config ./config/double-entry-generator/alipay.yaml <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --provider alipay <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --output tmp-alipay.beancount <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  your_alipay_bills.csv
</span></span></code></pre></td></tr></table>
</div>
</div><p>修改相关 <code>FIXME</code> 账户交易（posting）。</p>
<p>在当月 <code>index.beancount</code> 中添加支付宝的相关 <code>balance</code> 和 <code>document</code> 语句，例：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt" id="hl-4-1"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-4-1">1</a>
</span><span class="lnt" id="hl-4-2"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-4-2">2</a>
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">0000-00-00 document Assets:Digital:Alipay:Cash &#34;./path/to/your_alipay_bills.csv&#34;
</span></span><span class="line"><span class="cl">0000-00-01 balance  Assets:Digital:Alipay:Cash    &lt;balance_value&gt; ~ 0.00 CNY
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p><code>balance</code> 日期必须为 <code>T+1</code>，否则语句会忽略今日交易，导致对账失败。</p>
</blockquote>
<h3 id="导入火币账单">导入火币账单</h3>
<p>（可选，依据月度是否有火币交易）</p>
<p>先查看上月火币 beancount 账单，确定最后导入日。</p>
<p>在<a href="https://blog.triplez.cn/posts/bills-export-methods/#%E7%81%AB%E5%B8%81-global">「火币」导出</a>从最后导入日至今日的火币账单。</p>
<p>使用如下命令生成账单：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt" id="hl-5-1"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-5-1">1</a>
</span><span class="lnt" id="hl-5-2"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-5-2">2</a>
</span><span class="lnt" id="hl-5-3"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-5-3">3</a>
</span><span class="lnt" id="hl-5-4"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-5-4">4</a>
</span><span class="lnt" id="hl-5-5"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-5-5">5</a>
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">double-entry-generator translate <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --config ./config/double-entry-generator/huobi.yaml <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --provider huobi <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --output tmp-huobi.beancount <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  your_huobi_bills.csv
</span></span></code></pre></td></tr></table>
</div>
</div><p>修改相关 <code>FIXME</code> 账户交易（posting）。</p>
<h3 id="导入中国工商银行账单">导入中国工商银行账单</h3>
<p>先查看上月工商银行 beancount 账单，确定最后导入日。</p>
<p>在<a href="https://blog.triplez.cn/posts/bills-export-methods/#%E4%B8%AD%E5%9B%BD%E5%B7%A5%E5%95%86%E9%93%B6%E8%A1%8C">「中国工商银行」导出</a>从最后导入日至今日中国工商银行的借记卡和信用卡账单。</p>
<p>使用如下命令生成账单：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt" id="hl-6-1"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-6-1"> 1</a>
</span><span class="lnt" id="hl-6-2"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-6-2"> 2</a>
</span><span class="lnt" id="hl-6-3"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-6-3"> 3</a>
</span><span class="lnt" id="hl-6-4"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-6-4"> 4</a>
</span><span class="lnt" id="hl-6-5"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-6-5"> 5</a>
</span><span class="lnt" id="hl-6-6"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-6-6"> 6</a>
</span><span class="lnt" id="hl-6-7"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-6-7"> 7</a>
</span><span class="lnt" id="hl-6-8"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-6-8"> 8</a>
</span><span class="lnt" id="hl-6-9"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-6-9"> 9</a>
</span><span class="lnt" id="hl-6-10"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-6-10">10</a>
</span><span class="lnt" id="hl-6-11"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-6-11">11</a>
</span><span class="lnt" id="hl-6-12"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-6-12">12</a>
</span><span class="lnt" id="hl-6-13"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-6-13">13</a>
</span><span class="lnt" id="hl-6-14"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-6-14">14</a>
</span><span class="lnt" id="hl-6-15"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-6-15">15</a>
</span><span class="lnt" id="hl-6-16"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-6-16">16</a>
</span><span class="lnt" id="hl-6-17"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-6-17">17</a>
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 生成贷记卡账单</span>
</span></span><span class="line"><span class="cl">double-entry-generator translate <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --config ./config/double-entry-generator/icbc-1120-5595.yaml <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --provider icbc <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --output tmp-icbc-1120-5595.beancount <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  your_icbc_1120_5595_bills.csv
</span></span><span class="line"><span class="cl"><span class="c1"># 生成借记卡账单</span>
</span></span><span class="line"><span class="cl">double-entry-generator translate <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --config ./config/double-entry-generator/icbc-9855.yaml <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --provider icbc <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --output tmp-icbc-9855.beancount <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  your_icbc_9855_bills.csv
</span></span><span class="line"><span class="cl">double-entry-generator translate <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --config ./config/double-entry-generator/icbc-5868.yaml <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --provider icbc <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  --output tmp-icbc-5868.beancount <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  your_icbc_5868_bills.csv
</span></span></code></pre></td></tr></table>
</div>
</div><p>修改相关 <code>FIXME</code> 账户交易（posting）。</p>
<p>在当月 <code>index.beancount</code> 中添加中国工商银行的相关 <code>balance</code> 和 <code>document</code> 语句，例：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt" id="hl-7-1"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-7-1">1</a>
</span><span class="lnt" id="hl-7-2"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-7-2">2</a>
</span><span class="lnt" id="hl-7-3"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-7-3">3</a>
</span><span class="lnt" id="hl-7-4"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-7-4">4</a>
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">0000-00-00 document Assets:Bank:CN:ICBC:Savings &#34;./path/to/your_icbc_debit_bills.csv&#34;
</span></span><span class="line"><span class="cl">0000-00-00 document Liabilities:CreditCard:CN:ICBC &#34;./path/to/your_icbc_credit_bills.csv&#34;
</span></span><span class="line"><span class="cl">0000-00-01 balance Assets:Bank:CN:ICBC:Savings          &lt;balance_value&gt; ~ 0.00 CNY
</span></span><span class="line"><span class="cl">0000-00-01 balance Liabilities:CreditCard:CN:ICBC       &lt;balance_value&gt; ~ 0.00 CNY
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="导入其他银行卡账单">导入其他银行卡账单</h3>
<p><code>double-entry-generator</code> 目前仅支持中国工商银行账单的转换，鉴于个人使用银行卡的交易较少（&lt;10 笔/月），可以直接使用手动记账。</p>
<p>打开：</p>
<ul>
<li>中国工商银行</li>
<li>招商银行</li>
<li>中国银行</li>
<li>交通银行</li>
</ul>
<p>先写一个 <code>T+1</code> 的 <code>balance</code> 对账语句，对相关的账户进行断言。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt" id="hl-8-1"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-8-1">1</a>
</span><span class="lnt" id="hl-8-2"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-8-2">2</a>
</span><span class="lnt" id="hl-8-3"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-8-3">3</a>
</span><span class="lnt" id="hl-8-4"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-8-4">4</a>
</span><span class="lnt" id="hl-8-5"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-8-5">5</a>
</span><span class="lnt" id="hl-8-6"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-8-6">6</a>
</span><span class="lnt" id="hl-8-7"><a style="outline: none; text-decoration:none; color:inherit" href="#hl-8-7">7</a>
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">0000-00-01 balance Assets:Bank:CN:ICBC:Savings          &lt;balance_value&gt; ~ 0.00 CNY
</span></span><span class="line"><span class="cl">0000-00-01 balance Assets:Bank:CN:ICBC:SocialSecurity   &lt;balance_value&gt; ~ 0.00 CNY
</span></span><span class="line"><span class="cl">0000-00-01 balance Assets:Bank:CN:BOCOM:Savings         &lt;balance_value&gt; ~ 0.00 CNY
</span></span><span class="line"><span class="cl">0000-00-01 balance Assets:Bank:CN:BOC:Savings           &lt;balance_value&gt; ~ 0.00 CNY
</span></span><span class="line"><span class="cl">0000-00-01 balance Liabilities:CreditCard:CN:ICBC       &lt;balance_value&gt; ~ 0.00 CNY
</span></span><span class="line"><span class="cl">1111-11-19 balance Liabilities:CreditCard:CN:CMB        &lt;balance_value&gt; ~ 0.00 CNY
</span></span><span class="line"><span class="cl">1111-11-20 balance Liabilities:CreditCard:CN:BOCOM      &lt;balance_value&gt; ~ 0.00 CNY
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p>笔者的信用卡账单分别是每月 1 日和 19 日出账，故将信用卡断言的日期设为当月 1 日以及 19 日。</p>
<p>工商银行信用卡可以看到实时余额，而招行和交行的只能在出账当天才可获得余额。因此工行信用卡可以直接断言当日余额，而招行、交行银行卡需要断言出账日与余额。</p>
<p>一般 <code>0000-00-01</code> 为记账当日 <code>T+1</code> ，而 <code>1111-11</code> 一般为记账当月的月份。</br>
🌰：若记账时间为 <code>2023-01-25</code> ，则 <code>0000-00-01</code> 应改为 <code>2023-01-26</code> ，<code>1111-11</code> 应改为 <code>2023-01</code> 。</p>
</blockquote>
<p>查找当月相关银行卡账单，手动记录在当月的 <code>index.beancount</code> 中。</p>
<h2 id="总结">总结</h2>
<p>以月为粒度，微信、支付宝账单基本都能够正常转换，整个工作流下来需要花费的时间成本在二十分钟以内。</p>
<p>使用 <a href="https://github.com/deb-sig/double-entry-generator/"><code>double-entry-generator</code></a> 能够基本实现个人记账期望，可以考虑固化该工作流，以长期使用。</p>
<h2 id="相关链接">相关链接</h2>
<ol>
<li>beancount/beancount</br>
<a href="https://github.com/beancount/beancount">https://github.com/beancount/beancount</a></li>
<li>beancount/fava</br>
<a href="https://github.com/beancount/fava">https://github.com/beancount/fava</a></li>
<li>deb-sig/double-entry-generator</br>
<a href="https://github.com/deb-sig/double-entry-generator">https://github.com/deb-sig/double-entry-generator</a></li>
<li>多种支付账户的账单导出及查看方法汇总</br>
<a href="https://blog.triplez.cn/posts/bills-export-methods/">https://blog.triplez.cn/posts/bills-export-methods/</a></li>
</ol>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
