[REF] fix precommit

This commit is contained in:
Robin Keunen
2023-06-21 15:26:14 +02:00
committed by Darío Lodeiros
parent 587aac7f96
commit 66a985eb36
74 changed files with 3677 additions and 1838 deletions

2
pos_pms_link/models/__init__.py Executable file → Normal file
View File

@@ -25,4 +25,4 @@ from . import pos_payment
from . import pms_reservation
from . import pms_service
from . import product_pricelist
from . import pos_session
from . import pos_session

View File

@@ -17,15 +17,22 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from odoo import models, api
from odoo import api, models
class PMSReservation(models.Model):
_inherit = 'pms.reservation'
_inherit = "pms.reservation"
@api.model
def search_read(self, domain=None, fields=None, offset=0, limit=None, order=None):
if self.env.context.get("pos_user_force", False):
return super().sudo().with_context(pos_user_force=False).search_read(domain, fields, offset, limit, order)
return (
super()
.sudo()
.with_context(pos_user_force=False)
.search_read(domain, fields, offset, limit, order)
)
else:
return super(PMSReservation, self).search_read(domain, fields, offset, limit, order)
return super(PMSReservation, self).search_read(
domain, fields, offset, limit, order
)

View File

@@ -17,14 +17,22 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from odoo import models, api
from odoo import api, models
class PMSService(models.Model):
_inherit = 'pms.service'
_inherit = "pms.service"
@api.model
def search_read(self, domain=None, fields=None, offset=0, limit=None, order=None):
if self.env.context.get("pos_user_force", False):
return super().sudo().with_context(pos_user_force=False).search_read(domain, fields, offset, limit, order)
return (
super()
.sudo()
.with_context(pos_user_force=False)
.search_read(domain, fields, offset, limit, order)
)
else:
return super(PMSService, self).search_read(domain, fields, offset, limit, order)
return super(PMSService, self).search_read(
domain, fields, offset, limit, order
)

View File

