Spec - CAFECA-IO/iSunFA GitHub Wiki
Link
Certificate and invoice
User Story
- 一樣需要紀錄還沒read的比數
User Story
- To Be Continue
Certificate and Invoice
- Certificate 是上傳的時候就開始分析(但是還是要前端幫忙用certificate id post)(2024/10/08更新)
- DOCS -Certificate API規劃 #2872
Report(2024/09/27更新)
- To Be Continue
User Story
- 目前不需要做下面的結帳年限設定,以及也沒有限制用戶多久以前的傳票不能開(2024/09/27更新)
Note
需要新增一個api可以下載拋轉結束後的財報
Voucher (2024/10/4更新)
Connect
- Anna
- Jodie
- Murky
Diagram
Add Voucher
Flow Chart
AI Related
User Story
-
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年的限期)
-
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檔
- Type and date:
-
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
-
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 各個欄位
- 4 .List all voucher by Account
- 這個api特別只展示出一個 "account"分類下所有 "未沖帳完成的voucher"
- 本質上也是voucher list, 但是是特別只有 lineitem裡面有
-
List all LineItem by account
- 還是從voucher出發,但是會回傳 voucher 上面同時滿足: 1. lineItems 是可沖帳的 account, 2. lineItems尚未沖帳完成 的部份
- 要回傳
account-voucher-description-原始金額
的資訊
-
GET one voucher
- 可以看到 certificates, certificates要有總數與分頁
- 需要呈現Voucher date, voucher type, note, counter party的資訊
- 如果有Recursive屬性需要寫上持續時間以及 頻率 與發生星期幾或是每月第幾天或是每年的哪一天
- 如果有Asset 屬性需要 把asset的編好list出來
- 如果有清賬屬性,需要把清賬對應的傳票列出來
-
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
的部份被更改的話,請前端直接callDelete Voucher
加上Post Voucher
, 這個時候會直接把原本的分錄創一個反轉的分錄產生對沖的效果 (但最原始的voucher與lineItem還是保持成未刪除狀態), 然後再創一個新的voucher - 如果是修改lineItems以外的部份(也就是說像是voucherDate,Description, voucherType, CounterParty, Asset, Reverse之間的關係)就用
Put Voucher
然後修改原本的voucher
- 如果畫面中
-
Delete Voucher
- Delete voucher不可以真的刪掉,而是做一個迴轉voucher, 被"delete"的voucher需要更新deleteAt,並且迴轉voucher需要與被"delete" voucher連接(2024/09/27更新)
-
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
- 需要有一個table 紀錄user-voucher read的關係,關係會是
-
Export PDF
- Export的時候直接下載PDF
- 需要前端來執行
Asset (2024/09/26更新)
Connect
- Anna
- Straw
- Murky
User Story
-
列出所有的 asset 列表,它需要
- 每一個Row 有Acquisition day, type, 財產編號, 財產名稱, 購買金額, 累計折舊, 殘值, 剩餘天數
- 可以依照type(是不動產、廠房、設備的大科目) 找出asset
- 可以依照status,也就是資產目前是在 公司內部, 廢棄, 賣出等等狀態
- 可以用 獲取時間(Acquisition day)篩取範圍
- 可以用Search 找到 資產(不確定要search的欄位,也許資產編號和名稱?)
- 可以用Pagination(需要符合
Ipagination
data type) - 可以把asset list 轉成csv?
- 可以修改資產狀態
Type
Status
-
單一一筆Asset呈現
- 要有 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都要刪掉(或沖轉?),包含像是購買和折舊
-
- 可以修改asset state
-
Add Asset to voucher
- Asset 在建立的時候要一起建立 折舊費用
- Add Asset 的時候要紀錄折舊方法,會有下拉選單,但是會預設是直線法,
- 需要紀錄殘值,填一個數字但預設是0
- 建立Asset之後需要提醒它幾天之後就不可以刪除了(送出的時候)
- 不需要有特殊欄位紀錄是 成本模式、
- 進入到下面這個畫面的方法是在voucher 的欄位中選
- 可以增加Asset連到voucher(這邊應該坐在vouhcer)
- 增加Asset點下去之後需要增加下面這些值存在database
- 也要可以修改asset資訊
- 另外在New的時候就需要把所有以後的折舊的分錄放在Upcoming Event
-
在 upcoming event裡面,要列出資產未來可能產生的折舊(在新增Asset的時候增加)
-
Delete Asset
- 今天如果有任何傳票掛到這間公司上面(除了購買傳票之外)就不可以刪除
- 刪除功能指的是幫它開一個沖銷分錄,然後資產deleteAt加數字,被刪除的資產用戶看不到
Ledger
User Story (
如果是屬於 可以沖帳的科目 (請參考 會計科目表 中綠色的科目),如果該原始傳票已經被全部沖乾淨,就不會顯示在ledger裡面- (2024/10/28) 上面的資訊是錯的,ledger呈現所有該哥目的傳票,Report點進去的傳票才會限制是沒有沖帳完成的