From 36b2a3fab65084d0e8d0f4b963d1058ffa937023 Mon Sep 17 00:00:00 2001 From: mgite Date: Sat, 16 Nov 2024 02:07:15 +0400 Subject: [PATCH] maaaany changes --- .env | 2 +- bross_bank_management/__init__.py | 1 + bross_bank_management/__manifest__.py | 5 +- .../data/bank_transactions_status_code.xml | 17 ++++ .../data/bank_transactions_subtype_code.xml | 33 ++++++ bross_bank_management/models/__init__.py | 2 +- bross_bank_management/models/bank_deposits.py | 19 ---- bross_bank_management/models/bank_models.py | 52 ++++++++-- bross_bank_management/models/bank_payments.py | 21 +--- .../models/bank_transactions.py | 75 ++++++++++++++ .../security/ir.model.access.csv | 6 +- .../views/bank_payments_views.xml | 15 +-- ..._views.xml => bank_transactions_views.xml} | 41 ++++---- .../views/service_payments_views.xml | 2 +- bross_bank_management/wizard/__init__.py | 3 + bross_bank_management/wizard/add_payments.py | 96 ++++++++++++++++++ .../wizard/add_payments_view.xml | 49 +++++++++ bross_hms/__manifest__.py | 8 +- bross_hms/data/payment_methods.xml | 2 +- bross_hms/data/payment_types.xml | 14 +++ bross_hms/models/__init__.py | 2 + bross_hms/models/hms_models.py | 59 +++++++++-- bross_hms/models/hms_payments.py | 56 ++++++++++ bross_hms/models/hms_services.py | 11 ++ bross_hms/security/ir.model.access.csv | 5 +- bross_hms/views/bookings.xml | 25 ++++- bross_hms/views/hms_payments.xml | 36 +++++++ compose.yaml | 4 +- compose_dev.yaml | 4 +- restore_buttons/LICENSE | 27 +++++ restore_buttons/__init__.py | 0 restore_buttons/__manifest__.py | 29 ++++++ .../description/gifs/action_save_discard.gif | Bin 0 -> 630439 bytes restore_buttons/static/description/icon.png | Bin 0 -> 14981 bytes restore_buttons/static/description/index.html | 26 +++++ .../static/description/wallpaper.png | Bin 0 -> 54975 bytes .../static/src/scss/actions_dropdown.scss | 44 ++++++++ .../static/src/xml/actions_dropdown.xml | 8 ++ .../static/src/xml/breadcrumbs.xml | 44 ++++++++ .../static/src/xml/save_discard.xml | 10 ++ 40 files changed, 749 insertions(+), 104 deletions(-) create mode 100644 bross_bank_management/data/bank_transactions_status_code.xml create mode 100644 bross_bank_management/data/bank_transactions_subtype_code.xml delete mode 100644 bross_bank_management/models/bank_deposits.py create mode 100644 bross_bank_management/models/bank_transactions.py rename bross_bank_management/views/{bank_deposits_views.xml => bank_transactions_views.xml} (53%) create mode 100644 bross_bank_management/wizard/__init__.py create mode 100644 bross_bank_management/wizard/add_payments.py create mode 100644 bross_bank_management/wizard/add_payments_view.xml create mode 100644 bross_hms/data/payment_types.xml create mode 100644 bross_hms/models/hms_payments.py create mode 100644 bross_hms/models/hms_services.py create mode 100644 bross_hms/views/hms_payments.xml create mode 100644 restore_buttons/LICENSE create mode 100644 restore_buttons/__init__.py create mode 100644 restore_buttons/__manifest__.py create mode 100644 restore_buttons/static/description/gifs/action_save_discard.gif create mode 100644 restore_buttons/static/description/icon.png create mode 100644 restore_buttons/static/description/index.html create mode 100644 restore_buttons/static/description/wallpaper.png create mode 100644 restore_buttons/static/src/scss/actions_dropdown.scss create mode 100644 restore_buttons/static/src/xml/actions_dropdown.xml create mode 100644 restore_buttons/static/src/xml/breadcrumbs.xml create mode 100644 restore_buttons/static/src/xml/save_discard.xml diff --git a/.env b/.env index 62ceeb9..a9c7867 100644 --- a/.env +++ b/.env @@ -14,5 +14,5 @@ DBUSER="odoo" PASSWORD="odoo" ADDONS="--addons-path=/opt/odoo/addons/,/opt/odoo/customaddons/$CUSTOMADDONS_DIR" # ARGS="" -ARGS="-d bross_hms_dev -u bross_hms,exely_integration,bross_bank_management" +ARGS="-d bross_hms_dev -u bross_hms,exely_integration,bross_bank_management,restore_buttons" # DEBUG="-m debugpy --listen 0.0.0.0:5678 --wait-for-client" diff --git a/bross_bank_management/__init__.py b/bross_bank_management/__init__.py index 0650744..9b42961 100644 --- a/bross_bank_management/__init__.py +++ b/bross_bank_management/__init__.py @@ -1 +1,2 @@ from . import models +from . import wizard diff --git a/bross_bank_management/__manifest__.py b/bross_bank_management/__manifest__.py index 4c7d680..f8bf4fe 100644 --- a/bross_bank_management/__manifest__.py +++ b/bross_bank_management/__manifest__.py @@ -12,15 +12,18 @@ 'data': [ 'security/ir.model.access.csv', 'data/bank_conf.xml', + 'data/bank_transactions_status_code.xml', + 'data/bank_transactions_subtype_code.xml', 'cron/crons.xml', 'views/main_menu.xml', 'views/bank_views.xml', 'views/bank_account_views.xml', 'views/bank_settings_views.xml', 'views/raw_movements.xml', - 'views/bank_deposits_views.xml', + 'views/bank_transactions_views.xml', 'views/service_payments_views.xml', 'views/bank_payments_views.xml', + 'wizard/add_payments_view.xml', ], 'installable': True, 'application': True, diff --git a/bross_bank_management/data/bank_transactions_status_code.xml b/bross_bank_management/data/bank_transactions_status_code.xml new file mode 100644 index 0000000..160de35 --- /dev/null +++ b/bross_bank_management/data/bank_transactions_status_code.xml @@ -0,0 +1,17 @@ + + + + + Waiting for authorization + 1 + + + Waiting for second authorization + 2 + + + Authorized + 3 + + + diff --git a/bross_bank_management/data/bank_transactions_subtype_code.xml b/bross_bank_management/data/bank_transactions_subtype_code.xml new file mode 100644 index 0000000..d3f7544 --- /dev/null +++ b/bross_bank_management/data/bank_transactions_subtype_code.xml @@ -0,0 +1,33 @@ + + + + + Transfer between own accounts + 1 + + + Currency exchange + 5 + + + Income + 20 + + + Transfer out and cash withdrawal + 30 + + + Bill, Top UP Mobile, fine payments + 31 + + + Treasury transfers + 32 + + + Other expenses + 33 + + + diff --git a/bross_bank_management/models/__init__.py b/bross_bank_management/models/__init__.py index 36e3639..de372f2 100644 --- a/bross_bank_management/models/__init__.py +++ b/bross_bank_management/models/__init__.py @@ -2,6 +2,6 @@ from . import bank from . import bank_account from . import bank_settings from . import bank_models -from . import bank_deposits +from . import bank_transactions from . import bank_payments from . import service_payments diff --git a/bross_bank_management/models/bank_deposits.py b/bross_bank_management/models/bank_deposits.py deleted file mode 100644 index f001b92..0000000 --- a/bross_bank_management/models/bank_deposits.py +++ /dev/null @@ -1,19 +0,0 @@ -from odoo import models, fields, _ - - -class BrosseBankDeposits(models.Model): - _name = 'brosse.bank.deposits' - _description = 'Bank Deposits' - - amount = fields.Monetary(string="Amount", currency_field='currency_id') - currency_id = fields.Many2one('res.currency', string='Account Currency') - description = fields.Char(string="Description") - comment = fields.Text(string="Comment") - partner_name = fields.Char(string="Partner Name") - taxpayer_name = fields.Char(string="Taxpayer Name") - - bank_account_id = fields.Many2one('brosse.bank.account', string="Bank Account") - - def action_process_selected_records(self): - print(self) - print(self.env.context) \ No newline at end of file diff --git a/bross_bank_management/models/bank_models.py b/bross_bank_management/models/bank_models.py index e00c934..359c0bf 100644 --- a/bross_bank_management/models/bank_models.py +++ b/bross_bank_management/models/bank_models.py @@ -4,8 +4,8 @@ import hashlib import json import math import os -from datetime import datetime -from odoo import models, fields, _ +from datetime import datetime, timedelta +from odoo import models, fields, api, _ from tbc_bank_integration_service_lib.client import TBCBankClient from odoo.exceptions import UserError @@ -96,15 +96,32 @@ class BankMovements(models.Model): for rec in to_process_movements: movement = json.loads(rec.json_data) - account_number = movement['accountNumber'] - account_name = movement['accountName'] + movement_id = movement['movementId'] + external_payment_id = movement['externalPaymentId'] + debit_credit = movement['debitCredit'] + value_date = movement['valueDate'] + description = movement['description'] amount = movement['amount']['amount'] currency = movement['amount']['currency'] - iban_code = account_number[4:6] - description = movement['description'] + account_number = movement['accountNumber'] + account_name = movement['accountName'] comment = movement['additionalInformation'] + document_date = movement['documentDate'] + document_number = movement['documentNumber'] partner_name = movement['partnerName'] + partner_tax_code = movement['partnerTaxCode'] + taxpayer_code = movement['taxpayerCode'] taxpayer_name = movement['taxpayerName'] + operation_code = movement['operationCode'] + exchange_rate_text = movement['exchangeRate'] + partner_personal_number = movement['partnerPersonalNumber'] + partner_document_type = movement['partnerDocumentType'] + partner_document_number = movement['partnerDocumentNumber'] + parent_external_payment_id = movement['parentExternalPaymentId'] + status_code = movement['statusCode'] + transaction_type = movement['transactionType'] + + iban_code = account_number[4:6] if movement['debitCredit'] == '0': amount = float(amount) * -1 @@ -136,14 +153,33 @@ class BankMovements(models.Model): 'account_number': account_number, }).id - self.env['brosse.bank.deposits'].create({ + self.env['brosse.bank.transactions'].create({ 'bank_account_id': bank_account_id, 'amount': amount, 'currency_id': currency_id.id, + 'exchange_rate_text': exchange_rate_text, 'description': description, 'comment': comment, 'partner_name': partner_name, - 'taxpayer_name': taxpayer_name + 'taxpayer_name': taxpayer_name, + + 'movement_id': movement_id, + 'external_payment_id': external_payment_id, + 'debit_credit': debit_credit, + 'value_date': datetime.strptime(value_date, "%Y-%m-%dT%H:%M:%S") - timedelta(hours=4), + 'document_date': datetime.strptime(document_date, "%Y-%m-%dT%H:%M:%S") - timedelta(hours=4), + 'document_number': document_number, + 'partner_tax_code': partner_tax_code, + 'taxpayer_code': taxpayer_code, + 'operation_code': operation_code, + 'partner_personal_number': partner_personal_number, + 'partner_document_type': partner_document_type, + 'partner_document_number': partner_document_number, + 'parent_external_payment_id': parent_external_payment_id, + 'status_code_id': self.env['brosse.bank.transactions.status.code'].search([('code', '=', status_code)]).id, + 'transaction_type_id': self.env['brosse.bank.transactions.subtype.code'].search([('code', '=', transaction_type)]).id, + 'account_number': account_number, + 'account_name': account_name }) # movement_id = '013762510743.2' diff --git a/bross_bank_management/models/bank_payments.py b/bross_bank_management/models/bank_payments.py index c161df7..29eb9bb 100644 --- a/bross_bank_management/models/bank_payments.py +++ b/bross_bank_management/models/bank_payments.py @@ -1,22 +1,7 @@ from odoo import models, fields, _ -class HmsBankPayments(models.Model): - _name = 'hms.bank.payments' - _description = 'Hms Bank Payments' - _rec_name = 'booking_id' +class HmsPayments(models.Model): + _inherit = 'hms.payments' - bank_payment_id = fields.Many2one(comodel_name="brosse.bank.deposits", string="Bank Payment ID") - booking_id = fields.Many2one(comodel_name="hms.bookings", string="Booking ID") - - currency_id = fields.Many2one(comodel_name="res.currency", string="Currency") - amount = fields.Monetary(string="Amount", currency_field='currency_id') - amount_left = fields.Monetary(string="Left Amount", currency_field='currency_id') - exchange_rate = fields.Float(string="Exchange Rate") - notes = fields.Text(string="Notes") - - -class HmsBookings(models.Model): - _inherit = 'hms.bookings' - - bank_payment_ids = fields.One2many(comodel_name="hms.bank.payments", inverse_name="booking_id", string="Booking Payments") + bank_payment_id = fields.Many2one(comodel_name="brosse.bank.transactions", string="Bank Payment ID") diff --git a/bross_bank_management/models/bank_transactions.py b/bross_bank_management/models/bank_transactions.py new file mode 100644 index 0000000..549508b --- /dev/null +++ b/bross_bank_management/models/bank_transactions.py @@ -0,0 +1,75 @@ +from odoo import models, fields, api, _ +from odoo.exceptions import UserError, ValidationError + + +class BrosseBankTransactionsStatusCode(models.Model): + _name = 'brosse.bank.transactions.status.code' + _description = 'Bank Transactions Status Code' + + name = fields.Char(string='Name') + code = fields.Integer(string='Code') + + +class BrosseBankTransactionsSubtypeCode(models.Model): + _name = 'brosse.bank.transactions.subtype.code' + _description = 'Bank Transactions Subtype Code' + + name = fields.Char(string='Name') + code = fields.Integer(string='Code') + + +class BrosseBankTransactions(models.Model): + _name = 'brosse.bank.transactions' + _description = 'Bank Transactions' + _rec_name = 'document_number' + + movement_id = fields.Char(string='Movement ID') + external_payment_id = fields.Char(string='External Payment ID') + debit_credit = fields.Boolean(string='Debit/Credit', help="False = Debit, True = Credit") + value_date = fields.Date(string='Value Date') + description = fields.Char(string="Description") + amount = fields.Monetary(string="Amount", currency_field='currency_id') + currency_id = fields.Many2one('res.currency', string='Currency') + account_number = fields.Char(string='Account Number') + account_name = fields.Char(string='Account Name') + comment = fields.Text(string="Comment") + document_date = fields.Date(string='Document Date') + document_number = fields.Char(string='Document Number') + partner_name = fields.Char(string="Partner Name") + partner_tax_code = fields.Char(string='Partner Tax Code') + taxpayer_code = fields.Char(string='Taxpayer Code') + taxpayer_name = fields.Char(string="Taxpayer Name") + operation_code = fields.Char(string='Operation Code') + exchange_rate = fields.Float(string="Exchange Rate") + exchange_rate_text = fields.Char(string='Exchange Rate (Text)') + partner_personal_number = fields.Char(string='Partner Personal Number') + partner_document_type = fields.Char(string='Partner Document Type') + partner_document_number = fields.Char(string='Partner Document Number') + parent_external_payment_id = fields.Char(string='Parent External Payment ID') + status_code_id = fields.Many2one('brosse.bank.transactions.status.code', string='Status Code') + transaction_type_id = fields.Many2one('brosse.bank.transactions.subtype.code', string='Transaction Type') + + bank_account_id = fields.Many2one('brosse.bank.account', string="Bank Account") + + @api.depends('document_date', 'amount') + def _compute_display_name(self): + for rec in self: + rec.display_name = f"{rec.document_date} / {rec.amount} {rec.currency_id.symbol}" if rec.document_date and rec.amount else "" + + def action_process_selected_records(self): + booking_id = self.env.context.get('booking_id') + booking = self.env['hms.bookings'].browse(booking_id) + + for rec in self: + if booking.payment_ids: + to_pay = booking.total_amount - sum(booking.payment_ids.mapped('amount')) + else: + to_pay = booking.total_amount + + self.env['hms.payments'].create({ + 'bank_payment_id': rec.id, + 'booking_id': booking.id, + 'currency_id': rec.currency_id.id, + 'amount': rec.amount, + 'exchange_rate': rec.exchange_rate, + }) diff --git a/bross_bank_management/security/ir.model.access.csv b/bross_bank_management/security/ir.model.access.csv index 9d4296e..d420549 100644 --- a/bross_bank_management/security/ir.model.access.csv +++ b/bross_bank_management/security/ir.model.access.csv @@ -3,7 +3,9 @@ access_brosse_bank_user,access_brosse_bank,model_brosse_bank,base.group_user,1,1 access_brosse_bank_account_user,access_brosse_bank_account,model_brosse_bank_account,base.group_user,1,1,1,1 access_bank_settings_admin,access_bank_settings,model_bank_settings,base.group_system,1,1,1,1 bross_bank_management.access_bank_raw_movements,access_bank_raw_movements,bross_bank_management.model_bank_raw_movements,base.group_user,1,1,1,1 -bross_bank_management.access_brosse_bank_deposits,access_brosse_bank_deposits,bross_bank_management.model_brosse_bank_deposits,base.group_user,1,1,1,1 +bross_bank_management.access_brosse_bank_transactions,access_brosse_bank_transactions,bross_bank_management.model_brosse_bank_transactions,base.group_user,1,1,1,1 bross_bank_management.access_brosse_service_payments,access_brosse_service_payments,bross_bank_management.model_brosse_service_payments,base.group_user,1,1,1,1 +bross_bank_management.access_add_payments_wizard,access_add_payments_wizard,bross_bank_management.model_add_payments_wizard,base.group_user,1,1,1,1 -bross_bank_management.access_hms_bank_payments,access_hms_bank_payments,bross_bank_management.model_hms_bank_payments,base.group_user,1,1,1,1 +bross_bank_management.access_brosse_bank_transactions_status_code,access_brosse_bank_transactions_status_code,bross_bank_management.model_brosse_bank_transactions_status_code,base.group_user,1,1,1,1 +bross_bank_management.access_brosse_bank_transactions_subtype_code,access_brosse_bank_transactions_subtype_code,bross_bank_management.model_brosse_bank_transactions_subtype_code,base.group_user,1,1,1,1 \ No newline at end of file diff --git a/bross_bank_management/views/bank_payments_views.xml b/bross_bank_management/views/bank_payments_views.xml index 476fd47..68f4eee 100644 --- a/bross_bank_management/views/bank_payments_views.xml +++ b/bross_bank_management/views/bank_payments_views.xml @@ -6,19 +6,8 @@ - - - - - - - - - - - - - + + diff --git a/bross_bank_management/views/bank_deposits_views.xml b/bross_bank_management/views/bank_transactions_views.xml similarity index 53% rename from bross_bank_management/views/bank_deposits_views.xml rename to bross_bank_management/views/bank_transactions_views.xml index 5214b20..8a5fa55 100644 --- a/bross_bank_management/views/bank_deposits_views.xml +++ b/bross_bank_management/views/bank_transactions_views.xml @@ -1,22 +1,23 @@ - + Brosse Bank - - + + code action = records.action_process_selected_records() - - Deposits - brosse.bank.deposits + + Transactions + brosse.bank.transactions + - +
-
@@ -30,32 +31,34 @@
- - Deposits - brosse.bank.deposits + + Transactions + brosse.bank.transactions - + + + + - - - Bank Deposits - brosse.bank.deposits + + Bank Transactions + brosse.bank.transactions list -
diff --git a/bross_bank_management/views/service_payments_views.xml b/bross_bank_management/views/service_payments_views.xml index a06605c..2f49e36 100644 --- a/bross_bank_management/views/service_payments_views.xml +++ b/bross_bank_management/views/service_payments_views.xml @@ -4,7 +4,7 @@ Service Payments brosse.service.payments - + diff --git a/bross_bank_management/wizard/__init__.py b/bross_bank_management/wizard/__init__.py new file mode 100644 index 0000000..7a73d4a --- /dev/null +++ b/bross_bank_management/wizard/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import add_payments \ No newline at end of file diff --git a/bross_bank_management/wizard/add_payments.py b/bross_bank_management/wizard/add_payments.py new file mode 100644 index 0000000..5d15468 --- /dev/null +++ b/bross_bank_management/wizard/add_payments.py @@ -0,0 +1,96 @@ +# -*- coding: utf-8 -*- + +from odoo import models, fields, api, _ + + +class AddPayments(models.TransientModel): + _name = "add.payments.wizard" + _description = "Add Payments Wizard" + + payment_type = fields.Many2one(comodel_name="hms.payment.types", string="Payment Type") + + @api.model + def _transaction_domain(self): + return [('status_code_id', '=', self.env.ref('bross_bank_management.transaction_code_3').id)] + + transaction_id = fields.Many2one(comodel_name="brosse.bank.transactions", domain=_transaction_domain, string="Bank Transaction") + pending_transcation = fields.Boolean(string="Pending Transaction") + + amount_gel = fields.Monetary(string="Amount GEL", currency_field='gel_currency_id') + gel_currency_id = fields.Many2one('res.currency', string='Gel Currency', default=lambda self: self.env['res.currency'].search([('name', '=', 'GEL')]).id) + show_amount_gel = fields.Boolean(string="Show Amount GEL") + + amount = fields.Monetary(string="Amount", currency_field='currency_id') + currency_id = fields.Many2one('res.currency', string='Currency', default=lambda self: self.env['res.currency'].search([('name', '=', 'GEL')]).id) + + exchange_rate = fields.Float(string="Exchange Rate") + hide_exchange_rate = fields.Boolean(string="Hide Exchange Rate") + + booking_id = fields.Many2one(comodel_name="hms.bookings", string="Booking ID") + + expected_payment = fields.Monetary(string="Expected Payment", currency_field='expected_payment_currency') + expected_payment_currency = fields.Many2one('res.currency', string='Expected Payment Currency') + + pos_terminal_code = fields.Char(string="POS Terminal Code") + wire_transfer_code = fields.Char(string="Wire Transfer Code") + + @api.onchange('payment_type') + def onchange_payment_type(self): + if self.payment_type == self.env.ref('bross_hms.payment_type_1'): + self.pending_transcation = True + if self.payment_type == self.env.ref('bross_hms.payment_type_0') or not self.payment_type: + self.pending_transcation = False + + @api.onchange('transaction_id') + def onchange_transaction_id(self): + if self.transaction_id: + self.amount = self.transaction_id.amount + self.currency_id = self.transaction_id.currency_id + + @api.onchange('currency_id') + def onchange_currency_id(self): + if self.currency_id: + gel_currency = self.env['res.currency'].search([('name', '=', 'GEL')]) + if self.currency_id.id == gel_currency.id: + self.exchange_rate = 1.0 + self.amount_gel = self.amount + self.hide_exchange_rate = True + else: + self.exchange_rate = self.currency_id.rate_ids.sorted('id', reverse=True)[0].rate + self.amount_gel = self.amount * self.exchange_rate + self.show_amount_gel = True + self.hide_exchange_rate = False + + @api.onchange('exchange_rate') + def onchange_exchange_rate(self): + if self.exchange_rate: + self.amount_gel = self.amount * self.exchange_rate + + def add_payments(self): + for rec in self: + if rec.payment_type == self.env.ref('bross_hms.payment_type_0'): + pending_transcation = False + transaction_id = False + pos_terminal_code = False + wire_transfer_code = False + elif rec.payment_type == self.env.ref('bross_hms.payment_type_1'): + pending_transcation = rec.pending_transcation + transaction_id = False + pos_terminal_code = rec.pos_terminal_code + wire_transfer_code = False + else: + pending_transcation = rec.pending_transcation + transaction_id = rec.transaction_id.id if rec.transaction_id else False + pos_terminal_code = False + wire_transfer_code = rec.wire_transfer_code + + self.env['hms.payments'].create({ + 'booking_id': rec.booking_id.id, + 'currency_id': rec.currency_id.id, + 'amount': rec.amount, + 'exchange_rate': rec.exchange_rate, + 'pending_transcation': rec.pending_transcation, + 'bank_payment_id': transaction_id, + 'pos_terminal_code': pos_terminal_code, + 'wire_transfer_code': wire_transfer_code, + }) diff --git a/bross_bank_management/wizard/add_payments_view.xml b/bross_bank_management/wizard/add_payments_view.xml new file mode 100644 index 0000000..dc05fdd --- /dev/null +++ b/bross_bank_management/wizard/add_payments_view.xml @@ -0,0 +1,49 @@ + + + + + add.payments.wizard.form + add.payments.wizard + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
\ No newline at end of file diff --git a/bross_hms/__manifest__.py b/bross_hms/__manifest__.py index 58c4de6..2125d1f 100644 --- a/bross_hms/__manifest__.py +++ b/bross_hms/__manifest__.py @@ -13,6 +13,7 @@ 'security/ir.model.access.csv', # 'cron/crons.xml', 'data/payment_methods.xml', + 'data/payment_types.xml', 'data/service_kinds.xml', 'views/misc_menus.xml', 'views/main_menus.xml', @@ -32,11 +33,12 @@ 'views/booking_source.xml', 'views/bookings.xml', 'views/status.xml', + 'views/hms_payments.xml', ], 'assets': { - 'web.assets_backend': [ - 'bross_hms/static/src/scss/required.scss', - ], + # 'web.assets_backend': [ + # 'bross_hms/static/src/scss/required.scss', + # ], }, } diff --git a/bross_hms/data/payment_methods.xml b/bross_hms/data/payment_methods.xml index 05680e8..2570965 100644 --- a/bross_hms/data/payment_methods.xml +++ b/bross_hms/data/payment_methods.xml @@ -40,6 +40,6 @@ Faster payments system 9 - + diff --git a/bross_hms/data/payment_types.xml b/bross_hms/data/payment_types.xml new file mode 100644 index 0000000..9c5de4a --- /dev/null +++ b/bross_hms/data/payment_types.xml @@ -0,0 +1,14 @@ + + + + + Cash + + + POS Terminal + + + Wire Transfer + + + diff --git a/bross_hms/models/__init__.py b/bross_hms/models/__init__.py index fe2d928..5c57168 100644 --- a/bross_hms/models/__init__.py +++ b/bross_hms/models/__init__.py @@ -1,3 +1,5 @@ # -*- coding: utf-8 -*- from . import hms_models +from . import hms_payments +from . import hms_services diff --git a/bross_hms/models/hms_models.py b/bross_hms/models/hms_models.py index 38778dc..214b45a 100644 --- a/bross_hms/models/hms_models.py +++ b/bross_hms/models/hms_models.py @@ -157,6 +157,8 @@ class HmsBookings(models.Model): groupName = fields.Char(string="Group Name") currencyId = fields.Char(string="Currency ID") customer = fields.Many2one(comodel_name="hms.customer", string="Customer") + + payment_ids = fields.One2many(comodel_name="hms.payments", inverse_name="booking_id", string="Booking Payments") roomStays = fields.One2many(comodel_name="hms.roomstays", inverse_name="bookings_id", string="RoomStays") @@ -211,19 +213,58 @@ class HmsBookings(models.Model): booking.paymentMethod = booking.reservation_ids[0].paymentMethod if booking.reservation_ids else False booking.payment_status = 'completely_paid' if booking.paid == booking.total_amount else 'partially_paid' if booking.paid > 0 else 'not_paid' - def add_bank_deposits(self): + # def add_bank_transactions(self): + # return { + # 'name': _('Add bank transactions'), + # 'type': 'ir.actions.act_window', + # 'view_mode': 'list', + # 'res_model': 'brosse.bank.transactions', + # 'view_id': self.env.ref('bross_bank_management.view_brosse_bank_transactions_operation_list').id, + # 'target': 'new', + # 'context': { + # 'booking_id': self.id, + # 'create': False, + # 'edit': False + # } + # } + + def add_bank_transactions(self): + gel_currency_id = self.env['res.currency'].search([('name', '=', 'GEL')]) + wire_transfer_id = self.env.ref('bross_hms.payment_type_2').id + + expected_payment = self.total_amount + + paid_amount = 0 + if self.payment_ids: + for payment in self.payment_ids: + if self.currency.id == gel_currency_id.id: + if payment.currency_id.id != gel_currency_id.id: + paid_amount += payment.amount * payment.exchange_rate + else: + paid_amount += payment.amount + else: + if payment.currency_id.id == gel_currency_id.id: + paid_amount += payment.amount / self.currency.rate_ids.sorted('id', reverse=True)[0].rate + else: + if self.currency.id == payment.currency_id.id: + paid_amount += payment.amount + else: + paid_amount += payment.amount * gel_currency_id.rate_ids.sorted('id', reverse=True)[0].rate / self.currency.rate_ids.sorted('id', reverse=True)[0].rate + + expected_payment = expected_payment - paid_amount return { - 'name': 'Add bank deposit', + 'name': _('Add Payments'), 'type': 'ir.actions.act_window', - 'view_mode': 'list', - 'view_type': 'form', - 'res_model': 'brosse.bank.deposits', - # 'res_id': self.id, - 'view_id': self.env.ref('bross_bank_management.view_brosse_bank_deposits_list').id, + 'view_mode': 'form', + 'res_model': 'add.payments.wizard', + 'view_id': self.env.ref('bross_bank_management.add_payments_wizard_view_form').id, 'target': 'new', 'context': { - 'booking_id': self.id, - 'create': False, + 'default_payment_type': wire_transfer_id, + 'default_booking_id': self.id, + 'default_gel_currency_id': gel_currency_id.id, + 'default_expected_payment': expected_payment, + 'default_expected_payment_currency': self.currency.id, } } diff --git a/bross_hms/models/hms_payments.py b/bross_hms/models/hms_payments.py new file mode 100644 index 0000000..c49d9a2 --- /dev/null +++ b/bross_hms/models/hms_payments.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- + +import requests +import logging +import json +from odoo import models, fields, api, _ +from datetime import datetime, timedelta + + +_logger = logging.getLogger(__name__) + + +class HmsPaymentTypes(models.Model): + _name = 'hms.payment.types' + _description = 'Hms Payment Types' + _rec_name = 'name' + + name = fields.Char(string="Name") + + +class HmsPayments(models.Model): + _name = 'hms.payments' + _description = 'Hms Payments' + _rec_name = 'booking_id' + + booking_id = fields.Many2one(comodel_name="hms.bookings", string="Booking ID") + + hms_service_id = fields.Many2one(comodel_name="hms.services", string="Service") + + hms_payment_type_id = fields.Many2one(comodel_name="hms.payment.types", string="Payment Type") + + pending_transcation = fields.Boolean(string="Pending Transaction") + + currency_id = fields.Many2one(comodel_name="res.currency", string="Currency") + amount = fields.Monetary(string="Amount", currency_field='currency_id') + exchange_rate = fields.Float(string="Exchange Rate") + notes = fields.Text(string="Notes") + + pos_terminal_code = fields.Char(string="POS Terminal Code") + wire_transfer_code = fields.Char(string="Wire Transfer Code") + + def open_payment_record(self): + self.ensure_one() + return { + 'name': _('Payment'), + 'view_mode': 'form', + 'res_model': 'hms.payments', + 'type': 'ir.actions.act_window', + 'view_id': self.env.ref('bross_hms.view_hms_payments_form').id, + 'res_id': self.id, + 'target': 'new', + 'context': { + 'create': False, + 'edit': False + } + } \ No newline at end of file diff --git a/bross_hms/models/hms_services.py b/bross_hms/models/hms_services.py new file mode 100644 index 0000000..1a4a258 --- /dev/null +++ b/bross_hms/models/hms_services.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- + +import requests +import logging +import json +from odoo import models, fields, api, _ +from datetime import datetime, timedelta + + +_logger = logging.getLogger(__name__) + diff --git a/bross_hms/security/ir.model.access.csv b/bross_hms/security/ir.model.access.csv index 7b6d80f..9b0dbf3 100644 --- a/bross_hms/security/ir.model.access.csv +++ b/bross_hms/security/ir.model.access.csv @@ -21,4 +21,7 @@ bross_hms.access_hms_service_vat_kinds,access_hms_service_vat_kinds,bross_hms.mo bross_hms.access_hms_services,access_hms_services,bross_hms.model_hms_services,base.group_user,1,1,1,1 bross_hms.access_hms_payment_methods,access_hms_payment_methods,bross_hms.model_hms_payment_methods,base.group_user,1,1,1,1 bross_hms.access_hms_booking_source,access_hms_booking_source,bross_hms.model_hms_booking_source,base.group_user,1,1,1,1 -bross_hms.access_hms_reservations,access_hms_reservations,bross_hms.model_hms_reservations,base.group_user,1,1,1,1 \ No newline at end of file +bross_hms.access_hms_reservations,access_hms_reservations,bross_hms.model_hms_reservations,base.group_user,1,1,1,1 + +bross_hms.access_hms_payments,access_hms_payments,bross_hms.model_hms_payments,base.group_user,1,1,1,1 +bross_hms.access_hms_payment_types,access_hms_payment_types,bross_hms.model_hms_payment_types,base.group_user,1,1,1,1 diff --git a/bross_hms/views/bookings.xml b/bross_hms/views/bookings.xml index 461c8ea..ea1342e 100644 --- a/bross_hms/views/bookings.xml +++ b/bross_hms/views/bookings.xml @@ -6,13 +6,13 @@ hms.bookings + + + + + +
+
+ +
+ +
+ + + + \ No newline at end of file diff --git a/restore_buttons/static/src/xml/save_discard.xml b/restore_buttons/static/src/xml/save_discard.xml new file mode 100644 index 0000000..d810632 --- /dev/null +++ b/restore_buttons/static/src/xml/save_discard.xml @@ -0,0 +1,10 @@ + + + + Discard + + + Save + + +