@@ -17,14 +17,11 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from odoo import fields, models, api, _
from odoo.osv.expression import AND
import pytz
from datetime import timedelta
from odoo.addons.point_of_sale.wizard.pos_box import PosBox
from odoo import api, fields, models
class PMSServiceLine(models.Model):
_inherit = 'pms.service.line'
_inherit = "pms.service.line"
pos_order_line_ids = fields.One2many(
string="POS lines",
@@ -35,6 +32,13 @@ class PMSServiceLine(models.Model):
@api.model
def search_read(self, domain=None, fields=None, offset=0, limit=None, order=None):
if self.env.context.get("pos_user_force", False):
return super().sudo().with_context(pos_user_force=False).search_read(domain, fields, offset, limit, order)
return (
super()
.sudo()
.with_context(pos_user_force=False)
.search_read(domain, fields, offset, limit, order)
)
else:
return super(PMSServiceLine, self).search_read(domain, fields, offset, limit, order)
return super(PMSServiceLine, self).search_read(
domain, fields, offset, limit, order
)

View File

@@ -18,24 +18,34 @@
#
##############################################################################
import json
from odoo import api, fields, models, _
from odoo.exceptions import Warning, UserError
import logging
from odoo import api, fields, models
_logger = logging.getLogger(__name__)
class PosConfig(models.Model):
_inherit = 'pos.config'
_inherit = "pos.config"
pay_on_reservation = fields.Boolean('Pay on reservation', default=False)
pay_on_reservation_method_id = fields.Many2one('pos.payment.method', string='Pay on reservation method')
reservation_allowed_propertie_ids = fields.Many2many('pms.property', string='Reservation allowed properties')
pay_on_reservation = fields.Boolean("Pay on reservation", default=False)
pay_on_reservation_method_id = fields.Many2one(
"pos.payment.method", string="Pay on reservation method"
)
reservation_allowed_propertie_ids = fields.Many2many(
"pms.property", string="Reservation allowed properties"
)
@api.model
def search_read(self, domain=None, fields=None, offset=0, limit=None, order=None):
if self.env.context.get("pos_user_force", False):
return super().sudo().with_context(pos_user_force=False).search_read(domain, fields, offset, limit, order)
return (
super()
.sudo()
.with_context(pos_user_force=False)
.search_read(domain, fields, offset, limit, order)
)
else:
return super(PosConfig, self).search_read(domain, fields, offset, limit, order)
return super(PosConfig, self).search_read(
domain, fields, offset, limit, order
)

View File

@@ -17,52 +17,61 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from odoo import fields, models, api, _
from odoo.osv.expression import AND
import pytz
from datetime import datetime, timedelta
from odoo.addons.point_of_sale.wizard.pos_box import PosBox
from datetime import datetime
from odoo import _, api, fields, models
from odoo.exceptions import UserError
class PosOrder(models.Model):
_inherit = 'pos.order'
paid_on_reservation = fields.Boolean('Paid on reservation', default=False)
pms_reservation_id = fields.Many2one('pms.reservation', string='PMS reservation')
class PosOrder(models.Model):
_inherit = "pos.order"
paid_on_reservation = fields.Boolean("Paid on reservation", default=False)
pms_reservation_id = fields.Many2one("pms.reservation", string="PMS reservation")
def _get_fields_for_draft_order(self):
res = super(PosOrder, self)._get_fields_for_draft_order()
res.append('paid_on_reservation')
res.append('pms_reservation_id')
res.append("paid_on_reservation")
res.append("pms_reservation_id")
return res
@api.model
def _order_fields(self, ui_order):
order_fields = super(PosOrder, self)._order_fields(ui_order)
order_fields['paid_on_reservation'] = ui_order.get('paid_on_reservation', False)
order_fields['pms_reservation_id'] = ui_order.get('pms_reservation_id', False)
order_fields["paid_on_reservation"] = ui_order.get("paid_on_reservation", False)
order_fields["pms_reservation_id"] = ui_order.get("pms_reservation_id", False)
return order_fields
def _get_fields_for_order_line(self):
res = super(PosOrder, self)._get_fields_for_order_line()
res.append('pms_service_line_id')
res.append("pms_service_line_id")
return res
def _get_order_lines(self, orders):
super(PosOrder, self)._get_order_lines(orders)
for order in orders:
if 'lines' in order:
for line in order['lines']:
line[2]['pms_service_line_id'] = line[2]['pms_service_line_id'][0] if line[2]['pms_service_line_id'] else False
if "lines" in order:
for line in order["lines"]:
line[2]["pms_service_line_id"] = (
line[2]["pms_service_line_id"][0]
if line[2]["pms_service_line_id"]
else False
)
@api.model
def _process_order(self, pos_order, draft, existing_order):
data = pos_order.get('data', False)
if data and data.get("paid_on_reservation", False) and data.get("pms_reservation_id", False):
pms_reservation_id = data.pop('pms_reservation_id')
data = pos_order.get("data", False)
if (
data
and data.get("paid_on_reservation", False)
and data.get("pms_reservation_id", False)
):
pms_reservation_id = data.pop("pms_reservation_id")
res = super(PosOrder, self)._process_order(pos_order, draft, existing_order)
order_id = self.env['pos.order'].browse(res)
pms_reservation_id = self.sudo().env['pms.reservation'].browse(pms_reservation_id)
order_id = self.env["pos.order"].browse(res)
pms_reservation_id = (
self.sudo().env["pms.reservation"].browse(pms_reservation_id)
)
if not pms_reservation_id:
raise UserError(_("Reservation does not exists."))
order_id.pms_reservation_id = pms_reservation_id.id
@@ -72,12 +81,15 @@ class PosOrder(models.Model):
return super()._process_order(pos_order, draft, existing_order)
def add_order_lines_to_reservation(self, pms_reservation_id):
self.lines.filtered(lambda x: not x.pms_service_line_id)._generate_pms_service(pms_reservation_id)
self.lines.filtered(lambda x: not x.pms_service_line_id)._generate_pms_service(
pms_reservation_id
)
class PosOrderLine(models.Model):
_inherit = 'pos.order.line'
_inherit = "pos.order.line"
pms_service_line_id = fields.Many2one('pms.service.line', string='PMS Service line')
pms_service_line_id = fields.Many2one("pms.service.line", string="PMS Service line")
def _generate_pms_service(self, pms_reservation_id):
for line in self:
@@ -100,6 +112,4 @@ class PosOrderLine(models.Model):
}
service = self.sudo().env["pms.service"].create(vals)
line.write({
'pms_service_line_id': service.service_line_ids.id
})
line.write({"pms_service_line_id": service.service_line_ids.id})

