From d5d192f78a6bc8928e5fa1a70b6b9a9dd384e20b Mon Sep 17 00:00:00 2001 From: Mourad Date: Thu, 7 Nov 2024 18:07:44 +0100 Subject: [PATCH] [FIX] printing_simple_configuration: add company_id to printer [FIX] printing_simple_configuration: add _get_printer_by_usage [FIX] printing_simple_configuration: dependency [FIX] printing_simple_configuration: maintainers --- printing_simple_configuration/__manifest__.py | 4 +- .../models/printer.py | 38 ++++++++++++++++++- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/printing_simple_configuration/__manifest__.py b/printing_simple_configuration/__manifest__.py index 9fc73071dcb..f64e948e613 100644 --- a/printing_simple_configuration/__manifest__.py +++ b/printing_simple_configuration/__manifest__.py @@ -5,13 +5,13 @@ "category": "Generic Modules/Base", "website": "https://github.com/OCA/report-print-send", "author": "Akretion,Odoo Community Association (OCA)", - "maintainer": [ + "maintainers": [ "bealdav", ], "maturity": "Alpha", "license": "AGPL-3", "depends": [ - "stock", + "sale_stock", ], "data": [ "views/company.xml", diff --git a/printing_simple_configuration/models/printer.py b/printing_simple_configuration/models/printer.py index 9c3ac10ec2f..ad63b8afb7f 100644 --- a/printing_simple_configuration/models/printer.py +++ b/printing_simple_configuration/models/printer.py @@ -1,4 +1,9 @@ -from odoo import fields, models +import logging + +from odoo import _, api, fields, models +from odoo.exceptions import UserError + +_logger = logging.getLogger(__name__) class Printer(models.Model): @@ -19,3 +24,34 @@ class Printer(models.Model): "In some case, erp project may be imply minimal config as module data\n" "with some fields might updated within the interface" ) + company_id = fields.Many2one( + "res.company", + related="config_id.company_id", + store=True, + ) + + @api.model + def _get_printer_by_usage(self): + printers = {} + company = self.env.company + + domain = [("company_id", "=", company.id)] + if self.env.user.property_warehouse_id: + domain.append(("warehouse_id", "=", self.env.user.property_warehouse_id.id)) + else: + domain.append(("warehouse_id", "=", False)) + + for device in self.search(domain, order="warehouse_id DESC, usage, name DESC"): + conf = device.sudo().config_id + printers[device.usage] = { + "location": "https://%s:%s" % (conf.server, conf.port or 0), + "name": device.name, + "comment": device.comment, + } + _logger.info(" >>> Printers %s" % printers) + if not printers: + raise UserError( + _("There is no printer accessible to you in the company %s") + % company.name + ) + return printers