Source code for aoiro.reader._expenses
from collections.abc import Sequence
from pathlib import Path
from typing import Any
from .._ledger import GeneralLedgerLineImpl, LedgerElementImpl
from ._io import read_simple_csvs
[docs]
def ledger_from_expenses(
path: Path,
) -> Sequence[GeneralLedgerLineImpl[Any, Any]]:
"""
Generate ledger from expenses.
The CSV files are assumed to have columns
["勘定科目"].
The relative path of the CSV file would be used as "取引先".
Parameters
----------
path : Path
The path to the directory containing CSV files.
Returns
-------
Sequence[GeneralLedgerLineImpl[Any, Any]]
The ledger lines.
"""
df = read_simple_csvs(path / "expenses")
if df.empty:
return []
df["取引先"] = df["path"]
res: list[GeneralLedgerLineImpl[Any, Any]] = []
for date, row in df.iterrows():
res.append(
GeneralLedgerLineImpl(
date=date,
values=[
LedgerElementImpl(
account="事業主借", amount=row["金額"], currency=row["通貨"]
),
LedgerElementImpl(
account=row["勘定科目"],
amount=row["金額"],
currency=row["通貨"],
),
],
)
)
return res