Compare commits
No commits in common. "5d0ec2ca01d075fdd7679d6cdcf7250141b7a821" and "464e155f98a52a43abe602be48890b39b3aa3e49" have entirely different histories.
5d0ec2ca01
...
464e155f98
@ -14,7 +14,6 @@
|
||||
'data/bank_conf.xml',
|
||||
'data/bank_transactions_status_code.xml',
|
||||
'data/bank_transactions_subtype_code.xml',
|
||||
'data/regex_paterns.xml',
|
||||
'cron/crons.xml',
|
||||
'views/main_menu.xml',
|
||||
'views/bank_views.xml',
|
||||
@ -23,7 +22,6 @@
|
||||
'views/raw_movements.xml',
|
||||
'views/bank_transactions_views.xml',
|
||||
'views/service_payments_views.xml',
|
||||
'views/transactions_regex.xml',
|
||||
'views/bank_payments_views.xml',
|
||||
'wizard/add_payments_view.xml',
|
||||
],
|
||||
|
||||
@ -1,25 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="regex_patern_1" model="hms.payment.categories.regex">
|
||||
<field name="name">Salary</field>
|
||||
<field name="regex">^ხელფასი</field>
|
||||
<field name="category_id" ref="bross_hms.payment_category_3"/>
|
||||
</record>
|
||||
<record id="regex_patern_2" model="hms.payment.categories.regex">
|
||||
<field name="name">Service Revenue</field>
|
||||
<field name="regex">^\d+(\.\d+)?$</field>
|
||||
<field name="category_id" ref="bross_hms.payment_category_1"/>
|
||||
</record>
|
||||
<record id="regex_patern_3" model="hms.payment.categories.regex">
|
||||
<field name="name">Bank Fees</field>
|
||||
<field name="regex">გადარიცხვის საკომისიო</field>
|
||||
<field name="category_id" ref="bross_hms.payment_category_4"/>
|
||||
</record>
|
||||
<record id="regex_patern_4" model="hms.payment.categories.regex">
|
||||
<field name="name">Bank Fees</field>
|
||||
<field name="regex">საკასო მომსახურების საკომისიო</field>
|
||||
<field name="category_id" ref="bross_hms.payment_category_4"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
@ -3,6 +3,5 @@ from . import bank_account
|
||||
from . import bank_settings
|
||||
from . import bank_models
|
||||
from . import bank_transactions
|
||||
from . import hms_payments_inherit
|
||||
from . import bank_payments
|
||||
from . import service_payments
|
||||
from . import transactions_regex
|
||||
7
bross_bank_management/models/bank_payments.py
Normal file
7
bross_bank_management/models/bank_payments.py
Normal file
@ -0,0 +1,7 @@
|
||||
from odoo import models, fields, _
|
||||
|
||||
|
||||
class HmsPayments(models.Model):
|
||||
_inherit = 'hms.payments'
|
||||
|
||||
bank_payment_id = fields.Many2one(comodel_name="brosse.bank.transactions", string="Bank Payment ID")
|
||||
@ -49,47 +49,8 @@ class BrosseBankTransactions(models.Model):
|
||||
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')
|
||||
|
||||
payments_ids = fields.One2many(comodel_name="hms.payments", inverse_name="transaction_id", string="HMS Payments")
|
||||
|
||||
unassigned_amount = fields.Monetary(string="Unassigned Amount", currency_field='currency_id', compute="_compute_unassigned_amount")
|
||||
|
||||
bank_account_id = fields.Many2one('brosse.bank.account', string="Bank Account")
|
||||
|
||||
category_id = fields.Many2one('hms.payment.categories', string='Category')
|
||||
manually_assigned = fields.Boolean(string="Manually Assigned", default=False)
|
||||
|
||||
@api.depends('payments_ids')
|
||||
def _compute_unassigned_amount(self):
|
||||
for rec in self:
|
||||
if rec.payments_ids:
|
||||
gel_currency_id = self.env['res.currency'].search([('name', '=', 'GEL')])
|
||||
payments = 0
|
||||
unassigned_amount = 0
|
||||
for payment in rec.payments_ids:
|
||||
if rec.currency_id.id == gel_currency_id.id:
|
||||
if payment.currency_id.id == rec.currency_id.id:
|
||||
payments += payment.amount
|
||||
else:
|
||||
payments += payment.amount * payment.currency_id.rate_ids.sorted('id', reverse=True)[0].rate
|
||||
else:
|
||||
if payment.currency_id.id == rec.currency_id.id:
|
||||
payments += payment.amount
|
||||
else:
|
||||
payments += payment.amount * payment.currency_id.rate_ids.sorted('id', reverse=True)[0].rate / rec.currency_id.rate_ids.sorted('id', reverse=True)[0].rate
|
||||
|
||||
print(f"################## {payments}")
|
||||
unassigned_amount = rec.amount - payments
|
||||
else:
|
||||
unassigned_amount = rec.amount
|
||||
rec.unassigned_amount = unassigned_amount
|
||||
|
||||
@api.onchange('category_id')
|
||||
def onchange_category_id(self):
|
||||
if self.category_id:
|
||||
self.write({'manually_assigned': True})
|
||||
print(self.manually_assigned)
|
||||
print('movida')
|
||||
|
||||
@api.depends('document_date', 'amount')
|
||||
def _compute_display_name(self):
|
||||
for rec in self:
|
||||
@ -106,7 +67,7 @@ class BrosseBankTransactions(models.Model):
|
||||
to_pay = booking.total_amount
|
||||
|
||||
self.env['hms.payments'].create({
|
||||
'transaction_id': rec.id,
|
||||
'bank_payment_id': rec.id,
|
||||
'booking_id': booking.id,
|
||||
'currency_id': rec.currency_id.id,
|
||||
'amount': rec.amount,
|
||||
|
||||
@ -1,7 +0,0 @@
|
||||
from odoo import models, fields, _
|
||||
|
||||
|
||||
class HmsPayments(models.Model):
|
||||
_inherit = 'hms.payments'
|
||||
|
||||
transaction_id = fields.Many2one(comodel_name="brosse.bank.transactions", string="Bank Transaction")
|
||||
@ -1,35 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
from odoo import models, fields, api, _
|
||||
|
||||
|
||||
class PaymentCategoriesRegex(models.Model):
|
||||
_name = 'hms.payment.categories.regex'
|
||||
_description = 'Payment Categories Regex'
|
||||
|
||||
name = fields.Char('Name', required=True)
|
||||
regex = fields.Char('Regex', required=True)
|
||||
category_id = fields.Many2one(comodel_name="hms.payment.categories", string="Category")
|
||||
|
||||
def search_transactions_with_wallet_and_domestic(self, regex_patern):
|
||||
pattern = re.compile(regex_patern, re.IGNORECASE)
|
||||
transactions = self.env['brosse.bank.transactions'].search([('manually_assigned', '!=', True)])
|
||||
|
||||
matching_transactions = []
|
||||
for transaction in transactions:
|
||||
amount = str(transaction.amount or 0)
|
||||
description = transaction.description or ''
|
||||
comment = transaction.comment or ''
|
||||
|
||||
if pattern.search(amount) or pattern.search(description) or pattern.search(comment):
|
||||
matching_transactions.append(transaction)
|
||||
return matching_transactions
|
||||
|
||||
def write(self, vals):
|
||||
res = super(PaymentCategoriesRegex, self).write(vals)
|
||||
matching_transactions = self.search_transactions_with_wallet_and_domestic(self.regex)
|
||||
|
||||
for transaction in matching_transactions:
|
||||
transaction.write({'category_id': self.category_id.id})
|
||||
return res
|
||||
@ -8,6 +8,4 @@ bross_bank_management.access_brosse_service_payments,access_brosse_service_payme
|
||||
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_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
|
||||
|
||||
bross_bank_management.access_hms_payment_categories_regex,access_hms_payment_categories_regex,bross_bank_management.model_hms_payment_categories_regex,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
|
||||
|
@ -7,7 +7,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//field[@name='amount']" position="before">
|
||||
<field name="transaction_id" optional="hide" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
<field name="bank_payment_id" optional="hide" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
</xpath>
|
||||
</data>
|
||||
</field>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="action_process_selected_brosse_bank_transactions" model="ir.actions.server">
|
||||
<field name="name">Bank</field>
|
||||
<field name="name">Brosse Bank</field>
|
||||
<field name="model_id" ref="model_brosse_bank_transactions"/>
|
||||
<field name="binding_model_id" ref="model_brosse_bank_transactions"/>
|
||||
<field name="state">code</field>
|
||||
@ -17,22 +17,20 @@
|
||||
<field name="arch" type="xml">
|
||||
<list string="Bank Transactions" editable="bottom">
|
||||
<header>
|
||||
<button name="%(action_process_selected_brosse_bank_transactions)d" type="action" string="Map transactions" class="btn-primary"/>
|
||||
<button name="%(action_process_selected_brosse_bank_transactions)d" type="action" string="Add bank transactions" class="btn-primary"/>
|
||||
</header>
|
||||
<field name="bank_account_id"/>
|
||||
<field name="amount"/>
|
||||
<field name="unassigned_amount" force_save="1"/>
|
||||
<field name="currency_id" optional="show" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
<field name="category_id" optional="show" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
<field name="description" optional="show"/>
|
||||
<field name="comment" optional="show"/>
|
||||
<field name="partner_name" optional="show"/>
|
||||
<field name="taxpayer_name" optional="show"/>
|
||||
<field name="manually_assigned" column_invisible="1" force_save="1" />
|
||||
<field name="currency_id" column_invisible='1'/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="view_brosse_bank_transactions_list" model="ir.ui.view">
|
||||
<field name="name">Transactions</field>
|
||||
<field name="model">brosse.bank.transactions</field>
|
||||
@ -40,16 +38,13 @@
|
||||
<list string="Bank Transactions" editable="bottom">
|
||||
<field name="bank_account_id"/>
|
||||
<field name="amount"/>
|
||||
<field name="unassigned_amount" force_save="1"/>
|
||||
<field name="exchange_rate"/>
|
||||
<field name="exchange_rate_text"/>
|
||||
<field name="currency_id" optional="hide" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
<field name="category_id" optional="show" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
<field name="currency_id" optional="hide"/>
|
||||
<field name="description" optional="show"/>
|
||||
<field name="comment" optional="show"/>
|
||||
<field name="partner_name" optional="show"/>
|
||||
<field name="taxpayer_name" optional="show"/>
|
||||
<field name="manually_assigned" column_invisible="1" force_save="1" />
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="view_hms_payment_categories_regex_tree" model="ir.ui.view">
|
||||
<field name="name">Payment Categories Regex</field>
|
||||
<field name="model">hms.payment.categories.regex</field>
|
||||
<field name="arch" type="xml">
|
||||
<list editable="bottom">
|
||||
<field name="name"/>
|
||||
<field name="regex"/>
|
||||
<field name="category_id"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_hms_payment_categories_regex_action" model="ir.actions.act_window">
|
||||
<field name="name">Payment Categories Regex</field>
|
||||
<field name="res_model">hms.payment.categories.regex</field>
|
||||
<field name="view_mode">list</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create your first payment category regex record.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<menuitem name="Payment Categories Regex" parent="bross_hms.finance_root_menu" id="finance_payment_categories_regex" sequence="40" action="action_hms_payment_categories_regex_action"/>
|
||||
</data>
|
||||
</odoo>
|
||||
@ -11,7 +11,6 @@ class AddPayments(models.TransientModel):
|
||||
|
||||
@api.model
|
||||
def _transaction_domain(self):
|
||||
print(self.env.ref('bross_bank_management.transaction_code_3').id)
|
||||
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")
|
||||
@ -84,17 +83,14 @@ class AddPayments(models.TransientModel):
|
||||
transaction_id = rec.transaction_id.id if rec.transaction_id else False
|
||||
pos_terminal_code = False
|
||||
wire_transfer_code = rec.wire_transfer_code
|
||||
|
||||
print(transaction_id)
|
||||
|
||||
self.env['hms.payments'].create({
|
||||
'hms_payment_type_id': rec.payment_type.id,
|
||||
'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,
|
||||
'transaction_id': transaction_id,
|
||||
'bank_payment_id': transaction_id,
|
||||
'pos_terminal_code': pos_terminal_code,
|
||||
'wire_transfer_code': wire_transfer_code,
|
||||
})
|
||||
|
||||
@ -14,7 +14,6 @@
|
||||
# 'cron/crons.xml',
|
||||
'data/payment_methods.xml',
|
||||
'data/payment_types.xml',
|
||||
'data/payment_categories.xml',
|
||||
'data/service_kinds.xml',
|
||||
'views/misc_menus.xml',
|
||||
'views/main_menus.xml',
|
||||
@ -33,8 +32,6 @@
|
||||
'views/source_channels.xml',
|
||||
'views/booking_source.xml',
|
||||
'views/bookings.xml',
|
||||
'views/room_revenue.xml',
|
||||
'views/service_categories.xml',
|
||||
'views/status.xml',
|
||||
'views/hms_payments.xml',
|
||||
],
|
||||
|
||||
@ -1,23 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="0">
|
||||
<record id="payment_category_1" model="hms.payment.categories">
|
||||
<field name="name">Service Revenue</field>
|
||||
</record>
|
||||
<record id="payment_category_2" model="hms.payment.categories">
|
||||
<field name="name">Tax</field>
|
||||
</record>
|
||||
<record id="payment_category_3" model="hms.payment.categories">
|
||||
<field name="name">Salary</field>
|
||||
</record>
|
||||
<record id="payment_category_4" model="hms.payment.categories">
|
||||
<field name="name">Bank Fees</field>
|
||||
</record>
|
||||
<record id="payment_category_5" model="hms.payment.categories">
|
||||
<field name="name">Lease Expenses</field>
|
||||
</record>
|
||||
<record id="payment_category_6" model="hms.payment.categories">
|
||||
<field name="name">Other Expenses</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<data noupdate="0">
|
||||
<record id="payment_type_0" model="hms.payment.types">
|
||||
<field name="name">Cash</field>
|
||||
</record>
|
||||
|
||||
@ -177,39 +177,16 @@ class HmsBookings(models.Model):
|
||||
paid = fields.Monetary(string="Paid Amount", compute="_compute_checkin_checkout_date", currency_field='currency', store=True)
|
||||
to_be_paid = fields.Monetary(string="To Pay Amount", compute="_compute_checkin_checkout_date", currency_field='currency', store=True)
|
||||
currency = fields.Many2one(comodel_name="res.currency", string="Currency")
|
||||
expected_payment = fields.Monetary(string="Expected Payment", compute="_compute_checkin_checkout_date", currency_field='currency', store=True)
|
||||
|
||||
paymentMethod = fields.Many2one(comodel_name="hms.payment.methods", string="Payment Method", compute="_compute_checkin_checkout_date", store=True)
|
||||
|
||||
payment_status = fields.Selection(
|
||||
[('completely_paid', 'Completely Paid'), ('partially_paid', 'Partially Paid'), ('not_paid', 'Not Paid')], string="Payment Status", compute="_compute_checkin_checkout_date", store=True)
|
||||
[('completely_paid', 'Completely Paid'), ('partially_paid', 'Partially Paid'), ('not_paid', 'Not Paid')], string="Payment Status", compute="_compute_checkin_checkout_date", store=True
|
||||
)
|
||||
|
||||
booking_status = fields.Many2one(comodel_name="hms.booking.status", string="Booking Status", compute="_compute_checkin_checkout_date", store=True)
|
||||
status = fields.Many2one(comodel_name="hms.status", string="Status", compute="_compute_checkin_checkout_date", store=True)
|
||||
|
||||
@api.depends('roomStays', 'payment_ids')
|
||||
@api.depends('roomStays')
|
||||
def _compute_checkin_checkout_date(self):
|
||||
for booking in self:
|
||||
# Status fields
|
||||
if booking.roomStays.filtered(lambda stay: stay.bookingStatus.name == 'Confirmed'):
|
||||
booking.booking_status = self.env['hms.booking.status'].search([('name', '=', 'Confirmed')]).id
|
||||
elif not booking.roomStays.filtered(lambda stay: stay.bookingStatus.name != 'Cancelled'):
|
||||
booking.booking_status = self.env['hms.booking.status'].search([('name', '=', 'Cancelled')]).id
|
||||
elif not booking.roomStays.filtered(lambda stay: stay.bookingStatus.name != 'Pending'):
|
||||
booking.booking_status = self.env['hms.booking.status'].search([('name', '=', 'UpcoPendingming')]).id
|
||||
|
||||
if not booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedIn') and not booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedOut') and booking.roomStays.filtered(lambda stay: stay.status.name == 'New'):
|
||||
booking.status = self.env['hms.status'].search([('name', '=', 'Upcoming')]).id
|
||||
elif booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedIn'):
|
||||
booking.status = self.env['hms.status'].search([('name', '=', 'CheckedIn')]).id
|
||||
elif booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedOut'):
|
||||
booking.status = self.env['hms.status'].search([('name', '=', 'CheckedOut')]).id
|
||||
elif not booking.roomStays.filtered(lambda stay: stay.status.name != 'Cancelled'):
|
||||
booking.status = self.env['hms.status'].search([('name', '=', 'Cancelled')]).id
|
||||
elif not booking.roomStays.filtered(lambda stay: stay.status.name != 'No Show'):
|
||||
booking.status = self.env['hms.status'].search([('name', '=', 'No Show')]).id
|
||||
|
||||
# Computed fields
|
||||
checkin_dates = booking.roomStays.mapped('checkInDateTime')
|
||||
checkout_dates = booking.roomStays.mapped('checkOutDateTime')
|
||||
|
||||
@ -234,43 +211,8 @@ class HmsBookings(models.Model):
|
||||
booking.to_be_paid = sum(stay.totalPrice.get('toPayAmount', 0) for stay in booking.roomStays if stay.totalPrice)
|
||||
booking.currency = booking.reservation_ids[0].currency if booking.reservation_ids else False
|
||||
booking.paymentMethod = booking.reservation_ids[0].paymentMethod if booking.reservation_ids else False
|
||||
|
||||
paid_amount = booking.compute_paid_amount()
|
||||
|
||||
if booking.total_amount != 0:
|
||||
expected_payment = booking.total_amount - paid_amount
|
||||
booking.expected_payment = expected_payment
|
||||
booking.payment_status = 'completely_paid' if booking.paid == booking.total_amount else 'partially_paid' if booking.paid > 0 else 'not_paid'
|
||||
|
||||
if expected_payment <= 0:
|
||||
booking.payment_status = 'completely_paid'
|
||||
elif booking.total_amount > expected_payment:
|
||||
booking.payment_status = 'partially_paid'
|
||||
else:
|
||||
booking.payment_status = 'not_paid'
|
||||
else:
|
||||
booking.payment_status = 'not_paid'
|
||||
|
||||
def compute_paid_amount(self):
|
||||
gel_currency_id = self.env['res.currency'].search([('name', '=', 'GEL')])
|
||||
|
||||
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
|
||||
return paid_amount
|
||||
|
||||
# def add_bank_transactions(self):
|
||||
# return {
|
||||
# 'name': _('Add bank transactions'),
|
||||
@ -292,7 +234,22 @@ class HmsBookings(models.Model):
|
||||
|
||||
expected_payment = self.total_amount
|
||||
|
||||
paid_amount = self.compute_paid_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 {
|
||||
|
||||
@ -1,10 +1,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import requests
|
||||
import logging
|
||||
import json
|
||||
from odoo import models, fields, api, _
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
|
||||
class PaymentCategories(models.Model):
|
||||
_name = 'hms.payment.categories'
|
||||
_description = 'Payment Categories'
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
name = fields.Char('Name', required=True)
|
||||
|
||||
@ -25,4 +25,3 @@ bross_hms.access_hms_reservations,access_hms_reservations,bross_hms.model_hms_re
|
||||
|
||||
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
|
||||
bross_hms.access_hms_payment_categories,access_hms_payment_categories,bross_hms.model_hms_payment_categories,base.group_user,1,1,1,0
|
||||
|
||||
|
@ -6,18 +6,13 @@
|
||||
<field name="model">hms.bookings</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="number" optional="show"/>
|
||||
<field name="customer" optional="show"/>
|
||||
<field name="checkin_date" optional="show"/>
|
||||
<field name="checkout_date" optional="show"/>
|
||||
<field name="night" optional="show"/>
|
||||
<field name="total_amount" optional="show"/>
|
||||
<field name="currency" column_invisible="1"/>
|
||||
<field name="sourceChannelName" optional="show"/>
|
||||
<field name="booking_date" optional="show"/>
|
||||
<field name="payment_status" optional="show"/>
|
||||
<field name="booking_status" optional="show"/>
|
||||
<field name="status" optional="show"/>
|
||||
<button name="add_bank_transactions" type="object" string="Add bank transactions" class="btn btn-primary"/>
|
||||
<field name="bid"/>
|
||||
<field name="number"/>
|
||||
<field name="customerLanguage"/>
|
||||
<field name="lastModified"/>
|
||||
<field name="currencyId"/>
|
||||
<field name="sourceChannelName"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
@ -28,12 +23,10 @@
|
||||
<field name="arch" type="xml">
|
||||
<form edit="1">
|
||||
<header>
|
||||
<button name="add_bank_transactions" type="object" string="Add bank transactions" class="btn btn-primary"/>
|
||||
<field name="payment_status" widget="statusbar"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<widget name="web_ribbon" title="Completely Paid" bg_color="bg-success" invisible="payment_status != 'completely_paid'"/>
|
||||
<widget name="web_ribbon" title="Partially Paid" bg_color="bg-warning" invisible="payment_status != 'partially_paid'"/>
|
||||
<widget name="web_ribbon" title="Not Paid" bg_color="bg-danger" invisible="payment_status != 'not_paid'"/>
|
||||
<div class="oe_title">
|
||||
<h1><field name="bid"/></h1>
|
||||
</div>
|
||||
@ -60,10 +53,7 @@
|
||||
<field name="roomstays_count"/>
|
||||
<field name="total_amount"/>
|
||||
<field name="to_be_paid"/>
|
||||
<field name="expected_payment"/>
|
||||
<field name="currency" invisible="1"/>
|
||||
<field name="booking_status"/>
|
||||
<field name="status"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
@ -74,7 +64,7 @@
|
||||
<page name="payments" string="Payments">
|
||||
<separator string="Payments"/>
|
||||
<field name="payment_ids">
|
||||
<list create="0" delete="0" edit="0">
|
||||
<list editable="bottom" create="1" delete="1" edit="1">
|
||||
<button name="open_payment_record" type="object" string="Open Payment" class="btn btn-primary"/>
|
||||
<field name="hms_payment_type_id" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
<field name="amount"/>
|
||||
@ -140,9 +130,6 @@
|
||||
<field name="name">Reception</field>
|
||||
<field name="res_model">hms.bookings</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="view_ids" eval="[(5, 0, 0),
|
||||
(0, 0, {'view_mode': 'list', 'view_id': ref('view_hms_bookings_tree')}),
|
||||
(0, 0, {'view_mode': 'form', 'view_id': ref('view_hms_bookings_form')})]"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create your first booking record.
|
||||
|
||||
@ -1,158 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="view_hms_bookings_tree_finance" model="ir.ui.view">
|
||||
<field name="name">Room Revenue</field>
|
||||
<field name="model">hms.bookings</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<button name="add_bank_transactions" type="object" string="Map transactions" class="btn btn-primary"/>
|
||||
<field name="number" optional="show"/>
|
||||
<field name="customer" optional="show"/>
|
||||
<field name="checkin_date" optional="show"/>
|
||||
<field name="checkout_date" optional="show"/>
|
||||
<field name="night" optional="show"/>
|
||||
<field name="total_amount" optional="show"/>
|
||||
<field name="expected_payment" optional="show"/>
|
||||
<field name="currency" column_invisible="1"/>
|
||||
<field name="sourceChannelName" optional="show"/>
|
||||
<field name="booking_date" optional="show"/>
|
||||
<field name="payment_status" optional="show"/>
|
||||
<field name="booking_status" optional="show"/>
|
||||
<field name="status" optional="show"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_hms_bookings_form_finance" model="ir.ui.view">
|
||||
<field name="name">Room Revenue</field>
|
||||
<field name="model">hms.bookings</field>
|
||||
<field name="arch" type="xml">
|
||||
<form edit="1">
|
||||
<header>
|
||||
<button name="add_bank_transactions" type="object" string="Map transactions" class="btn btn-primary"/>
|
||||
<field name="payment_status" widget="statusbar"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<widget name="web_ribbon" title="Completely Paid" bg_color="bg-success" invisible="payment_status != 'completely_paid'"/>
|
||||
<widget name="web_ribbon" title="Partially Paid" bg_color="bg-warning" invisible="payment_status != 'partially_paid'"/>
|
||||
<widget name="web_ribbon" title="Not Paid" bg_color="bg-danger" invisible="payment_status != 'not_paid'"/>
|
||||
<div class="oe_title">
|
||||
<h1><field name="bid"/></h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="number"/>
|
||||
<field name="customerLanguage"/>
|
||||
<field name="visitPurpose"/>
|
||||
<!-- <button name="json_data_store_visit" type="object" class="btn btn-primary" string="Visit Purpose"/> -->
|
||||
<field name="customerComment"/>
|
||||
<field name="lastModified"/>
|
||||
<field name="groupName"/>
|
||||
<field name="currencyId"/>
|
||||
<field name="customer"/>
|
||||
<field name="customerCompany"/>
|
||||
<field name="source"/>
|
||||
<field name="sourceChannelName"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="checkin_date"/>
|
||||
<field name="checkout_date"/>
|
||||
<field name="booking_date"/>
|
||||
<field name="night"/>
|
||||
<field name="roomstays_count"/>
|
||||
<field name="total_amount"/>
|
||||
<field name="to_be_paid"/>
|
||||
<field name="expected_payment"/>
|
||||
<field name="currency" invisible="1"/>
|
||||
<field name="booking_status"/>
|
||||
<field name="status"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="roomStays" widget="many2many_tags"/>
|
||||
</group>
|
||||
<group>
|
||||
<notebook>
|
||||
<page name="payments" string="Payments">
|
||||
<separator string="Payments"/>
|
||||
<field name="payment_ids">
|
||||
<list editable="bottom" create="1" delete="1" edit="1">
|
||||
<button name="open_payment_record" type="object" string="Open Payment" class="btn btn-primary"/>
|
||||
<field name="hms_payment_type_id" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
<field name="amount"/>
|
||||
<field name="currency_id" optional="hide" readonly="1" force_save="1"/>
|
||||
<field name="exchange_rate" optional="show" readonly="1" force_save="1"/>
|
||||
<field name="create_date" optional="show"/>
|
||||
<field name="create_uid" optional="show"/>
|
||||
<field name="write_date" optional="show"/>
|
||||
<field name="write_uid" optional="show"/>
|
||||
<field name="notes"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page name="room_stays" string="Room Stays">
|
||||
<separator string="Room Stays"/>
|
||||
<field name="roomStays">
|
||||
<list>
|
||||
<field name="roomId" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
<field name="roomTypeId" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
<field name="guestsIds" optional="hide" widget="many2many_tags" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
<field name="checkInDateTime"/>
|
||||
<field name="checkOutDateTime"/>
|
||||
<field name="actualCheckInDateTime"/>
|
||||
<field name="actualCheckOutDateTime"/>
|
||||
<field name="status" optional="hide" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
<field name="bookingStatus" optional="hide" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
<field name="totalPrice" optional="hide"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
<page name="reservations" string="Reservations">
|
||||
<separator string="Reservations"/>
|
||||
<field name="reservation_ids">
|
||||
<list>
|
||||
<field name="bid"/>
|
||||
<field name="customerIndex" optional="hide" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
<field name="agentIndex" optional="hide" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
<field name="roomNumber" optional="hide" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
<field name="roomTypeId" optional="hide" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
<field name="guestId" optional="hide" widget="many2many_tags" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
<field name="checkInDateTime" optional="hide"/>
|
||||
<field name="checkOutDateTime" optional="hide"/>
|
||||
<field name="checkInDateTime_date"/>
|
||||
<field name="checkOutDateTime_date"/>
|
||||
<field name="creationDateTime_date"/>
|
||||
<field name="paymentMethod" optional="hide"/>
|
||||
<field name="paid" optional="hide"/>
|
||||
<field name="tax" optional="hide"/>
|
||||
<field name="total" optional="show"/>
|
||||
<field name="balance" optional="hide"/>
|
||||
<field name="currency" optional="hide"/>
|
||||
</list>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_hms_bookings_action_finance" model="ir.actions.act_window">
|
||||
<field name="name">Room Revenue</field>
|
||||
<field name="res_model">hms.bookings</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="view_ids" eval="[(5, 0, 0),
|
||||
(0, 0, {'view_mode': 'list', 'view_id': ref('view_hms_bookings_tree_finance')}),
|
||||
(0, 0, {'view_mode': 'form', 'view_id': ref('view_hms_bookings_form_finance')})]"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create your first booking record.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<menuitem name="Room Revenue" parent="finance_root_menu" id="reception_root_menu_finance" sequence="20" action="action_hms_bookings_action_finance"/>
|
||||
</data>
|
||||
</odoo>
|
||||
@ -1,27 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="view_hms_payment_categories_tree" model="ir.ui.view">
|
||||
<field name="name">Payment Categories</field>
|
||||
<field name="model">hms.payment.categories</field>
|
||||
<field name="arch" type="xml">
|
||||
<list editable="bottom">
|
||||
<field name="name"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_hms_payment_categories_action" model="ir.actions.act_window">
|
||||
<field name="name">Payment Categories</field>
|
||||
<field name="res_model">hms.payment.categories</field>
|
||||
<field name="view_mode">list</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create your first payment category record.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<menuitem name="Payment Categories" parent="finance_root_menu" id="finance_payment_categories" sequence="30" action="action_hms_payment_categories_action"/>
|
||||
</data>
|
||||
</odoo>
|
||||
Loading…
Reference in New Issue
Block a user