[16.0][ADD] printing_simple_configuration

This commit is contained in:
David Beal
2023-05-07 16:35:34 +02:00
parent d6ee2613d4
commit b909143afa
17 changed files with 263 additions and 0 deletions

View File

@@ -0,0 +1 @@
to be generated

View File

@@ -0,0 +1 @@
from . import models

View File

@@ -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,
}

View File

@@ -0,0 +1,35 @@
<odoo>
<record id="print_config1" model="print.config">
<field name="server">192.168.2.1</field>
<field name="port">633</field>
</record>
<record id="print_config2" model="print.config">
<field name="server">127.0.0.1</field>
<field name="port">8069</field>
<field name="company_id" ref="base.main_company" />
</record>
<record id="print_config1_print1" model="printer">
<field name="name">printer 1</field>
<field name="usage">small_label</field>
<field name="comment">Zebra Printer tiny</field>
<field name="config_id" ref="print_config1" />
<field name="warehouse_id" ref="stock.warehouse0" />
<field name="readonly">1</field>
</record>
<record id="print_config1_print2" model="printer">
<field name="name">GX420t</field>
<field name="usage">carrier_label</field>
<field name="comment">Zebra Printer large</field>
<field name="config_id" ref="print_config1" />
<field name="readonly">1</field>
</record>
<record id="print_config2_print1" model="printer">
<field name="name">other printer</field>
<field name="usage">misc</field>
<field name="comment">Zpl compatible</field>
<field name="config_id" ref="print_config2" />
</record>
</odoo>

View File

@@ -0,0 +1,3 @@
from . import company
from . import printer
from . import print_config

View File

@@ -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")

View File

@@ -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

View File

@@ -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"
)

View File

@@ -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

View File

@@ -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.

View File

@@ -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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 print_conf_user print_conf_user model_print_config 1 0 0 0
3 print_conf_manager print_conf_manager model_print_config base.group_system 1 1 1 1
4 printer_user printer_user model_printer 1 0 0 0
5 printer_manager printer_manager model_printer base.group_system 1 1 1 1

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="print_config_rule" model="ir.rule">
<field name="name">Print config rule</field>
<field name="model_id" ref="model_print_config" />
<field
name="domain_force"
>['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
</odoo>

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

@@ -0,0 +1,13 @@
<odoo>
<record id="view_company_form" model="ir.ui.view">
<field name="model">res.company</field>
<field name="inherit_id" ref="base.view_company_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='favicon']" position="after">
<field name="print_config_id" />
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,89 @@
<odoo>
<record id="print_config_form" model="ir.ui.view">
<field name="model">print.config</field>
<field name="arch" type="xml">
<form>
<header>
</header>
<sheet>
<div>
<p>
Ensure all informations here match with your own network configuration.
</p>
</div>
<group name="main">
<group name="left">
<field name="server" placeholder="192.168.0.12" />
<field name="port" />
</group>
<group name="right">
<field name="company_id" />
</group>
</group>
<group name="printers" string="🖨 Printers" col="1">
<field name="printer_ids" nolabel="1">
<tree editable="bottom">
<field name="name" required="1" />
<field
name="usage"
attrs="{'readonly': [('readonly','=', True)]}"
/>
<field
name="comment"
attrs="{'readonly': [('readonly','=', True)]}"
/>
<field name="warehouse_id" />
<field name="config_id" invisible="1" />
<field name="readonly" invisible="1" />
</tree>
</field>
</group>
<group col="2">
<field name="comment" />
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers" />
<field name="message_ids" widget="mail_thread" />
</div>
</form>
</field>
</record>
<record id='print_config_tree' model='ir.ui.view'>
<field name='model'>print.config</field>
<field name='arch' type='xml'>
<tree>
<field name="server" />
<field name="port" />
<field name="company_id" />
</tree>
</field>
</record>
<record id="print_config_search" model="ir.ui.view">
<field name="model">print.config</field>
<field name="arch" type="xml">
<search>
<filter name="server" />
<filter name="port" />
<filter name="company_id" />
</search>
</field>
</record>
<record id="print_config_action" model="ir.actions.act_window">
<field name="name">Printing Configuration</field>
<field name="res_model">print.config</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem
id="print_config_menu"
name="🖨"
groups="base.group_erp_manager"
parent="base.menu_administration"
action="print_config_action"
/>
</odoo>

View File

@@ -0,0 +1 @@
../../../../printing_simple_configuration

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)