11from __future__ import annotations
22
3+ from datetime import date , timedelta
34from decimal import Decimal
45from pathlib import Path
56from typing import cast
@@ -48,6 +49,8 @@ def create_invoice_base( # noqa: PLR0913
4849 vat : str = "" ,
4950 kind : InvoiceKind = InvoiceKind .INVOICE ,
5051 currency : Currency = Currency .EUR ,
52+ tax_date : date | None = None ,
53+ due_date : date | None = None ,
5154 ) -> Invoice :
5255 return Invoice .objects .create (
5356 customer = self .create_customer (vat = vat ),
@@ -58,6 +61,8 @@ def create_invoice_base( # noqa: PLR0913
5861 category = InvoiceCategory .HOSTING ,
5962 customer_reference = customer_reference ,
6063 currency = currency ,
64+ tax_date = tax_date ,
65+ due_date = due_date ,
6166 )
6267
6368 def create_invoice_package (
@@ -85,6 +90,8 @@ def create_invoice( # noqa: PLR0913
8590 customer_note : str = "" ,
8691 vat : str = "" ,
8792 kind : InvoiceKind = InvoiceKind .INVOICE ,
93+ tax_date : date | None = None ,
94+ due_date : date | None = None ,
8895 ) -> Invoice :
8996 invoice = self .create_invoice_base (
9097 discount = discount ,
@@ -93,6 +100,8 @@ def create_invoice( # noqa: PLR0913
93100 customer_note = customer_note ,
94101 vat = vat ,
95102 kind = kind ,
103+ tax_date = tax_date ,
104+ due_date = due_date ,
96105 )
97106 invoice .invoiceitem_set .create (
98107 description = "Test item" ,
@@ -112,6 +121,18 @@ def validate_invoice(self, invoice: Invoice) -> None:
112121 xml_doc = etree .parse (invoice .xml_path )
113122 S3_SCHEMA .assertValid (xml_doc )
114123
124+ def test_dates (self ) -> None :
125+ invoice = self .create_invoice (vat = "CZ8003280318" )
126+ self .assertEqual (invoice .tax_date , invoice .issue_date )
127+ self .assertEqual (invoice .due_date , invoice .issue_date + timedelta (days = 14 ))
128+ tax_date = date (2020 , 10 , 10 )
129+ due_date = date (3030 , 10 , 10 )
130+ invoice = self .create_invoice (
131+ vat = "CZ8003280318" , tax_date = tax_date , due_date = due_date
132+ )
133+ self .assertEqual (invoice .tax_date , tax_date )
134+ self .assertEqual (invoice .due_date , due_date )
135+
115136 def test_total (self ) -> None :
116137 invoice = self .create_invoice (vat = "CZ8003280318" )
117138 self .assertEqual (invoice .total_amount , 100 )
0 commit comments