mirror of
https://github.com/OCA/report-print-send.git
synced 2025-02-16 07:11:31 +02:00
[16.0][ADD] printing_simple_configuration
This commit is contained in:
1
printing_simple_configuration/README.rst
Normal file
1
printing_simple_configuration/README.rst
Normal file
@@ -0,0 +1 @@
|
||||
to be generated
|
||||
1
printing_simple_configuration/__init__.py
Normal file
1
printing_simple_configuration/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import models
|
||||
26
printing_simple_configuration/__manifest__.py
Normal file
26
printing_simple_configuration/__manifest__.py
Normal 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,
|
||||
}
|
||||
35
printing_simple_configuration/data/demo.xml
Normal file
35
printing_simple_configuration/data/demo.xml
Normal 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>
|
||||
3
printing_simple_configuration/models/__init__.py
Normal file
3
printing_simple_configuration/models/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from . import company
|
||||
from . import printer
|
||||
from . import print_config
|
||||
7
printing_simple_configuration/models/company.py
Normal file
7
printing_simple_configuration/models/company.py
Normal 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")
|
||||
30
printing_simple_configuration/models/print_config.py
Normal file
30
printing_simple_configuration/models/print_config.py
Normal 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
|
||||
21
printing_simple_configuration/models/printer.py
Normal file
21
printing_simple_configuration/models/printer.py
Normal 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"
|
||||
)
|
||||
11
printing_simple_configuration/readme/DESCRIPTION.rst
Normal file
11
printing_simple_configuration/readme/DESCRIPTION.rst
Normal 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
|
||||
2
printing_simple_configuration/readme/ROADMAP.rst
Normal file
2
printing_simple_configuration/readme/ROADMAP.rst
Normal 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.
|
||||
@@ -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
|
||||
|
12
printing_simple_configuration/security/security.xml
Normal file
12
printing_simple_configuration/security/security.xml
Normal 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 |
13
printing_simple_configuration/views/company.xml
Normal file
13
printing_simple_configuration/views/company.xml
Normal 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>
|
||||
89
printing_simple_configuration/views/print_config.xml
Normal file
89
printing_simple_configuration/views/print_config.xml
Normal 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>
|
||||
@@ -0,0 +1 @@
|
||||
../../../../printing_simple_configuration
|
||||
6
setup/printing_simple_configuration/setup.py
Normal file
6
setup/printing_simple_configuration/setup.py
Normal file
@@ -0,0 +1,6 @@
|
||||
import setuptools
|
||||
|
||||
setuptools.setup(
|
||||
setup_requires=['setuptools-odoo'],
|
||||
odoo_addon=True,
|
||||
)
|
||||
Reference in New Issue
Block a user