Spec - CAFECA-IO/iSunFA GitHub Wiki

Link

Certificate and invoice

(Beta)Certificate api-20240923112259054

Certificate API規劃 #2872

378667394-8efad5f3-df78-4347-861d-65189bdb2319

User Story

  • 一樣需要紀錄還沒read的比數

User Story

  • To Be Continue

Certificate and Invoice

Report(2024/09/27更新)

  • To Be Continue

User Story

  • 目前不需要做下面的結帳年限設定,以及也沒有限制用戶多久以前的傳票不能開(2024/09/27更新) image

Note

需要新增一個api可以下載拋轉結束後的財報

Voucher (2024/10/4更新)

Connect

  • Anna
  • Jodie
  • Murky

Diagram

Add Voucher

Flow Chart

AI Related

voucherAI

User Story

  1. General

    • Counterparty invoice和 lineItem都需要有(voucher上的counterparty移過去,lineItem只有在payable/receivable的時候會有
    • 所有List voucher都需要回傳未讀的數量
    • Voucher List當中呈現的日期是 用戶自己選定的日期,也就是voucher date (beta) or journal->invoice->date (alpha), 然後voucher流水號是用createAt(2024/09/27更新)
    • Voucher目前可以讓用戶自由的決定voucherDate, 就算是以前的也可以,但是需要跳通知提醒用戶不應該這麼做(例子如下)(2024/09/27更新)
      • 提醒用戶每個月底與跨年前應將本月帳務確實完成登打
      • 當用戶想登打或編輯上個月或去年的帳時,很可能是手誤,應予以提示
      • 若用戶執意登打或編輯仍要與許其登打,避免其連續受罰
      • 當用戶登打的收據,帳務發生日已經由會計師開立會計報表時(EX: 已出具 2023 年三大會計報表,登打 2023-09-27 帳單)、已超出書審期限時、是去年以前的帳時,其傳票應加上逾期標註,用於未來產生報表時建立保留盈餘等會計科目修正說明
      • 逾期登打的收據無法扣抵稅額 (法律上規定的有第四點逾期登打的收據應該還是可以扣抵的~ 有10年的限期) image
  2. List all "Uploaded" Vouchers

    • vocuher需要有一個可以直接找出特定一個account的 query (2024/10/4)
    • 可以SortBy Issue Date, Credit, Debit
    • 可以選擇StartDate, endDate來篩選Voucher
    • 可以點擊一個Vouvher連接到Voucher Info
    • 可以Search by 各個欄位
    • 會顯示總共有多少筆, 現在在第幾頁, 是不是有上或下一頁, 總共有幾頁
    • 每一筆Voucher應該要顯示:
      • voucher date 用戶自己設定的date
      • Voucher No (傳票編號)
      • Note 註記
      • 顯示每一筆line items, 需要有 account 名稱, debit credit的數字,還有加總結果
      • Counter Party (voucher的對象是誰)
      • Issuer(作者)
    • 可以打勾多筆Voucher並一次性刪除
    • 可以下載CSV檔
    • image
    • Type and date:
    • image
  3. List all "Upcoming" Vouchers

    • 需要回傳未讀的數量
    • 和"Uploaded" Vouchers 外表類似,但是多加了Period (裡面包含 Every Month or Week or Year, 以及Week 是星期幾或是Month or Year是哪一天)
    • 來源是 1. voucher create 的時候選擇Recursive 2. asset的折舊
    • Sort 也需要 可以用Period去sort
  4. List all Payable/ Receivables

    • 本質上也是voucher list, 但是是特別只有 lineitem裡面有 Account Receivable, Account Payment, other Receivable. other Payment
    • 欄位需要呈現:
      • voucher date 用戶自己設定的date
      • Voucher No (傳票編號)
      • Counter Party (voucher的對象是誰)
      • Issuer(作者)
      • Receivables/Payable總共會收多少錢
      • 已經收/付 多少錢
      • 剩下來多少錢
      • 需要紀錄清賬的時候要列出來清賬分錄的voucherId
    • 會顯示總共有多少筆, 現在在第幾頁, 是不是有上或下一頁, 總共有幾頁
    • 可以Search by 各個欄位
    • image 4 .List all voucher by Account
    • 這個api特別只展示出一個 "account"分類下所有 "未沖帳完成的voucher"
  5. List all LineItem by account

    • 還是從voucher出發,但是會回傳 voucher 上面同時滿足: 1. lineItems 是可沖帳的 account, 2. lineItems尚未沖帳完成 的部份
    • 要回傳 account-voucher-description-原始金額的資訊 image
  6. GET one voucher

    • 可以看到 certificates, certificates要有總數與分頁
    • 需要呈現Voucher date, voucher type, note, counter party的資訊
    • 如果有Recursive屬性需要寫上持續時間以及 頻率 與發生星期幾或是每月第幾天或是每年的哪一天
    • 如果有Asset 屬性需要 把asset的編好list出來
    • 如果有清賬屬性,需要把清賬對應的傳票列出來
    • image
    • image
  7. ADD/PUT Voucher => 請先參考flow chart

    • PUT Voucher 並不是去修正原本的傳票,而是開一個新的修正Voucher,需要與原本被編輯的voucher相連(2024/09/27更新)
    • voucherNo 不可以是unique(不同公司會撞No), 另外upcoming event 會是null
    • if recurring, 要同時建立event和剩餘所有的upcoming 的voucher, voucherNo是null, issuer要是機器人 (記得要在seeder裡面加一個所有公司共用的機器人)
    • 增添或是重製的時候的需要連到exist的asset
    • voucher 如果有recurring的話,需要在第一間voucher建立好的
    • 需要設定cronJob自動將upcoming變成uploaded
    • 如果put Recurring event, 要修改所有 "Upcoming event"的voucher, 不要修改"uploaded event"
    • 目前暫定 如果 put/delete的時候voucher date 壓當天
    • Put Voucher的邏輯拆分如下 2024/11/14
      • 如果畫面中lineItem的部份被更改的話,請前端直接call Delete Voucher 加上 Post Voucher, 這個時候會直接把原本的分錄創一個反轉的分錄產生對沖的效果 (但最原始的voucher與lineItem還是保持成未刪除狀態), 然後再創一個新的voucher
      • 如果是修改lineItems以外的部份(也就是說像是voucherDate,Description, voucherType, CounterParty, Asset, Reverse之間的關係)就用Put Voucher然後修改原本的voucher image
  8. Delete Voucher

    • Delete voucher不可以真的刪掉,而是做一個迴轉voucher, 被"delete"的voucher需要更新deleteAt,並且迴轉voucher需要與被"delete" voucher連接(2024/09/27更新)
  9. Check Read

    • 需要有一個table 紀錄user-voucher read的關係,關係會是 userId, voucherId, isRead, updateAt, createAt, isRead Default false
    • 未讀的voucher會有一個未讀的記號
    • 如果掃過頁面(也就是進入到list array的時候)就把畫面上所有的voucher都改成Read (已經read過得就不用update了) 然後更新數字 要事先get list => POST read的順序
    • 如果有更改狀態像是 Upcoming => Uploaded的時候要把isRead 變回false
  10. Export PDF

    • Export的時候直接下載PDF
    • 需要前端來執行

Asset (2024/09/26更新)

Connect

  • Anna
  • Straw
  • Murky

User Story

  1. 列出所有的 asset 列表,它需要

    • 每一個Row 有Acquisition day, type, 財產編號, 財產名稱, 購買金額, 累計折舊, 殘值, 剩餘天數
    • 可以依照type(是不動產、廠房、設備的大科目) 找出asset
    • 可以依照status,也就是資產目前是在 公司內部, 廢棄, 賣出等等狀態
    • 可以用 獲取時間(Acquisition day)篩取範圍
    • 可以用Search 找到 資產(不確定要search的欄位,也許資產編號和名稱?)
    • 可以用Pagination(需要符合Ipagination data type)
    • 可以把asset list 轉成csv?
    • image
    • 可以修改資產狀態
    • image

    Type

    image

    Status

    image

  2. 單一一筆Asset呈現 2024-10-09_14-43

    • 要有 Asset name, Asset 編號, Asset Type會計科目, Acquisition day 獲得時間, Depreciation start date 折舊開始時間, Depreciate method 折舊方法(像是直線法), useful life可使用總時間, purchase price購買金額, currency alias幣種? , accumulate depreciation 累計折舊, residual value (這裡不是指最後估計可以賣多少錢, 而是指purchase price - accumulate depreciation), remaining useful life 剩餘使用期間, note, voucherId (購買這個asset的時候的voucher)

[!Warning] 刪除Asset 之後,要連同以前和這個Asset有關的所有voucher都要刪掉(或沖轉?),包含像是購買和折舊

    • image
    • 可以修改asset state
    • image
  1. Add Asset to voucher

    • Asset 在建立的時候要一起建立 折舊費用
    • Add Asset 的時候要紀錄折舊方法,會有下拉選單,但是會預設是直線法,
    • 需要紀錄殘值,填一個數字但預設是0
    • 建立Asset之後需要提醒它幾天之後就不可以刪除了(送出的時候)
    • 不需要有特殊欄位紀錄是 成本模式、
    • 進入到下面這個畫面的方法是在voucher 的欄位中選
    • 可以增加Asset連到voucher(這邊應該坐在vouhcer)
    • image
    • 增加Asset點下去之後需要增加下面這些值存在database
    • 也要可以修改asset資訊
    • 另外在New的時候就需要把所有以後的折舊的分錄放在Upcoming Event
    • image
  2. 在 upcoming event裡面,要列出資產未來可能產生的折舊(在新增Asset的時候增加)

    • image
  3. Delete Asset

    • 今天如果有任何傳票掛到這間公司上面(除了購買傳票之外)就不可以刪除
    • 刪除功能指的是幫它開一個沖銷分錄,然後資產deleteAt加數字,被刪除的資產用戶看不到

Ledger

User Story (

  • 如果是屬於 可以沖帳的科目 (請參考 會計科目表 中綠色的科目),如果該原始傳票已經被全部沖乾淨,就不會顯示在ledger裡面
  • (2024/10/28) 上面的資訊是錯的,ledger呈現所有該哥目的傳票,Report點進去的傳票才會限制是沒有沖帳完成的