From 1281c157d7da8275d783fb3425be1b9a11773144 Mon Sep 17 00:00:00 2001 From: Marius Robert Macamete Date: Thu, 13 Nov 2025 20:47:01 +0200 Subject: [PATCH] add prod env for netopia --- UI_V2/.env | 6 +- UI_V2/admin/inventory/goods_reception.py | 127 ++++++++++++++++++----- 2 files changed, 104 insertions(+), 29 deletions(-) diff --git a/UI_V2/.env b/UI_V2/.env index 75146d8..dcaf900 100644 --- a/UI_V2/.env +++ b/UI_V2/.env @@ -1,7 +1,7 @@ -NETOPIA_API_KEY=yPYOnzSeU_qdMV5RaMEwvFCkBuQU6PUPijAWja8vY34JuG5SMTLtF7LkcXj8 +NETOPIA_API_KEY=rY-cpMp5v5XIf5rzoqMCo8ltK49SMHWgSIPmo5iWZ5PjAKiXdRi2YweZIlN_ NETOPIA_POS_SIGNATURE=351D-XRIS-7K5Y-WUZB-Y3IW -NETOPIA_PUBLIC_KEY=-----BEGIN CERTIFICATE-----\nMIIC3zCCAkigAwIBAgIBATANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCUk8xEjAQBgNVBAgTCUJ1Y2hhcmVzdDESMBAGA1UEBxMJQnVjaGFyZXN0MRAwDgYDVQQKEwdORVRPUElBMSEwHwYDVQQLExhORVRPUElBIERldmVsb3BtZW50IHRlYW0xHDAaBgNVBAMTE25ldG9waWEtcGF5bWVudHMucm8wHhcNMjUxMTA0MTUwNTI2WhcNMzUxMTAyMTUwNTI2WjCBiDELMAkGA1UEBhMCUk8xEjAQBgNVBAgTCUJ1Y2hhcmVzdDESMBAGA1UEBxMJQnVjaGFyZXN0MRAwDgYDVQQKEwdORVRPUElBMSEwHwYDVQQLExhORVRPUElBIERldmVsb3BtZW50IHRlYW0xHDAaBgNVBAMTE25ldG9waWEtcGF5bWVudHMucm8wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALwh0/NhEpZFuKvghZ9N75CXba05MWNCh422kcfFKbqP5YViCUBg3Mc5ZYd1e0Xi9Ui1QI2Z/jvvchrDZGQwjarApr3S9bowHEkZH81ZolOoPHBZbYpA28BIyHYRcaTXjLtiBGvjpwuzljmXeBoVLinIaE0IUpMen9MLWG2fGMddAgMBAAGjVzBVMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQ9yXChMGxzUzQflmkXT1oyIBoetTANBgkqhkiG9w0BAQsFAAOBgQCSxX3hnoP+vWmdecz/Oustubp4Q89fV/bGMBztQy8QbnMjKghUKAba/0CGs2MbN2bWCN78mOak8Oi6qNB7/Z6/yKWTJdkwYjXl/C6UQhZ7k11XKINGk3LD9wTiyKsWt1iioNjNN6h8Fqeh4So5ikEzZG7LnvbAz+ct9YBjyHiCLw==\n-----END CERTIFICATE----- +NETOPIA_PUBLIC_KEY=-----BEGIN CERTIFICATE----MIIC3zCCAkigAwIBAgIBATANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCUk8xEjAQBgNVBAgTCUJ1Y2hhcmVzdDESMBAGA1UEBxMJQnVjaGFyZXN0MRAwDgYDVQQKEwdORVRPUElBMSEwHwYDVQQLExhORVRPUElBIERldmVsb3BtZW50IHRlYW0xHDAaBgNVBAMTE25ldG9waWEtcGF5bWVudHMucm8wHhcNMjUxMTA0MTUwNTI2WhcNMzUxMTAyMTUwNTI2WjCBiDELMAkGA1UEBhMCUk8xEjAQBgNVBAgTCUJ1Y2hhcmVzdDESMBAGA1UEBxMJQnVjaGFyZXN0MRAwDgYDVQQKEwdORVRPUElBMSEwHwYDVQQLExhORVRPUElBIERldmVsb3BtZW50IHRlYW0xHDAaBgNVBAMTE25ldG9waWEtcGF5bWVudHMucm8wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALwh0/NhEpZFuKvghZ9N75CXba05MWNCh422kcfFKbqP5YViCUBg3Mc5ZYd1e0Xi9Ui1QI2Z/jvvchrDZGQwjarApr3S9bowHEkZH81ZolOoPHBZbYpA28BIyHYRcaTXjLtiBGvjpwuzljmXeBoVLinIaE0IUpMen9MLWG2fGMddAgMBAAGjVzBVMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQ9yXChMGxzUzQflmkXT1oyIBoetTANBgkqhkiG9w0BAQsFAAOBgQCSxX3hnoP+vWmdecz/Oustubp4Q89fV/bGMBztQy8QbnMjKghUKAba/0CGs2MbN2bWCN78mOak8Oi6qNB7/Z6/yKWTJdkwYjXl/C6UQhZ7k11XKINGk3LD9wTiyKsWt1iioNjNN6h8Fqeh4So5ikEzZG7LnvbAz+ct9YBjyHiCLw==-----END CERTIFICATE----- NETOPIA_REDIRECT_URL=https://www.tainagustului.ro/payment/redirect NETOPIA_NOTIFY_URL=https://www.tainagustului.ro/api/payments/ipn NETOPIA_CANCEL_URL=https://www.tainagustului.ro/cos -NETOPIA_IS_LIVE=false \ No newline at end of file +NETOPIA_IS_LIVE=true \ No newline at end of file diff --git a/UI_V2/admin/inventory/goods_reception.py b/UI_V2/admin/inventory/goods_reception.py index 6f66401..265dda5 100644 --- a/UI_V2/admin/inventory/goods_reception.py +++ b/UI_V2/admin/inventory/goods_reception.py @@ -11,7 +11,15 @@ class GoodsReception: self.bulk_products_manager = BulkProducts() self.product_name = ft.TextField(label="Denumire") - #self.product_mesure_unit = ft.RadioGroup() + self.product_mesure_unit = ft.Dropdown( + label="Unitate de masura", + options=[ + ft.dropdown.Option(key='kg', text="KG"), + ft.dropdown.Option(key='buc', text="BUC") + ] , + expand=True + ) + self.product_mesure_unit.value = 'kg' self.product_quantity = ft.TextField(label="Cantitate") self.product_price = ft.TextField(label="Pret") self.product_vat = ft.TextField(label="TVA (0 pentru neplatitor de TVA)", value="0") @@ -75,7 +83,8 @@ class GoodsReception: self.on_delete_provider_bill_btn_click ), spacing=10, - expand=True + expand=True, + width=400 ) self.search_bar = ft.TextField(label="Cauta", expand=True, on_submit=self.on_search_btn_click) @@ -86,14 +95,52 @@ class GoodsReception: on_click=self.on_search_btn_click ) + self.delete_item_id = None + + self.delete_bill_dialog = ft.AlertDialog( + title=ft.Text("Setergeti?"), + actions=[ + ft.Button("Da", on_click=self.on_confirm_delete_bill_btn_click), + ft.Button("Nu", on_click=self.on_cancel_delete_bill_btn_click, bgcolor=ft.Colors.GREY, color=ft.Colors.WHITE) + ] + ) + + self.edit_item = None + + self.placeholder = ft.Column() + + self.add_group = ft.Row( + self.product_name, + self.product_quantity, + self.product_mesure_unit, + self.product_quantity, + ) + + def on_confirm_delete_bill_btn_click(self, e): + self.page.close(self.delete_bill_dialog) + self.bill_manager.remove(self.delete_item_id) + self.delete_item_id = None + list_value = self.bill_manager.get_all() + self.update_list(list_value) + + def on_cancel_delete_bill_btn_click(self, e): + self.page.close(self.delete_bill_dialog) + self.delete_item_id = None + def on_add_product_btn_click(self, item): - pass + self.page.open(self.add_product_dialog) def on_edit_provider_bill_btn_click(self, item): - pass + self.edit_item = item + self.bill_number.value = item['number'] + self.bill_date.value = item['date'] + self.provider.value = item['provider_id'] + self.page.open(self.add_bill_dialog) def on_delete_provider_bill_btn_click(self, id): - pass + print("Delete ", id) + self.delete_item_id = id + self.page.open(self.delete_bill_dialog) def get_provider_name(self, id): for provider in self.provider_manager.get_all_providers(): @@ -115,27 +162,34 @@ class GoodsReception: ] ), - ft.Row( + ft.Column( [ ft.FilledButton( icon=ft.Icons.ADD, text = 'Adauga Produs', - on_click=lambda e, id=item: on_click_handler3(id), - ), - ft.IconButton( - icon=ft.Icons.EDIT, on_click=lambda e, id=item: on_click_handler(id), ), - ft.IconButton( - icon=ft.Icons.DELETE, - on_click=lambda e, id=item['id']: on_click_handler2(id), - icon_color=ft.Colors.RED, - ), + ft.Row( + [ + ft.IconButton( + icon=ft.Icons.EDIT, + on_click=lambda e, id=item: on_click_handler2(id), + ), + ft.IconButton( + icon=ft.Icons.DELETE, + on_click=lambda e, id=item['id']: on_click_handler3(id), + icon_color=ft.Colors.RED, + ), + ], + alignment=ft.MainAxisAlignment.SPACE_BETWEEN, + expand=True + ) ] ) ], alignment=ft.MainAxisAlignment.SPACE_BETWEEN, + vertical_alignment=ft.CrossAxisAlignment.END ), width=300, bgcolor=ft.Colors.BROWN_50, @@ -162,13 +216,27 @@ class GoodsReception: def on_save_bill_btn_click(self, e): if self.bill_number.value == None or len(self.bill_number.value)<2: + print("bill number not inserted") return - self.bill_manager.add_provider_bills( - self.bill_number.value, - self.bill_date.value, - self.provider.value - ) + if self.edit_item: + print("Edit bill") + self.bill_manager.update( + id=self.edit_item['id'], + number=self.bill_number.value, + date=self.bill_date.value, + provider_id=self.provider.value + ) + self.edit_item = None + else: + print('Add bill') + self.bill_manager.add_provider_bills( + self.bill_number.value, + self.bill_date.value, + self.provider.value + ) self.on_cancel_bill_btn_click('e') + list_value = self.bill_manager.get_all() + self.update_list(list_value) def on_cancel_bill_btn_click(self, e): self.bill_number.value = '' @@ -185,12 +253,14 @@ class GoodsReception: for bill in self.all_bills: if search.lower() in bill['number'].lower(): buffer.append(bill) - + self.update_list(buffer) + + def update_list(self, list_value): self.bills_list.controls=self.create_bill_list( - buffer, - self.on_add_product_btn_click, - self.on_edit_provider_bill_btn_click, - self.on_delete_provider_bill_btn_click + list_value, + self.on_add_product_btn_click, + self.on_edit_provider_bill_btn_click, + self.on_delete_provider_bill_btn_click ) self.bills_list.update() @@ -211,7 +281,12 @@ class GoodsReception: self.search_btn ] ), - self.bills_list + ft.Row( + [ + self.bills_list, + self.placeholder + ] + ) ] ) ) \ No newline at end of file