View File

@@ -17,16 +17,20 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from odoo import api, fields, models, _
from odoo import api, models
class PosPayment(models.Model):
_inherit = "pos.payment"
@api.constrains('payment_method_id')
@api.constrains("payment_method_id")
def _check_payment_method_id(self):
for payment in self:
if payment.session_id.config_id.pay_on_reservation and payment.session_id.config_id.pay_on_reservation_method_id == payment.payment_method_id:
if (
payment.session_id.config_id.pay_on_reservation
and payment.session_id.config_id.pay_on_reservation_method_id
== payment.payment_method_id
):
continue
else:
super(PosPayment, payment)._check_payment_method_id()

View File

@@ -18,51 +18,70 @@
#
##############################################################################
from collections import defaultdict
import json
from odoo import api, fields, models, _
from odoo.exceptions import Warning, UserError
import logging
from collections import defaultdict
from odoo import models
_logger = logging.getLogger(__name__)
class PosSession(models.Model):
_inherit = 'pos.session'
_inherit = "pos.session"
def _accumulate_amounts(self, data):
def _accumulate_amounts(self, data): # noqa: C901 # too-complex
res = super(PosSession, self)._accumulate_amounts(data)
if self.config_id.pay_on_reservation and self.config_id.pay_on_reservation_method_id:
amounts = lambda: {'amount': 0.0, 'amount_converted': 0.0}
tax_amounts = lambda: {'amount': 0.0, 'amount_converted': 0.0, 'base_amount': 0.0, 'base_amount_converted': 0.0}
if (
self.config_id.pay_on_reservation
and self.config_id.pay_on_reservation_method_id
):
amounts = lambda: {"amount": 0.0, "amount_converted": 0.0} # noqa E731
tax_amounts = lambda: { # noqa: E731
"amount": 0.0,
"amount_converted": 0.0,
"base_amount": 0.0,
"base_amount_converted": 0.0,
}
sales = defaultdict(amounts)
taxes = defaultdict(tax_amounts)
rounded_globally = self.company_id.tax_calculation_rounding_method == 'round_globally'
rounded_globally = (
self.company_id.tax_calculation_rounding_method == "round_globally"
)
reservation_orders = self.order_ids.filtered(lambda x: x.pms_reservation_id)
order_taxes = defaultdict(tax_amounts)
for order_line in reservation_orders.lines:
line = self._prepare_line(order_line)
# Combine sales/refund lines
sale_key = (
# account
line['income_account_id'],
line["income_account_id"],
# sign
-1 if line['amount'] < 0 else 1,
-1 if line["amount"] < 0 else 1,
# for taxes
tuple((tax['id'], tax['account_id'], tax['tax_repartition_line_id']) for tax in line['taxes']),
line['base_tags'],
tuple(
(tax["id"], tax["account_id"], tax["tax_repartition_line_id"])
for tax in line["taxes"]
),
line["base_tags"],
)
sales[sale_key] = self._update_amounts(
sales[sale_key], {"amount": line["amount"]}, line["date_order"]
)
sales[sale_key] = self._update_amounts(sales[sale_key], {'amount': line['amount']}, line['date_order'])
# Combine tax lines
for tax in line['taxes']:
tax_key = (tax['account_id'] or line['income_account_id'], tax['tax_repartition_line_id'], tax['id'], tuple(tax['tag_ids']))
for tax in line["taxes"]:
tax_key = (
tax["account_id"] or line["income_account_id"],
tax["tax_repartition_line_id"],
tax["id"],
tuple(tax["tag_ids"]),
)
order_taxes[tax_key] = self._update_amounts(
order_taxes[tax_key],
{'amount': tax['amount'], 'base_amount': tax['base']},
tax['date_order'],
round=not rounded_globally
{"amount": tax["amount"], "base_amount": tax["base"]},
tax["date_order"],
round=not rounded_globally,
)
for tax_key, amounts in order_taxes.items():
if rounded_globally:
@@ -72,25 +91,37 @@ class PosSession(models.Model):
for element, value in dict(res["taxes"]).items():
if element in taxes:
value['amount'] = value['amount'] - taxes[element]['amount']
value['amount_converted'] = value['amount_converted'] - taxes[element]['amount_converted']
value['base_amount'] = value['base_amount'] - taxes[element]['base_amount']
value['base_amount_converted'] = value['base_amount_converted'] - taxes[element]['base_amount_converted']
value["amount"] = value["amount"] - taxes[element]["amount"]
value["amount_converted"] = (
value["amount_converted"] - taxes[element]["amount_converted"]
)
value["base_amount"] = (
value["base_amount"] - taxes[element]["base_amount"]
)
value["base_amount_converted"] = (
value["base_amount_converted"]
- taxes[element]["base_amount_converted"]
)
for element, value in dict(res["sales"]).items():
if element in sales:
value['amount'] = value['amount'] - sales[element]['amount']
value['amount_converted'] = value['amount_converted'] - sales[element]['amount_converted']
value["amount"] = value["amount"] - sales[element]["amount"]
value["amount_converted"] = (
value["amount_converted"] - sales[element]["amount_converted"]
)
if self.config_id.pay_on_reservation_method_id.split_transactions:
for element, value in dict(res["split_receivables"]).items():
if element.payment_method_id == self.config_id.pay_on_reservation_method_id:
value['amount'] = 0.0
value['amount_converted'] = 0.0
if (
element.payment_method_id
== self.config_id.pay_on_reservation_method_id
):
value["amount"] = 0.0
value["amount_converted"] = 0.0
else:
for element, value in dict(res["combine_receivables"]).items():
if element == self.config_id.pay_on_reservation_method_id:
value['amount'] = 0.0
value['amount_converted'] = 0.0
return res
value["amount"] = 0.0
value["amount_converted"] = 0.0
return res

