Skip to content

Commit e118690

Browse files
committed
preparing monthly invoicing function
1 parent 81d919c commit e118690

File tree

4 files changed

+18
-5
lines changed

4 files changed

+18
-5
lines changed

tuttle/invoicing.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ def generate_invoice(
1919
timesheets: List[Timesheet],
2020
contract: Contract,
2121
date: datetime.date = datetime.date.today(),
22+
counter: int = None,
2223
) -> Invoice:
2324
invoice = Invoice(
2425
date=date,
@@ -36,7 +37,8 @@ def generate_invoice(
3637
VAT_rate=contract.VAT_rate,
3738
description=timesheet.title,
3839
)
39-
invoice.generate_number()
40+
# TODO: replace with auto-incrementing numbers
41+
invoice.generate_number(counter=counter)
4042
return invoice
4143

4244

tuttle/model.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -340,12 +340,14 @@ def total(self) -> Decimal:
340340
"""Total invoiced amount."""
341341
return self.sum + self.VAT_total
342342

343-
def generate_number(self, pattern=None):
343+
def generate_number(self, pattern=None, counter=None):
344344
"""Generate an invoice number"""
345345
date_prefix = self.date.strftime("%Y-%m-%d")
346346
# suffix = hashlib.shake_256(str(uuid.uuid4()).encode("utf-8")).hexdigest(2)
347347
# TODO: auto-increment suffix for invoices generated on the same day
348-
suffix = "01"
348+
if counter is None:
349+
counter = 1
350+
suffix = f"{counter:02}"
349351
self.number = f"{date_prefix}-{suffix}"
350352

351353
@property

tuttle/rendering.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ def as_currency(number):
6262
)
6363

6464
def as_percentage(number):
65-
return f"{number * 100} %"
65+
return f"{number * 100:.1f} %"
6666

6767
template_name = f"invoice-anvil"
6868
template_path = get_template_path(template_name)
@@ -83,7 +83,8 @@ def as_percentage(number):
8383
return html
8484
else:
8585
# write invoice html
86-
prefix = f"{invoice.number}-{invoice.client.name.lower()}"
86+
client_suffix = invoice.client.name.lower().split()[0]
87+
prefix = f"{invoice.number}-{client_suffix}"
8788
invoice_dir = Path(out_dir) / Path(prefix)
8889
invoice_dir.mkdir(parents=True, exist_ok=True)
8990
invoice_path = invoice_dir / Path(f"{prefix}.html")

tuttle/timetracking.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,14 @@ def generate_timesheet(
6767
return ts_table
6868

6969
# TODO: grouping
70+
if group_by is None:
71+
pass
72+
elif group_by == "day":
73+
raise NotImplementedError("TODO")
74+
elif group_by == "week":
75+
raise NotImplementedError("TODO")
76+
else:
77+
raise ValueError(f"unknown group_by argument: {group_by}")
7078

7179
ts = Timesheet(
7280
title=f"{project.title} - {period_str}",

0 commit comments

Comments
 (0)