Odoo18-Base/addons/point_of_sale/models/pos_bill.py
2025-01-06 10:57:38 +07:00

36 lines
1.2 KiB
Python

from odoo import api, fields, models, _
from odoo.exceptions import UserError
from odoo.osv.expression import OR
class Bill(models.Model):
_name = "pos.bill"
_order = "value"
_description = "Coins/Bills"
_inherit = ["pos.load.mixin"]
name = fields.Char("Name")
value = fields.Float("Coin/Bill Value", required=True, digits=(16, 4))
for_all_config = fields.Boolean("For All PoS", default=True, help="If checked, this coin/bill will be available in all PoS.")
pos_config_ids = fields.Many2many("pos.config", string="Point of Sales")
@api.model
def name_create(self, name):
try:
value = float(name)
except ValueError:
raise UserError(_("The name of the Coins/Bills must be a number."))
result = super().create({"name": name, "value": value})
return result.id, result.display_name
@api.model
def _load_pos_data_domain(self, data):
return OR([
[('id', 'in', data['pos.config']['data'][0]['default_bill_ids']), ('for_all_config', '=', False)],
[('for_all_config', '=', True)]
])
@api.model
def _load_pos_data_fields(self, config_id):
return ['id', 'name', 'value']