View File

@@ -17,24 +17,40 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from odoo import models, api
from odoo import api, models
class ProductPricelist(models.Model):
_inherit = 'product.pricelist'
_inherit = "product.pricelist"
@api.model
def search_read(self, domain=None, fields=None, offset=0, limit=None, order=None):
if self.env.context.get("pos_user_force", False):
return super().sudo().with_context(pos_user_force=False).search_read(domain, fields, offset, limit, order)
return (
super()
.sudo()
.with_context(pos_user_force=False)
.search_read(domain, fields, offset, limit, order)
)
else:
return super(ProductPricelist, self).search_read(domain, fields, offset, limit, order)
return super(ProductPricelist, self).search_read(
domain, fields, offset, limit, order
)
class ProductPricelistItem(models.Model):
_inherit = 'product.pricelist.item'
_inherit = "product.pricelist.item"
@api.model
def search_read(self, domain=None, fields=None, offset=0, limit=None, order=None):
if self.env.context.get("pos_user_force", False):
return super().sudo().with_context(pos_user_force=False).search_read(domain, fields, offset, limit, order)
return (
super()
.sudo()
.with_context(pos_user_force=False)
.search_read(domain, fields, offset, limit, order)
)
else:
return super(ProductPricelistItem, self).search_read(domain, fields, offset, limit, order)
return super(ProductPricelistItem, self).search_read(
domain, fields, offset, limit, order
)