From dd135a38c29cb2d94e41fd731f10e99e97a2aa98 Mon Sep 17 00:00:00 2001 From: Marius Robert Macamete Date: Fri, 9 Jan 2026 06:47:47 +0200 Subject: [PATCH] fix reports bugs --- .../client/pages/report_order_in_page.py | 5 +- transportmanager/client/pages/reports_page.py | 77 ++++++++++++------- 2 files changed, 54 insertions(+), 28 deletions(-) diff --git a/transportmanager/client/pages/report_order_in_page.py b/transportmanager/client/pages/report_order_in_page.py index 8c2eb80..e3f425b 100644 --- a/transportmanager/client/pages/report_order_in_page.py +++ b/transportmanager/client/pages/report_order_in_page.py @@ -13,6 +13,7 @@ def fetch_rates_for_base(base_ui: str) -> dict: r = requests.get(url, params=params, timeout=6) r.raise_for_status() data = r.json() + print(data) rates = {k: float(v) for k, v in data["rates"].items()} rates[base_iso] = 1.0 return {ui: rates[iso] for ui, iso in ISO.items()} @@ -164,8 +165,8 @@ class ReportOrderInPage: self.usd.value = f"{fx['USD']:.4f}" self.chf.value = f"{fx['CHF']:.4f}" self.gbp.value = f"{fx['GBP']:.4f}" - except Exception: - pass + except Exception as e: + print(e) self.convert_courrency_dialog_placeholder.update() def on_convert_curency_btn_click(self, e): diff --git a/transportmanager/client/pages/reports_page.py b/transportmanager/client/pages/reports_page.py index 100b455..68d9b47 100644 --- a/transportmanager/client/pages/reports_page.py +++ b/transportmanager/client/pages/reports_page.py @@ -201,31 +201,51 @@ class ReportsPage: for order_in in all_orders_in: if order_in['order_number'] not in orders_in_ids: all_orders.append(order_in) + #print('Total Orders: ', all_orders) total = 0 for order in all_orders: + #print('Order: ',order) self.convert_currency_placeholder.content = self.convert_currency - if order['currency_received'] not in self.currency_list: - self.currency_list.append(order['currency_received']) - if order['currency_paid'] not in self.currency_list: - self.currency_list.append(order['currency_paid']) - if order.get('status') != 'active': - continue - order_number = order['order_number'] + if 'currency_received' in order: + if order['currency_received'] not in self.currency_list: + self.currency_list.append(order['currency_received']) + if 'currency_paid' in order: + if order['currency_paid'] not in self.currency_list: + self.currency_list.append(order['currency_paid']) + if 'order_in_number' in order: + if order.get('status') != 'active': + continue + order_number = f"Order In: {order['order_number']}" + if 'order_in_number' in order: + if order['order_in_number']: + order_number = f"Order Out: {order['order_number']}\nOrder In:{order['order_in_number']}" + else: + order_number = f"Order Out: {order['order_number']}" client_name = self.get_client(order['client_id'])['name'] - transporter_name = self.get_transporter(order['transporter_id'])['name'] + transporter_name = self.get_transporter(order['transporter_id'])['name'] if 'transporter_id' in order else '' order_date = order['created_at'].split("T")[0] - paid = f"{order['paid_price']} {order['currency_paid']}" + order_pay_price = order['paid_price'] if 'paid_price' in order else 0 + order_curency_paid = order['currency_paid'] if 'currency_paid' in order else '' + paid = f"{order_pay_price} {order_curency_paid}" received = f"{order['received_price']} {order['currency_received']}" - currency = order['currency_received'] if order['currency_paid'] == order['currency_received'] else '' + if 'currency_paid' in order: + currency = order['currency_received'] if order['currency_paid'] == order['currency_received'] else '' + else: + currency = order['currency_received'] expenses = 0 - for order_in in all_orders_in: - if 'order_in_number' in order and order['order_in_number'] == order_in['order_number']: - expenses = order_in.get('expenses', 0) or 0 + if 'order_in_number' in order: + for order_in in all_orders_in: + if order['order_in_number'] == order_in['order_number']: + expenses = f"{order_in['expenses']} {order_in['currency_expenses']}" if order_in['expenses'] else 0 + else: + expenses = f"{order['expenses']} {order['currency_expenses']}" if order['expenses'] else 0 order_type = 'Out' if 'order_in_number' in order else 'In' if currency: try: - profit_value = round(float(order['received_price']) - float(order['paid_price']) - float(expenses), 2) + _expences = expenses.split(' ')[0] if expenses != 0 else 0 + _pay_price = order['paid_price'] if 'paid_price' in order else 0 + profit_value = round(float(order['received_price']) - float(_pay_price) - float(_expences), 2) profit = f"{profit_value} {currency}" except Exception as e: print(e) @@ -268,7 +288,9 @@ class ReportsPage: total += float(profit.split(" ")[0]) except Exception: pass - self.total.value = f"Total: {total}" if len(self.currency_list)==1 else "" + #print('Row data: ', row_data) + #print('Rows: ', self.rows) + self.total.value = f"Total: {total:.2f}" if len(self.currency_list)==1 else "" self.rows_copy = list(self.rows) def on_report_orders_in_btn_click(self, e): @@ -414,12 +436,15 @@ class ReportsPage: received_number, received_currency = received_str.split(" ") except ValueError: received_number, received_currency = "0", base - - expenses_number = expenses_str or "0" + try: + expenses_currency = None + expenses_number, expenses_currency = expenses_str.split(" ") + except: + expenses_number = expenses_str or "0", base paid_base = to_base(paid_number, paid_currency) received_base = to_base(received_number, received_currency) - expenses_base = to_base(expenses_number, paid_currency) + expenses_base = to_base(expenses_number, expenses_currency) if expenses_currency else 0 profit_base = round(float(received_base) - float(paid_base) - float(expenses_base), 2) @@ -430,7 +455,7 @@ class ReportsPage: ft.DataCell(ft.Text(client_name)), ft.DataCell(ft.Text(transporter_name)), ft.DataCell(ft.Text(order_date)), - ft.DataCell(ft.Text(expenses_str)), + ft.DataCell(ft.Text(f"{expenses_base:.2f} {base}")), ft.DataCell(ft.Text(f"{paid_base:.2f} {base}")), ft.DataCell(ft.Text(f"{received_base:.2f} {base}")), ft.DataCell(ft.Text(f"{profit_base:.2f} {base}")), @@ -502,7 +527,7 @@ class ReportsPage: except Exception: pass self.data_table.update() - self.total.value = f"Total: {total}" if len(self.currency_list)==1 else "" + self.total.value = f"Total: {total:.2f}" if len(self.currency_list)==1 else "" self.total.update() self.start_date.value = "" self.start_date.update() @@ -540,7 +565,7 @@ class ReportsPage: pass self.rows_copy = buffer self.data_table.update() - self.total.value = f"Total: {total}" if len(self.currency_list)==1 else "" + self.total.value = f"Total: {total:.2f}" if len(self.currency_list)==1 else "" self.total.update() def on_end_date_click(self, e): @@ -574,7 +599,7 @@ class ReportsPage: pass self.rows_copy = buffer self.data_table.update() - self.total.value = f"Total: {total}" if len(self.currency_list)==1 else "" + self.total.value = f"Total: {total:.2f}" if len(self.currency_list)==1 else "" self.total.update() def filter_by_client(self, e): @@ -603,7 +628,7 @@ class ReportsPage: except Exception: pass self.data_table.update() - self.total.value = f"Total: {total}" if len(self.currency_list)==1 else "" + self.total.value = f"Total: {total:.2f}" if len(self.currency_list)==1 else "" self.total.update() return buffer = [] @@ -630,7 +655,7 @@ class ReportsPage: pass self.rows_copy = buffer self.data_table.update() - self.total.value = f"Total: {total}" if len(self.currency_list)==1 else "" + self.total.value = f"Total: {total:.2f}" if len(self.currency_list)==1 else "" self.total.update() def filter_by_transporter(self, e): @@ -659,7 +684,7 @@ class ReportsPage: except Exception: pass self.data_table.update() - self.total.value = f"Total: {total}" if len(self.currency_list)==1 else "" + self.total.value = f"Total: {total:.2f}" if len(self.currency_list)==1 else "" self.total.update() return buffer = [] @@ -686,7 +711,7 @@ class ReportsPage: pass self.rows_copy = buffer self.data_table.update() - self.total.value = f"Total: {total}" if len(self.currency_list)==1 else "" + self.total.value = f"Total: {total:.2f}" if len(self.currency_list)==1 else "" self.total.update() def build(self):