diff --git a/printing_simple_configuration/README.rst b/printing_simple_configuration/README.rst new file mode 100644 index 0000000..7093cd3 --- /dev/null +++ b/printing_simple_configuration/README.rst @@ -0,0 +1 @@ +to be generated diff --git a/printing_simple_configuration/__init__.py b/printing_simple_configuration/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/printing_simple_configuration/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/printing_simple_configuration/__manifest__.py b/printing_simple_configuration/__manifest__.py new file mode 100644 index 0000000..25aa8f0 --- /dev/null +++ b/printing_simple_configuration/__manifest__.py @@ -0,0 +1,26 @@ +{ + "name": "Printing Simple Configuration", + "summary": "Allow to set printing configuration in company or in warehouse", + "version": "16.0.1.0.0", + "category": "Generic Modules/Base", + "website": "https://github.com/OCA/report-print-send", + "author": "Akretion,Odoo Community Association (OCA)", + "maintainer": [ + "bealdav", + ], + "maturity": "Alpha", + "license": "AGPL-3", + "depends": [ + "stock", + ], + "data": [ + "views/company.xml", + "views/print_config.xml", + "security/ir.model.access.csv", + "security/security.xml", + ], + "demo": [ + "data/demo.xml", + ], + "installable": True, +} diff --git a/printing_simple_configuration/data/demo.xml b/printing_simple_configuration/data/demo.xml new file mode 100644 index 0000000..11dedd2 --- /dev/null +++ b/printing_simple_configuration/data/demo.xml @@ -0,0 +1,35 @@ + + + + 192.168.2.1 + 633 + + + 127.0.0.1 + 8069 + + + + + printer 1 + small_label + Zebra Printer tiny + + + 1 + + + GX420t + carrier_label + Zebra Printer large + + 1 + + + other printer + misc + Zpl compatible + + + + diff --git a/printing_simple_configuration/models/__init__.py b/printing_simple_configuration/models/__init__.py new file mode 100644 index 0000000..cc0f8da --- /dev/null +++ b/printing_simple_configuration/models/__init__.py @@ -0,0 +1,3 @@ +from . import company +from . import printer +from . import print_config diff --git a/printing_simple_configuration/models/company.py b/printing_simple_configuration/models/company.py new file mode 100644 index 0000000..8519bdc --- /dev/null +++ b/printing_simple_configuration/models/company.py @@ -0,0 +1,7 @@ +from odoo import fields, models + + +class ResCompany(models.Model): + _inherit = "res.company" + + print_config_id = fields.Many2one(comodel_name="print.config") diff --git a/printing_simple_configuration/models/print_config.py b/printing_simple_configuration/models/print_config.py new file mode 100644 index 0000000..589ac5f --- /dev/null +++ b/printing_simple_configuration/models/print_config.py @@ -0,0 +1,30 @@ +from odoo import api, fields, models + + +class PrintConfig(models.Model): + _name = "print.config" + _inherit = ["mail.thread"] + _description = "Simple Printing Configuration" + _rec_names_search = ["server", "company_id"] + _check_company_auto = True + + server = fields.Char( + string="🖥 Server", + required=True, + tracking=True, + help="IP or name resolved by your internal DNS", + ) + port = fields.Integer(tracking=True) + company_id = fields.Many2one(comodel_name="res.company", string="Company") + display_name = fields.Char("Name", compute="_compute_display_name", store=True) + comment = fields.Char() + printer_ids = fields.One2many(comodel_name="printer", inverse_name="config_id") + + @api.depends("server", "company_id") + def _compute_display_name(self): + for rec in self: + company = rec.company_id + if company: + rec.display_name = "{} ({})".format(rec.server, company.name) + else: + rec.display_name = rec.server diff --git a/printing_simple_configuration/models/printer.py b/printing_simple_configuration/models/printer.py new file mode 100644 index 0000000..9c3ac10 --- /dev/null +++ b/printing_simple_configuration/models/printer.py @@ -0,0 +1,21 @@ +from odoo import fields, models + + +class Printer(models.Model): + _name = "printer" + _description = "Printers belongs to a printer server address attached " + "to a company or a warehouse" + + name = fields.Char(required=True, help="must be completed by internal user") + usage = fields.Char( + required=True, + help="Developers may use this to guess adapted printers for their workflows", + ) + comment = fields.Char() + config_id = fields.Many2one(comodel_name="print.config", required=True) + warehouse_id = fields.Many2one(comodel_name="stock.warehouse") + readonly = fields.Boolean( + help="Make some fields readonly in views if set to True.\n" + "In some case, erp project may be imply minimal config as module data\n" + "with some fields might updated within the interface" + ) diff --git a/printing_simple_configuration/readme/DESCRIPTION.rst b/printing_simple_configuration/readme/DESCRIPTION.rst new file mode 100644 index 0000000..72d78d2 --- /dev/null +++ b/printing_simple_configuration/readme/DESCRIPTION.rst @@ -0,0 +1,11 @@ +Allow to set printer config definition attached to a company or a warehouse. + +With this minimal configuration, you may define specific print workflow +according to misc usage, i.e. label printers + +.. figure:: ../static/description/print_config.png + :alt: Print configuration in Odoo + + +For more complex configuration please check +https://github.com/OCA/report-print-send/blob/16.0/base_report_to_printer/README.rst diff --git a/printing_simple_configuration/readme/ROADMAP.rst b/printing_simple_configuration/readme/ROADMAP.rst new file mode 100644 index 0000000..dfe7a2d --- /dev/null +++ b/printing_simple_configuration/readme/ROADMAP.rst @@ -0,0 +1,2 @@ +Advanced usage of printers are mainly coupled with stock. +This leads us to decide to attach the printer configuration to the warehouse model. diff --git a/printing_simple_configuration/security/ir.model.access.csv b/printing_simple_configuration/security/ir.model.access.csv new file mode 100644 index 0000000..ceb1660 --- /dev/null +++ b/printing_simple_configuration/security/ir.model.access.csv @@ -0,0 +1,5 @@ +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +"print_conf_user","print_conf_user","model_print_config",,1,0,0,0 +"print_conf_manager","print_conf_manager","model_print_config","base.group_system",1,1,1,1 +"printer_user","printer_user","model_printer",,1,0,0,0 +"printer_manager","printer_manager","model_printer","base.group_system",1,1,1,1 diff --git a/printing_simple_configuration/security/security.xml b/printing_simple_configuration/security/security.xml new file mode 100644 index 0000000..7d93420 --- /dev/null +++ b/printing_simple_configuration/security/security.xml @@ -0,0 +1,12 @@ + + + + + Print config rule + + ['|',('company_id','=',False),('company_id', 'in', company_ids)] + + + diff --git a/printing_simple_configuration/static/description/print_config.png b/printing_simple_configuration/static/description/print_config.png new file mode 100644 index 0000000..972413b Binary files /dev/null and b/printing_simple_configuration/static/description/print_config.png differ diff --git a/printing_simple_configuration/views/company.xml b/printing_simple_configuration/views/company.xml new file mode 100644 index 0000000..b3cb7b1 --- /dev/null +++ b/printing_simple_configuration/views/company.xml @@ -0,0 +1,13 @@ + + + + res.company + + + + + + + + + diff --git a/printing_simple_configuration/views/print_config.xml b/printing_simple_configuration/views/print_config.xml new file mode 100644 index 0000000..e3a1e1a --- /dev/null +++ b/printing_simple_configuration/views/print_config.xml @@ -0,0 +1,89 @@ + + + + print.config + + + + + + + + Ensure all informations here match with your own network configuration. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + print.config + + + + + + + + + + + print.config + + + + + + + + + + + Printing Configuration + print.config + tree,form + + + + diff --git a/setup/printing_simple_configuration/odoo/addons/printing_simple_configuration b/setup/printing_simple_configuration/odoo/addons/printing_simple_configuration new file mode 120000 index 0000000..0f2e854 --- /dev/null +++ b/setup/printing_simple_configuration/odoo/addons/printing_simple_configuration @@ -0,0 +1 @@ +../../../../printing_simple_configuration \ No newline at end of file diff --git a/setup/printing_simple_configuration/setup.py b/setup/printing_simple_configuration/setup.py new file mode 100644 index 0000000..28c57bb --- /dev/null +++ b/setup/printing_simple_configuration/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)
+ Ensure all informations here match with your own network configuration. +