fix reports bugs

This commit is contained in:
2026-01-09 06:47:47 +02:00
parent 9e21862e64
commit dd135a38c2
2 changed files with 54 additions and 28 deletions

View File

@@ -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):

View File

@@ -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):