mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[REF] fix precommit
This commit is contained in:
committed by
Darío Lodeiros
parent
587aac7f96
commit
66a985eb36
2
pos_pms_link/models/__init__.py
Executable file → Normal file
2
pos_pms_link/models/__init__.py
Executable file → Normal 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
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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})
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user