88from mindee .fields .date import DateField
99from mindee .fields .locale import LocaleField
1010from mindee .fields .payment_details import PaymentDetails
11- from mindee .fields .tax import TaxField
11+ from mindee .fields .tax import Taxes
1212from mindee .fields .text import TextField
1313
1414
@@ -27,7 +27,7 @@ class FinancialDocumentV1(Document):
2727 """List of Reference numbers including PO number."""
2828 due_date : DateField
2929 """Date the invoice is due"""
30- taxes : List [ TaxField ] = []
30+ taxes : Taxes
3131 """List of all taxes"""
3232 total_tax : AmountField
3333 """Sum total of all taxes"""
@@ -117,11 +117,7 @@ def _build_from_api_prediction(
117117 self .customer_address = TextField (
118118 api_prediction ["customer_address" ], page_n = page_n
119119 )
120-
121- self .taxes = [
122- TaxField (tax_prediction , page_n = page_n , value_key = "value" )
123- for tax_prediction in api_prediction ["taxes" ]
124- ]
120+ self .taxes = Taxes (api_prediction ["taxes" ], page_id = page_n )
125121 self .supplier_payment_details = [
126122 PaymentDetails (payment_detail , page_n = page_n )
127123 for payment_detail in api_prediction ["supplier_payment_details" ]
@@ -143,6 +139,15 @@ def _build_from_api_prediction(
143139 api_prediction ["subcategory" ], page_n = page_n
144140 )
145141
142+ @staticmethod
143+ def _line_items_separator (char : str ):
144+ out_str = " "
145+ out_str += f"+{ char * 38 } "
146+ out_str += f"+{ char * 10 } "
147+ out_str += f"+{ char * 14 } "
148+ out_str += f"+{ char * 12 } "
149+ return out_str + "+"
150+
146151 def __str__ (self ) -> str :
147152 supplier_company_registrations = "; " .join (
148153 [str (n .value ) for n in self .supplier_company_registrations ]
@@ -154,38 +159,38 @@ def __str__(self) -> str:
154159 payment_details = "\n " .join (
155160 [str (p ) for p in self .supplier_payment_details ]
156161 )
157- taxes = "\n " .join (f"{ t } " for t in self .taxes )
158162 line_items = "\n "
159163 if self .line_items :
160164 line_items = "\n Code | QTY | Price | Amount | Tax (Rate) | Description\n "
161165 for item in self .line_items :
162166 line_items += f" { item } \n "
167+
163168 return clean_out_string (
164- "----- Financial Document V1 ----- \n "
165- f"Filename: { self . filename or '' } \n "
166- f"Document type: { self .document_type } \n "
167- f"Category: { self .category } \n "
168- f"Subcategory: { self .subcategory } \n "
169- f"Locale: { self .locale } \n "
170- f"Invoice number: { self .invoice_number } \n "
171- f"Reference numbers : { reference_numbers } \n "
172- f"Date: { self . date } \n "
173- f"Due date: { self .due_date } \n "
174- f"Time: { self .time } \n "
175- f"Supplier name: { self .supplier_name } \n "
176- f"Supplier address : { self .supplier_address } \n "
177- f"Supplier company registrations : { supplier_company_registrations } \n "
178- f"Supplier payment details : { payment_details } \n "
179- f"Customer name : { self . customer_name } \n "
180- f"Customer address : { self .customer_address } \n "
181- f"Customer company registrations : { customer_company_registrations } \n "
182- f"Tip: { self . tip } \n "
183- f"Taxes: { taxes } \n "
184- f"Total tax: { self .total_tax } \n "
185- f"Total net : { self .total_net } \n "
186- f"Total amount : { self .total_amount } \n "
187- f"Line Items : { line_items } "
188- "---------------------- "
169+ "Financial Document V1 Prediction \n "
170+ "================================ \n "
171+ f":Filename: { self .filename or '' } \n "
172+ f":Document type: { self .document_type } \n "
173+ f":Category: { self .category } \n "
174+ f":Subcategory: { self .subcategory } \n "
175+ f":Locale: { self .locale } \n "
176+ f":Invoice number : { self . invoice_number } \n "
177+ f":Reference numbers: { reference_numbers } \n "
178+ f":Date: { self .date } \n "
179+ f":Due date: { self .due_date } \n "
180+ f":Time: { self .time } \n "
181+ f": Supplier name : { self .supplier_name } \n "
182+ f": Supplier address : { self . supplier_address } \n "
183+ f": Supplier company registrations : { supplier_company_registrations } \n "
184+ f":Supplier payment details : { payment_details } \n "
185+ f": Customer name : { self .customer_name } \n "
186+ f": Customer address : { self . customer_address } \n "
187+ f":Customer company registrations: { customer_company_registrations } \n "
188+ f":Tip: { self . tip } \n "
189+ f":Taxes: { self .taxes } \n "
190+ f": Total tax : { self .total_tax } \n "
191+ f": Total net : { self .total_net } \n "
192+ f":Total amount : { self . total_amount } \n "
193+ f":Line Items: { line_items } "
189194 )
190195
191196 def _checklist (self ) -> None :
0 commit comments