| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/report-print-send |
| GIT | |
| GIT | https://github.com/OCA/report-print-send.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/report-print-send/tree/19.0/base_report_to_printer |
| VERSION | |
| VERSION | 1.2.1 |
| CATEGORY | |
| CATEGORY | Generic Modules/Base |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp, LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN, Open for Small Business Ltd |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp, LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN, Open for Small Business Ltd |
| COMMITTERS | |
| COMMITTERS | Emanuel Cino, Weblate, OCA-git-bot, oca-ci, Miquel Alzanillas, DavidJForgeFlow, eugenio |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/report-print-send |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:40:50 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - web - base |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module provides the core framework to send Odoo reports directly to printers. It defines the base models, configuration options and printing workflow, without depending on a specific printing protocol. The actual connection with printers is delegated to extension modules (e.g. base_report_to_printer_cups), which implement support for a given printing backend. Key features: Flexible report output behavior: Send to Client (default): generates a downloadable PDF. Send to Printer: sends the report directly to a configured printer (via backend module). Support for user-level, report-level, and combined user/report printing rules. Extensible design: new modules can add support for additional printing systems or protocols. This modular approach allows administrators to configure printing globally, per user, per report, or per user/report combination, while keeping the printing backend independent and replaceable. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
act_report_xml_view |
ir.actions.report.form (in base_report_to_printer) | ir.actions.report | page | Inherits base.act_report_xml_view |
printing_job_view_form |
printing.job.form (in base_report_to_printer) | printing.job | form | New |
printing_job_view_tree |
printing.job.tree (in base_report_to_printer) | printing.job | list | New |
printing_printer_view_form |
printing.printer.form (in base_report_to_printer) | printing.printer | form | New |
printing_printer_view_search |
printing.printer.search (in base_report_to_printer) | printing.printer | search | New |
printing_printer_view_tree |
printing.printer.tree (in base_report_to_printer) | printing.printer | list | New |
printing_report_xml_action_view_form |
printing.report.xml.action.form (in base_report_to_printer) | printing.report.xml.action | form | New |
printing_report_xml_action_view_tree |
printing.report.xml.action.tree (in base_report_to_printer) | printing.report.xml.action | list | New |
view_users_form |
res.users.form (in base_report_to_printer) | res.users | group | Inherits base.view_users_form |
view_users_form_simple_modif |
res.users.form.simple (in base_report_to_printer) | res.users | group | Inherits base.view_users_form_simple_modif |
wizard_print_attachment_form |
wizard.print.attachment | wizard.print.attachment | form | New |
wizard_print_attachment_line_form |
wizard.print.attachment.line.form | wizard.print.attachment.line | form | New |
printer_input_tray_id
Many2one → printing.tray.input
comodel_name='printing.tray.input'
domain="[('printer_id', '=', printing_printer_id)]"
string='Paper Source'
printer_output_tray_id
Many2one → printing.tray.output
comodel_name='printing.tray.output'
domain="[('printer_id', '=', printing_printer_id)]"
string='Output Bin'
printing_action_ids
One2many → printing.report.xml.action
comodel_name='printing.report.xml.action'
help='This field allows configuring action and printer on a per user basis'
inverse_name='report_id'
string='Actions'
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
property_printing_action_id
Many2one → printing.action
comodel_name='printing.action'
company_dependent=True
string='Default Behaviour'
behaviour(self)
onchange_printing_printer_id(self)
print_action_for_report_name(self, report_name)
print_document(self, record_ids, data=None)
print_document_client_action(self, record_ids, data=None)
print_document_threaded(self, report_id, record_ids, data)
report_action(self, docids, data=None, config=True)
action_type
Selection
required=True
selection=_available_action_types
string='Type'
name
Char
required=True
No public methods.
job_state
Selection
help='Current state of the job.'
selection=[('pending', 'Pending'), ('completed', 'Completed'), ('unknown', 'Unknown')]
string='State'
name
Char
help='Job name.'
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
help='Printer used for this job.'
ondelete='cascade'
required=True
string='Printer'
time_at_completed
Datetime
help='Date and time of completion for this job.'
string='Completion Date'
time_at_creation
Datetime
help='Date and time of creation of this job.'
required=True
string='Creation Date'
time_at_processing
Datetime
help='Date and time of process for this job.'
string='Processing Date'
action_cancel(self)
cancel(self)
active
Boolean
default=True
backend
Selection
default='base'
required=True
selection=[('base', 'Base')]
default
Boolean
readonly=True
location
Char
readonly=True
model
Char
readonly=True
multi_thread
Boolean
name
Char
required=True
status
Selection
default='unknown'
readonly=True
required=True
selection=[('unavailable', 'Unavailable'), ('printing', 'Printing'), ('unknown', 'Unknown'), ('available', 'Available'), ('error', 'Error'), ('server-error', 'Server Error')]
status_message
Char
readonly=True
system_name
Char
required=True
uri
Char
readonly=True
string='URI'
action_cancel_all_jobs(self)
cancel_all_jobs(self, purge_jobs=False)
disable(self)
enable(self)
get_default(self)
print_document(self, report, content, action=None, doc_format='qweb-pdf', **kwargs)
print_file(self, file_name, report=None, **print_opts)
print_options(self, report=None, **print_opts)
print_test_page(self)
set_default(self)
unset_default(self)
No new fields.
Public methods (1)action_ok(self)
action
Selection
required=True
selection=<expr>
active
Boolean
default=True
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Printer'
printer_input_tray_id
Many2one → printing.tray.input
comodel_name='printing.tray.input'
domain="[('printer_id', '=', printer_id)]"
string='Paper Source'
printer_output_tray_id
Many2one → printing.tray.output
comodel_name='printing.tray.output'
domain="[('printer_id', '=', printer_id)]"
string='Output Bin'
report_id
Many2one → ir.actions.report
comodel_name='ir.actions.report'
ondelete='cascade'
required=True
string='Report'
user_id
Many2one → res.users
comodel_name='res.users'
ondelete='cascade'
required=True
string='User'
behaviour(self)
onchange_printer_id(self)
name
Char
required=True
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
ondelete='cascade'
readonly=True
required=True
string='Printer'
system_name
Char
readonly=True
required=True
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
printer_input_tray_id
Many2one → printing.tray.input
comodel_name='printing.tray.input'
domain="[('printer_id', '=', printing_printer_id)]"
string='Default Printer Paper Source'
printer_output_tray_id
Many2one → printing.tray.output
comodel_name='printing.tray.output'
domain="[('printer_id', '=', printing_printer_id)]"
string='Default Printer Output Bin'
printing_action
Selection
selection=<expr>
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
SELF_READABLE_FIELDS(self)
SELF_WRITEABLE_FIELDS(self)
onchange_printing_printer_id(self)
attachment_line_ids
One2many → wizard.print.attachment.line
string='Attachments to print'
args: 'wizard.print.attachment.line', 'wizard_id'
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
help='Printer used to print the attachments.'
required=True
string='Printer'
print_attachments(self)
attachment_id
Many2one → ir.attachment
domain=['|', ('mimetype', '=', 'application/pdf'), ('mimetype', '=', 'application/octet-stream')]
required=True
args: 'ir.attachment'
copies
Integer
default=1
record_name
Char
readonly=True
related='attachment_id.res_name'
wizard_id
Many2one → wizard.print.attachment
get_format(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/report-print-send |
| GIT | |
| GIT | https://github.com/OCA/report-print-send.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/report-print-send/tree/18.0/base_report_to_printer |
| VERSION | |
| VERSION | 1.4.0 |
| CATEGORY | |
| CATEGORY | Generic Modules/Base |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp, LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN, Open for Small Business Ltd |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp, LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN, Open for Small Business Ltd |
| COMMITTERS | |
| COMMITTERS | Carlos Lopez, Florent Xicluna, Sébastien Alix, Emanuel Cino, Weblate, OCA-git-bot, Tom, oca-ci, Vincent Van Rossem, Carlos Roca, Miquel Alzanillas, ferran-S73, david-s73, trisdoan, arantxa-s73 |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/report-print-send |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:19 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - web - base |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
pycups |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module allows users to send reports to a printer attached to the server. It adds an optional behaviour on reports to send it directly to a printer. - Send to Client is the default behaviour providing you a downloadable PDF - Send to Printer prints the report on selected printer It detects trays on printers installation plus permits to select the paper source on which you want to print directly. Report behaviour is defined by settings. You will find this option on default user config, on default report config and on specific config per user per report. This allows you to dedicate a specific paper source for example for preprinted paper such as payment slip. Settings can be configured: - globally - per user - per report - per user and report |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
act_report_xml_view |
ir.actions.report.form (in base_report_to_printer) | ir.actions.report | page | Inherits base.act_report_xml_view |
printer_update_wizard |
printing.printer.update.wizard | printing.printer.update.wizard | form | New |
printing_job_view_form |
printing.job.form (in base_report_to_printer) | printing.job | form | New |
printing_job_view_tree |
printing.job.tree (in base_report_to_printer) | printing.job | list | New |
printing_printer_view_form |
printing.printer.form (in base_report_to_printer) | printing.printer | form | New |
printing_printer_view_search |
printing.printer.search (in base_report_to_printer) | printing.printer | search | New |
printing_printer_view_tree |
printing.printer.tree (in base_report_to_printer) | printing.printer | list | New |
printing_report_xml_action_view_form |
printing.report.xml.action.form (in base_report_to_printer) | printing.report.xml.action | form | New |
printing_report_xml_action_view_tree |
printing.report.xml.action.tree (in base_report_to_printer) | printing.report.xml.action | list | New |
printing_server_view_form |
printing.server.form (in base_report_to_printer) | printing.server | form | New |
printing_server_view_search |
printing.server.search (in base_report_to_printer) | printing.server | search | New |
printing_server_view_tree |
printing.server.tree (in base_report_to_printer) | printing.server | list | New |
view_user_default_printer_selector_form |
wiz.user.default.printer.selector.form | wiz.user.default.printer.selector | form | New |
view_users_form |
res.users.form (in base_report_to_printer) | res.users | group | Inherits base.view_users_form |
view_users_form_simple_modif |
res.users.form.simple (in base_report_to_printer) | res.users | group | Inherits base.view_users_form_simple_modif |
wizard_print_attachment_form |
wizard.print.attachment | wizard.print.attachment | form | New |
wizard_print_attachment_line_form |
wizard.print.attachment.line.form | wizard.print.attachment.line | form | New |
printer_input_tray_id
Many2one → printing.tray.input
comodel_name='printing.tray.input'
domain="[('printer_id', '=', printing_printer_id)]"
string='Paper Source'
printer_output_tray_id
Many2one → printing.tray.output
comodel_name='printing.tray.output'
domain="[('printer_id', '=', printing_printer_id)]"
string='Output Bin'
printing_action_ids
One2many → printing.report.xml.action
comodel_name='printing.report.xml.action'
help='This field allows configuring action and printer on a per user basis'
inverse_name='report_id'
string='Actions'
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
property_printing_action_id
Many2one → printing.action
comodel_name='printing.action'
company_dependent=True
string='Default Behaviour'
behaviour(self)
onchange_printing_printer_id(self)
print_action_for_report_name(self, report_name)
print_document(self, record_ids, data=None)
print_document_client_action(self, record_ids, data=None)
print_document_threaded(self, report_id, record_ids, data)
report_action(self, docids, data=None, config=True)
action_type
Selection
required=True
selection=_available_action_types
string='Type'
name
Char
required=True
No public methods.
active
Boolean
default=True
help='Unchecked if the job is purged from CUPS.'
job_id_cups
Integer
help='CUPS id for this job.'
required=True
string='Job ID'
job_media_progress
Integer
help='Percentage of progress for this job.'
required=True
string='Media Progress'
job_state
Selection
help='Current state of the job.'
selection=[('pending', 'Pending'), ('pending held', 'Pending Held'), ('processing', 'Processing'), ('processing stopped', 'Processing Stopped'), ('canceled', 'Canceled'), ('aborted', 'Aborted'), ('completed', 'Completed'), ('unknown', 'Unknown')]
string='State'
job_state_reason
Selection
help='Reason for the current job state.'
selection=[('none', 'No reason'), ('aborted-by-system', 'Aborted by the system'), ('compression-error', 'Error in the compressed data'), ('cups-filter-crashed', 'CUPS filter crashed'), ('document-access-error', 'The URI cannot be accessed'), ('document-format-error', 'Error in the document'), ('job-canceled-at-device', 'Cancelled at the device'), ('job-canceled-by-operator', 'Cancelled by the printer operator'), ('job-canceled-by-user', 'Cancelled by the user'), ('job-completed-successfully', 'Completed successfully'), ('job-completed-with-errors', 'Completed with some errors'), ('job-completed-with-warnings', 'Completed with some warnings'), ('job-data-insufficient', 'No data has been received'), ('job-hold-until-specified', 'Currently held'), ('job-incoming', 'Files are currently being received'), ('job-interpreting', 'Currently being interpreted'), ('job-outgoing', 'Currently being sent to the printer'), ('job-printing', 'Currently printing'), ('job-queued', 'Queued for printing'), ('job-queued-for-marker', 'Printer needs ink/marker/toner'), ('job-restartable', 'Can be restarted'), ('job-transforming', 'Being transformed into a different format'), ('printer-stopped', 'Printer is stopped'), ('printer-stopped-partly', "Printer state reason set to 'stopped-partly'"), ('processing-to-stop-point', 'Cancelled, but printing already processed pages'), ('queued-in-device', 'Queued at the output device'), ('resources-are-not-ready', 'Resources not available to print the job'), ('service-off-line', 'Held because the printer is offline'), ('submission-interrupted', 'Files were not received in full'), ('unsupported-compression', 'Compressed using an unknown algorithm'), ('unsupported-document-format', 'Unsupported format')]
string='State Reason'
name
Char
help='Job name.'
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
help='Printer used for this job.'
ondelete='cascade'
required=True
string='Printer'
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server which hosts this job.'
related='printer_id.server_id'
store=True
string='Server'
time_at_completed
Datetime
help='Date and time of completion for this job.'
string='Completion Date'
time_at_creation
Datetime
help='Date and time of creation of this job.'
required=True
string='Creation Date'
time_at_processing
Datetime
help='Date and time of process for this job.'
string='Processing Date'
action_cancel(self)
cancel(self, purge_job=False)
active
Boolean
default=True
backend
Selection
default='cups'
required=True
selection=[('cups', 'Cups')]
default
Boolean
readonly=True
input_tray_ids
One2many → printing.tray.input
comodel_name='printing.tray.input'
inverse_name='printer_id'
string='Paper Sources'
job_ids
One2many → printing.job
comodel_name='printing.job'
help='Jobs printed on this printer.'
inverse_name='printer_id'
string='Jobs'
location
Char
readonly=True
model
Char
readonly=True
multi_thread
Boolean
compute='_compute_multi_thread'
readonly=False
store=True
name
Char
index=True
required=True
output_tray_ids
One2many → printing.tray.output
comodel_name='printing.tray.output'
inverse_name='printer_id'
string='Output trays'
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server used to access this printer.'
required=True
string='Server'
status
Selection
default='unknown'
readonly=True
required=True
selection=[('unavailable', 'Unavailable'), ('printing', 'Printing'), ('unknown', 'Unknown'), ('available', 'Available'), ('error', 'Error'), ('server-error', 'Server Error')]
status_message
Char
readonly=True
system_name
Char
index=True
required=True
uri
Char
readonly=True
string='URI'
action_cancel_all_jobs(self)
cancel_all_jobs(self, purge_jobs=False)
disable(self)
enable(self)
get_default(self)
print_document(self, report, content, **print_opts)
print_file(self, file_name, report=None, **print_opts)
print_options(self, report=None, **print_opts)
print_test_page(self)
set_default(self)
unset_default(self)
No new fields.
Public methods (1)action_ok(self)
action
Selection
required=True
selection=<expr>
active
Boolean
default=True
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Printer'
printer_input_tray_id
Many2one → printing.tray.input
comodel_name='printing.tray.input'
domain="[('printer_id', '=', printer_id)]"
string='Paper Source'
printer_output_tray_id
Many2one → printing.tray.output
comodel_name='printing.tray.output'
domain="[('printer_id', '=', printer_id)]"
string='Output Bin'
report_id
Many2one → ir.actions.report
comodel_name='ir.actions.report'
ondelete='cascade'
required=True
string='Report'
user_id
Many2one → res.users
comodel_name='res.users'
ondelete='cascade'
required=True
string='User'
behaviour(self)
onchange_printer_id(self)
active
Boolean
default=True
help='If checked, this server is useable.'
address
Char
default='localhost'
help='IP address or hostname of the server'
required=True
encryption_policy
Selection
help='Encryption Policy to connect to the server. Empty by default.'
args: [('0', 'HTTP_ENCRYPT_IF_REQUESTED'), ('1', 'HTTP_ENCRYPT_NEVER'), ('2', 'HTTP_ENCRYPT_REQUIRED'), ('3', 'HTTP_ENCRYPT_ALWAYS')]
multi_thread
Boolean
name
Char
default='Localhost'
help='Name of the server.'
required=True
password
Char
help='Password to connect to the server. Empty by default.'
port
Integer
default=631
help='Port of the server.'
required=True
printer_ids
One2many → printing.printer
comodel_name='printing.printer'
help='List of printers available on this server.'
inverse_name='server_id'
string='Printers List'
user
Char
help='User name to connect to the server. Empty by default.'
action_update_jobs(self)
action_update_printers(self)
update_jobs(self, which='all', first_job_id=-1)
update_printers(self, domain=None, raise_on_error=False)
name
Char
required=True
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
ondelete='cascade'
readonly=True
required=True
string='Printer'
system_name
Char
readonly=True
required=True
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
printer_input_tray_id
Many2one → printing.tray.input
comodel_name='printing.tray.input'
domain="[('printer_id', '=', printing_printer_id)]"
string='Default Printer Paper Source'
printer_output_tray_id
Many2one → printing.tray.output
comodel_name='printing.tray.output'
domain="[('printer_id', '=', printing_printer_id)]"
string='Default Printer Output Bin'
printing_action
Selection
selection=<expr>
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
SELF_READABLE_FIELDS(self)
SELF_WRITEABLE_FIELDS(self)
onchange_printing_printer_id(self)
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
default=<expr>
string='Default Printer'
action_confirm(self)
attachment_line_ids
One2many → wizard.print.attachment.line
string='Attachments to print'
args: 'wizard.print.attachment.line', 'wizard_id'
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
help='Printer used to print the attachments.'
required=True
string='Printer'
print_attachments(self)
attachment_id
Many2one → ir.attachment
domain=['|', ('mimetype', '=', 'application/pdf'), ('mimetype', '=', 'application/octet-stream')]
required=True
args: 'ir.attachment'
copies
Integer
default=1
record_name
Char
readonly=True
related='attachment_id.res_name'
wizard_id
Many2one → wizard.print.attachment
get_format(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/report-print-send |
| GIT | |
| GIT | https://github.com/OCA/report-print-send.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/report-print-send/tree/17.0/base_report_to_printer |
| VERSION | |
| VERSION | 1.2.2 |
| CATEGORY | |
| CATEGORY | Generic Modules/Base |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp, LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN, Open for Small Business Ltd |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp, LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN, Open for Small Business Ltd |
| COMMITTERS | |
| COMMITTERS | Stéphane Bidoul, Emanuel Cino, Weblate, OCA-git-bot, David, oca-ci, arantxa-s73, John Herholz |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/report-print-send |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:10 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - web - base |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
pycups |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module allows users to send reports to a printer attached to the server. It adds an optional behaviour on reports to send it directly to a printer. - Send to Client is the default behaviour providing you a downloadable PDF - Send to Printer prints the report on selected printer It detects trays on printers installation plus permits to select the paper source on which you want to print directly. Report behaviour is defined by settings. You will find this option on default user config, on default report config and on specific config per user per report. This allows you to dedicate a specific paper source for example for preprinted paper such as payment slip. Settings can be configured: - globally - per user - per report - per user and report |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
act_report_xml_view |
ir.actions.report.form (in base_report_to_printer) | ir.actions.report | page | Inherits base.act_report_xml_view |
printer_update_wizard |
printing.printer.update.wizard | printing.printer.update.wizard | form | New |
printing_job_view_form |
printing.job.form (in base_report_to_printer) | printing.job | form | New |
printing_job_view_tree |
printing.job.tree (in base_report_to_printer) | printing.job | tree | New |
printing_printer_view_form |
printing.printer.form (in base_report_to_printer) | printing.printer | form | New |
printing_printer_view_search |
printing.printer.search (in base_report_to_printer) | printing.printer | search | New |
printing_printer_view_tree |
printing.printer.tree (in base_report_to_printer) | printing.printer | tree | New |
printing_report_xml_action_view_form |
printing.report.xml.action.form (in base_report_to_printer) | printing.report.xml.action | form | New |
printing_report_xml_action_view_tree |
printing.report.xml.action.tree (in base_report_to_printer) | printing.report.xml.action | tree | New |
printing_server_view_form |
printing.server.form (in base_report_to_printer) | printing.server | form | New |
printing_server_view_search |
printing.server.search (in base_report_to_printer) | printing.server | search | New |
printing_server_view_tree |
printing.server.tree (in base_report_to_printer) | printing.server | tree | New |
view_users_form |
res.users.form (in base_report_to_printer) | res.users | group | Inherits base.view_users_form |
view_users_form_simple_modif |
res.users.form.simple (in base_report_to_printer) | res.users | group | Inherits base.view_users_form_simple_modif |
wizard_print_attachment_form |
wizard.print.attachment | wizard.print.attachment | form | New |
wizard_print_attachment_line_form |
wizard.print.attachment.line.form | wizard.print.attachment.line | form | New |
printer_input_tray_id
Many2one → printing.tray.input
comodel_name='printing.tray.input'
domain="[('printer_id', '=', printing_printer_id)]"
string='Paper Source'
printer_output_tray_id
Many2one → printing.tray.output
comodel_name='printing.tray.output'
domain="[('printer_id', '=', printing_printer_id)]"
string='Output Bin'
printing_action_ids
One2many → printing.report.xml.action
comodel_name='printing.report.xml.action'
help='This field allows configuring action and printer on a per user basis'
inverse_name='report_id'
string='Actions'
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
property_printing_action_id
Many2one → printing.action
comodel_name='printing.action'
company_dependent=True
string='Default Behaviour'
behaviour(self)
onchange_printing_printer_id(self)
print_action_for_report_name(self, report_name)
print_document(self, record_ids, data=None)
print_document_client_action(self, record_ids, data=None)
print_document_threaded(self, report_id, record_ids, data)
report_action(self, docids, data=None, config=True)
action_type
Selection
required=True
selection=_available_action_types
string='Type'
name
Char
required=True
No public methods.
active
Boolean
default=True
help='Unchecked if the job is purged from CUPS.'
job_id_cups
Integer
help='CUPS id for this job.'
required=True
string='Job ID'
job_media_progress
Integer
help='Percentage of progress for this job.'
required=True
string='Media Progress'
job_state
Selection
help='Current state of the job.'
selection=[('pending', 'Pending'), ('pending held', 'Pending Held'), ('processing', 'Processing'), ('processing stopped', 'Processing Stopped'), ('canceled', 'Canceled'), ('aborted', 'Aborted'), ('completed', 'Completed'), ('unknown', 'Unknown')]
string='State'
job_state_reason
Selection
help='Reason for the current job state.'
selection=[('none', 'No reason'), ('aborted-by-system', 'Aborted by the system'), ('compression-error', 'Error in the compressed data'), ('cups-filter-crashed', 'CUPS filter crashed'), ('document-access-error', 'The URI cannot be accessed'), ('document-format-error', 'Error in the document'), ('job-canceled-at-device', 'Cancelled at the device'), ('job-canceled-by-operator', 'Cancelled by the printer operator'), ('job-canceled-by-user', 'Cancelled by the user'), ('job-completed-successfully', 'Completed successfully'), ('job-completed-with-errors', 'Completed with some errors'), ('job-completed-with-warnings', 'Completed with some warnings'), ('job-data-insufficient', 'No data has been received'), ('job-hold-until-specified', 'Currently held'), ('job-incoming', 'Files are currently being received'), ('job-interpreting', 'Currently being interpreted'), ('job-outgoing', 'Currently being sent to the printer'), ('job-printing', 'Currently printing'), ('job-queued', 'Queued for printing'), ('job-queued-for-marker', 'Printer needs ink/marker/toner'), ('job-restartable', 'Can be restarted'), ('job-transforming', 'Being transformed into a different format'), ('printer-stopped', 'Printer is stopped'), ('printer-stopped-partly', "Printer state reason set to 'stopped-partly'"), ('processing-to-stop-point', 'Cancelled, but printing already processed pages'), ('queued-in-device', 'Queued at the output device'), ('resources-are-not-ready', 'Resources not available to print the job'), ('service-off-line', 'Held because the printer is offline'), ('submission-interrupted', 'Files were not received in full'), ('unsupported-compression', 'Compressed using an unknown algorithm'), ('unsupported-document-format', 'Unsupported format')]
string='State Reason'
name
Char
help='Job name.'
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
help='Printer used for this job.'
ondelete='cascade'
required=True
string='Printer'
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server which hosts this job.'
related='printer_id.server_id'
store=True
string='Server'
time_at_completed
Datetime
help='Date and time of completion for this job.'
string='Completion Date'
time_at_creation
Datetime
help='Date and time of creation of this job.'
required=True
string='Creation Date'
time_at_processing
Datetime
help='Date and time of process for this job.'
string='Processing Date'
action_cancel(self)
cancel(self, purge_job=False)
active
Boolean
default=True
default
Boolean
readonly=True
input_tray_ids
One2many → printing.tray.input
comodel_name='printing.tray.input'
inverse_name='printer_id'
string='Paper Sources'
job_ids
One2many → printing.job
comodel_name='printing.job'
help='Jobs printed on this printer.'
inverse_name='printer_id'
string='Jobs'
location
Char
readonly=True
model
Char
readonly=True
multi_thread
Boolean
compute='_compute_multi_thread'
readonly=False
store=True
name
Char
index=True
required=True
output_tray_ids
One2many → printing.tray.output
comodel_name='printing.tray.output'
inverse_name='printer_id'
string='Output trays'
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server used to access this printer.'
required=True
string='Server'
status
Selection
default='unknown'
readonly=True
required=True
selection=[('unavailable', 'Unavailable'), ('printing', 'Printing'), ('unknown', 'Unknown'), ('available', 'Available'), ('error', 'Error'), ('server-error', 'Server Error')]
status_message
Char
readonly=True
system_name
Char
index=True
required=True
uri
Char
readonly=True
string='URI'
action_cancel_all_jobs(self)
cancel_all_jobs(self, purge_jobs=False)
disable(self)
enable(self)
get_default(self)
print_document(self, report, content, **print_opts)
print_file(self, file_name, report=None, **print_opts)
print_options(self, report=None, **print_opts)
print_test_page(self)
set_default(self)
unset_default(self)
No new fields.
Public methods (1)action_ok(self)
action
Selection
required=True
selection=<expr>
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Printer'
printer_input_tray_id
Many2one → printing.tray.input
comodel_name='printing.tray.input'
domain="[('printer_id', '=', printer_id)]"
string='Paper Source'
printer_output_tray_id
Many2one → printing.tray.output
comodel_name='printing.tray.output'
domain="[('printer_id', '=', printer_id)]"
string='Output Bin'
report_id
Many2one → ir.actions.report
comodel_name='ir.actions.report'
ondelete='cascade'
required=True
string='Report'
user_id
Many2one → res.users
comodel_name='res.users'
ondelete='cascade'
required=True
string='User'
behaviour(self)
onchange_printer_id(self)
active
Boolean
default=True
help='If checked, this server is useable.'
address
Char
default='localhost'
help='IP address or hostname of the server'
required=True
encryption_policy
Selection
help='Encryption Policy to connect to the server. Empty by default.'
args: [('0', 'HTTP_ENCRYPT_IF_REQUESTED'), ('1', 'HTTP_ENCRYPT_NEVER'), ('2', 'HTTP_ENCRYPT_REQUIRED'), ('3', 'HTTP_ENCRYPT_ALWAYS')]
multi_thread
Boolean
name
Char
default='Localhost'
help='Name of the server.'
required=True
password
Char
help='Password to connect to the server. Empty by default.'
port
Integer
default=631
help='Port of the server.'
required=True
printer_ids
One2many → printing.printer
comodel_name='printing.printer'
help='List of printers available on this server.'
inverse_name='server_id'
string='Printers List'
user
Char
help='User name to connect to the server. Empty by default.'
action_update_jobs(self)
action_update_printers(self)
update_jobs(self, which='all', first_job_id=-1)
update_printers(self, domain=None, raise_on_error=False)
name
Char
required=True
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
ondelete='cascade'
readonly=True
required=True
string='Printer'
system_name
Char
readonly=True
required=True
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
printer_input_tray_id
Many2one → printing.tray.input
comodel_name='printing.tray.input'
domain="[('printer_id', '=', printing_printer_id)]"
string='Default Printer Paper Source'
printer_output_tray_id
Many2one → printing.tray.output
comodel_name='printing.tray.output'
domain="[('printer_id', '=', printing_printer_id)]"
string='Default Printer Output Bin'
printing_action
Selection
selection=_user_available_action_types
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
SELF_READABLE_FIELDS(self)
SELF_WRITEABLE_FIELDS(self)
onchange_printing_printer_id(self)
attachment_line_ids
One2many → wizard.print.attachment.line
string='Attachments to print'
args: 'wizard.print.attachment.line', 'wizard_id'
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
help='Printer used to print the attachments.'
required=True
string='Printer'
print_attachments(self)
attachment_id
Many2one → ir.attachment
domain=['|', ('mimetype', '=', 'application/pdf'), ('mimetype', '=', 'application/octet-stream')]
required=True
args: 'ir.attachment'
copies
Integer
default=1
record_name
Char
readonly=True
related='attachment_id.res_name'
wizard_id
Many2one → wizard.print.attachment
get_format(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/report-print-send |
| GIT | |
| GIT | https://github.com/OCA/report-print-send.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/report-print-send/tree/16.0/base_report_to_printer |
| VERSION | |
| VERSION | 1.5.2 |
| CATEGORY | |
| CATEGORY | Generic Modules/Base |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp, LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN, Open for Small Business Ltd |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp, LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN, Open for Small Business Ltd |
| COMMITTERS | |
| COMMITTERS | Alexis de Lattre, GitHub, Jacques-Etienne Baudoux, Laurent Mignon (ACSONE), Denis Roussel, GabbasovDinar, Sébastien Alix, Weblate, OCA-git-bot, David, Michele, oca-ci, Guille, Kevin Luna, hda, dtec-landoo, Artur Machura |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/report-print-send |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:58 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - web - base |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
pycups |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
act_report_xml_view |
ir.actions.report.form (in base_report_to_printer) | ir.actions.report | page | Inherits base.act_report_xml_view |
printer_update_wizard |
printing.printer.update.wizard | printing.printer.update.wizard | form | New |
printing_job_view_form |
printing.job.form (in base_report_to_printer) | printing.job | form | New |
printing_job_view_tree |
printing.job.tree (in base_report_to_printer) | printing.job | tree | New |
printing_printer_view_form |
printing.printer.form (in base_report_to_printer) | printing.printer | form | New |
printing_printer_view_search |
printing.printer.search (in base_report_to_printer) | printing.printer | search | New |
printing_printer_view_tree |
printing.printer.tree (in base_report_to_printer) | printing.printer | tree | New |
printing_report_xml_action_view_form |
printing.report.xml.action.form (in base_report_to_printer) | printing.report.xml.action | form | New |
printing_report_xml_action_view_tree |
printing.report.xml.action.tree (in base_report_to_printer) | printing.report.xml.action | tree | New |
printing_server_view_form |
printing.server.form (in base_report_to_printer) | printing.server | form | New |
printing_server_view_search |
printing.server.search (in base_report_to_printer) | printing.server | search | New |
printing_server_view_tree |
printing.server.tree (in base_report_to_printer) | printing.server | tree | New |
view_users_form |
res.users.form (in base_report_to_printer) | res.users | group | Inherits base.view_users_form |
view_users_form_simple_modif |
res.users.form.simple (in base_report_to_printer) | res.users | group | Inherits base.view_users_form_simple_modif |
wizard_print_attachment_form |
wizard.print.attachment | wizard.print.attachment | form | New |
wizard_print_attachment_line_form |
wizard.print.attachment.line.form | wizard.print.attachment.line | form | New |
printer_tray_id
Many2one → printing.tray
comodel_name='printing.tray'
domain="[('printer_id', '=', printing_printer_id)]"
string='Paper Source'
printing_action_ids
One2many → printing.report.xml.action
comodel_name='printing.report.xml.action'
help='This field allows configuring action and printer on a per user basis'
inverse_name='report_id'
string='Actions'
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
property_printing_action_id
Many2one → printing.action
comodel_name='printing.action'
company_dependent=True
string='Default Behaviour'
behaviour(self)
onchange_printing_printer_id(self)
print_action_for_report_name(self, report_name)
print_document(self, record_ids, data=None)
print_document_client_action(self, record_ids, data=None)
print_document_threaded(self, report_id, record_ids, data)
report_action(self, docids, data=None, config=True)
action_type
Selection
required=True
selection=_available_action_types
string='Type'
name
Char
required=True
No public methods.
active
Boolean
default=True
help='Unchecked if the job is purged from CUPS.'
job_id_cups
Integer
help='CUPS id for this job.'
required=True
string='Job ID'
job_media_progress
Integer
help='Percentage of progress for this job.'
required=True
string='Media Progress'
job_state
Selection
help='Current state of the job.'
selection=[('pending', 'Pending'), ('pending held', 'Pending Held'), ('processing', 'Processing'), ('processing stopped', 'Processing Stopped'), ('canceled', 'Canceled'), ('aborted', 'Aborted'), ('completed', 'Completed'), ('unknown', 'Unknown')]
string='State'
job_state_reason
Selection
help='Reason for the current job state.'
selection=[('none', 'No reason'), ('aborted-by-system', 'Aborted by the system'), ('compression-error', 'Error in the compressed data'), ('cups-filter-crashed', 'CUPS filter crashed'), ('document-access-error', 'The URI cannot be accessed'), ('document-format-error', 'Error in the document'), ('job-canceled-at-device', 'Cancelled at the device'), ('job-canceled-by-operator', 'Cancelled by the printer operator'), ('job-canceled-by-user', 'Cancelled by the user'), ('job-completed-successfully', 'Completed successfully'), ('job-completed-with-errors', 'Completed with some errors'), ('job-completed-with-warnings', 'Completed with some warnings'), ('job-data-insufficient', 'No data has been received'), ('job-hold-until-specified', 'Currently held'), ('job-incoming', 'Files are currently being received'), ('job-interpreting', 'Currently being interpreted'), ('job-outgoing', 'Currently being sent to the printer'), ('job-printing', 'Currently printing'), ('job-queued', 'Queued for printing'), ('job-queued-for-marker', 'Printer needs ink/marker/toner'), ('job-restartable', 'Can be restarted'), ('job-transforming', 'Being transformed into a different format'), ('printer-stopped', 'Printer is stopped'), ('printer-stopped-partly', "Printer state reason set to 'stopped-partly'"), ('processing-to-stop-point', 'Cancelled, but printing already processed pages'), ('queued-in-device', 'Queued at the output device'), ('resources-are-not-ready', 'Resources not available to print the job'), ('service-off-line', 'Held because the printer is offline'), ('submission-interrupted', 'Files were not received in full'), ('unsupported-compression', 'Compressed using an unknown algorithm'), ('unsupported-document-format', 'Unsupported format')]
string='State Reason'
name
Char
help='Job name.'
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
help='Printer used for this job.'
ondelete='cascade'
required=True
string='Printer'
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server which hosts this job.'
related='printer_id.server_id'
store=True
string='Server'
time_at_completed
Datetime
help='Date and time of completion for this job.'
string='Completion Date'
time_at_creation
Datetime
help='Date and time of creation of this job.'
required=True
string='Creation Date'
time_at_processing
Datetime
help='Date and time of process for this job.'
string='Processing Date'
action_cancel(self)
cancel(self, purge_job=False)
active
Boolean
default=True
default
Boolean
readonly=True
job_ids
One2many → printing.job
comodel_name='printing.job'
help='Jobs printed on this printer.'
inverse_name='printer_id'
string='Jobs'
location
Char
readonly=True
model
Char
readonly=True
multi_thread
Boolean
compute='_compute_multi_thread'
readonly=False
store=True
name
Char
index=True
required=True
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server used to access this printer.'
required=True
string='Server'
status
Selection
default='unknown'
readonly=True
required=True
selection=[('unavailable', 'Unavailable'), ('printing', 'Printing'), ('unknown', 'Unknown'), ('available', 'Available'), ('error', 'Error'), ('server-error', 'Server Error')]
status_message
Char
readonly=True
system_name
Char
index=True
required=True
tray_ids
One2many → printing.tray
comodel_name='printing.tray'
inverse_name='printer_id'
string='Paper Sources'
uri
Char
readonly=True
string='URI'
action_cancel_all_jobs(self)
cancel_all_jobs(self, purge_jobs=False)
disable(self)
enable(self)
get_default(self)
print_document(self, report, content, **print_opts)
print_file(self, file_name, report=None, **print_opts)
print_file_and_clean(self, file_name, report=None, **print_opts)
print_options(self, report=None, **print_opts)
print_test_page(self)
set_default(self)
unset_default(self)
No new fields.
Public methods (1)action_ok(self)
action
Selection
required=True
selection=<expr>
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Printer'
printer_tray_id
Many2one → printing.tray
comodel_name='printing.tray'
domain="[('printer_id', '=', printer_id)]"
string='Paper Source'
report_id
Many2one → ir.actions.report
comodel_name='ir.actions.report'
ondelete='cascade'
required=True
string='Report'
user_id
Many2one → res.users
comodel_name='res.users'
ondelete='cascade'
required=True
string='User'
behaviour(self)
onchange_printer_id(self)
active
Boolean
default=True
help='If checked, this server is useable.'
address
Char
default='localhost'
help='IP address or hostname of the server'
required=True
company_ids
Many2many → res.company
comodel_name='res.company'
encryption_policy
Selection
help='Encryption Policy to connect to the server. Empty by default.'
args: [('0', 'HTTP_ENCRYPT_IF_REQUESTED'), ('1', 'HTTP_ENCRYPT_NEVER'), ('2', 'HTTP_ENCRYPT_REQUIRED'), ('3', 'HTTP_ENCRYPT_ALWAYS')]
multi_thread
Boolean
name
Char
default='Localhost'
help='Name of the server.'
required=True
password
Char
help='Password to connect to the server. Empty by default.'
port
Integer
default=631
help='Port of the server.'
required=True
printer_ids
One2many → printing.printer
comodel_name='printing.printer'
help='List of printers available on this server.'
inverse_name='server_id'
string='Printers List'
user
Char
help='User name to connect to the server. Empty by default.'
action_update_jobs(self)
action_update_printers(self)
update_jobs(self, which='all', first_job_id=-1)
update_printers(self, domain=None, raise_on_error=False)
name
Char
required=True
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
ondelete='cascade'
readonly=True
required=True
string='Printer'
system_name
Char
readonly=True
required=True
No public methods.
printer_tray_id
Many2one → printing.tray
comodel_name='printing.tray'
domain="[('printer_id', '=', printing_printer_id)]"
string='Default Printer Paper Source'
printing_action
Selection
selection=_user_available_action_types
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
SELF_READABLE_FIELDS(self)
SELF_WRITEABLE_FIELDS(self)
onchange_printing_printer_id(self)
attachment_line_ids
One2many → wizard.print.attachment.line
string='Attachments to print'
args: 'wizard.print.attachment.line', 'wizard_id'
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
help='Printer used to print the attachments.'
required=True
string='Printer'
print_attachments(self)
attachment_id
Many2one → ir.attachment
domain=['|', ('mimetype', '=', 'application/pdf'), ('mimetype', '=', 'application/octet-stream')]
required=True
args: 'ir.attachment'
copies
Integer
default=1
record_name
Char
readonly=True
related='attachment_id.res_name'
wizard_id
Many2one → wizard.print.attachment
get_format(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/report-print-send |
| GIT | |
| GIT | https://github.com/OCA/report-print-send.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/report-print-send/tree/15.0/base_report_to_printer |
| VERSION | |
| VERSION | 1.3.0 |
| CATEGORY | |
| CATEGORY | Generic Modules/Base |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp, LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN, Open for Small Business Ltd |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp, LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN, Open for Small Business Ltd |
| COMMITTERS | |
| COMMITTERS | sergio-teruel, Sébastien Alix, Weblate, OCA-git-bot, David, oca-ci, Carlos Roca, matiasperalta1, David Montull |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/report-print-send |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:43 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - web - base |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
pycups |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
act_report_xml_view |
ir.actions.report.form (in base_report_to_printer) | ir.actions.report | page | Inherits base.act_report_xml_view |
printer_update_wizard |
printing.printer.update.wizard | printing.printer.update.wizard | form | New |
printing_job_view_form |
printing.job.form (in base_report_to_printer) | printing.job | form | New |
printing_job_view_tree |
printing.job.tree (in base_report_to_printer) | printing.job | tree | New |
printing_printer_view_form |
printing.printer.form (in base_report_to_printer) | printing.printer | form | New |
printing_printer_view_search |
printing.printer.search (in base_report_to_printer) | printing.printer | search | New |
printing_printer_view_tree |
printing.printer.tree (in base_report_to_printer) | printing.printer | tree | New |
printing_report_xml_action_view_form |
printing.report.xml.action.form (in base_report_to_printer) | printing.report.xml.action | form | New |
printing_report_xml_action_view_tree |
printing.report.xml.action.tree (in base_report_to_printer) | printing.report.xml.action | tree | New |
printing_server_view_form |
printing.server.form (in base_report_to_printer) | printing.server | form | New |
printing_server_view_search |
printing.server.search (in base_report_to_printer) | printing.server | search | New |
printing_server_view_tree |
printing.server.tree (in base_report_to_printer) | printing.server | tree | New |
view_user_default_printer_selector_form |
wiz.user.default.printer.selector.form | wiz.user.default.printer.selector | form | New |
view_users_form |
res.users.form (in base_report_to_printer) | res.users | group | Inherits base.view_users_form |
view_users_form_simple_modif |
res.users.form.simple (in base_report_to_printer) | res.users | group | Inherits base.view_users_form_simple_modif |
wizard_print_attachment_form |
wizard.print.attachment | wizard.print.attachment | form | New |
wizard_print_attachment_line_form |
wizard.print.attachment.line.form | wizard.print.attachment.line | form | New |
printer_tray_id
Many2one → printing.tray
comodel_name='printing.tray'
domain="[('printer_id', '=', printing_printer_id)]"
string='Paper Source'
printing_action_ids
One2many → printing.report.xml.action
comodel_name='printing.report.xml.action'
help='This field allows configuring action and printer on a per user basis'
inverse_name='report_id'
string='Actions'
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
property_printing_action_id
Many2one → printing.action
comodel_name='printing.action'
company_dependent=True
string='Default Behaviour'
behaviour(self)
onchange_printing_printer_id(self)
print_action_for_report_name(self, report_name)
print_document(self, record_ids, data=None)
print_document_client_action(self, record_ids, data=None)
print_document_threaded(self, report_id, record_ids, data)
report_action(self, docids, data=None, config=True)
action_type
Selection
required=True
selection=_available_action_types
string='Type'
name
Char
required=True
No public methods.
active
Boolean
default=True
help='Unchecked if the job is purged from cups.'
job_id_cups
Integer
help='CUPS id for this job.'
required=True
string='Job ID'
job_media_progress
Integer
help='Percentage of progress for this job.'
required=True
string='Media Progress'
job_state
Selection
help='Current state of the job.'
selection=[('pending', 'Pending'), ('pending held', 'Pending Held'), ('processing', 'Processing'), ('processing stopped', 'Processing Stopped'), ('canceled', 'Canceled'), ('aborted', 'Aborted'), ('completed', 'Completed'), ('unknown', 'Unknown')]
string='State'
job_state_reason
Selection
help='Reason for the current job state.'
selection=[('none', 'No reason'), ('aborted-by-system', 'Aborted by the system'), ('compression-error', 'Error in the compressed data'), ('cups-filter-crashed', 'CUPS filter crashed'), ('document-access-error', 'The URI cannot be accessed'), ('document-format-error', 'Error in the document'), ('job-canceled-at-device', 'Cancelled at the device'), ('job-canceled-by-operator', 'Cancelled by the printer operator'), ('job-canceled-by-user', 'Cancelled by the user'), ('job-completed-successfully', 'Completed successfully'), ('job-completed-with-errors', 'Completed with some errors'), ('job-completed-with-warnings', 'Completed with some warnings'), ('job-data-insufficient', 'No data has been received'), ('job-hold-until-specified', 'Currently held'), ('job-incoming', 'Files are currently being received'), ('job-interpreting', 'Currently being interpreted'), ('job-outgoing', 'Currently being sent to the printer'), ('job-printing', 'Currently printing'), ('job-queued', 'Queued for printing'), ('job-queued-for-marker', 'Printer needs ink/marker/toner'), ('job-restartable', 'Can be restarted'), ('job-transforming', 'Being transformed into a different format'), ('printer-stopped', 'Printer is stopped'), ('printer-stopped-partly', "Printer state reason set to 'stopped-partly'"), ('processing-to-stop-point', 'Cancelled, but printing already processed pages'), ('queued-in-device', 'Queued at the output device'), ('resources-are-not-ready', 'Resources not available to print the job'), ('service-off-line', 'Held because the printer is offline'), ('submission-interrupted', 'Files were not received in full'), ('unsupported-compression', 'Compressed using an unknown algorithm'), ('unsupported-document-format', 'Unsupported format')]
string='State Reason'
name
Char
help='Job name.'
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
help='Printer used for this job.'
ondelete='cascade'
required=True
string='Printer'
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server which hosts this job.'
related='printer_id.server_id'
store=True
string='Server'
time_at_completed
Datetime
help='Date and time of completion for this job.'
time_at_creation
Datetime
help='Date and time of creation for this job.'
required=True
time_at_processing
Datetime
help='Date and time of process for this job.'
action_cancel(self)
cancel(self, purge_job=False)
active
Boolean
default=True
default
Boolean
readonly=True
job_ids
One2many → printing.job
comodel_name='printing.job'
help='Jobs printed on this printer.'
inverse_name='printer_id'
string='Jobs'
location
Char
readonly=True
model
Char
readonly=True
multi_thread
Boolean
compute='_compute_multi_thread'
readonly=False
store=True
name
Char
index=True
required=True
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server used to access this printer.'
required=True
string='Server'
status
Selection
default='unknown'
readonly=True
required=True
selection=[('unavailable', 'Unavailable'), ('printing', 'Printing'), ('unknown', 'Unknown'), ('available', 'Available'), ('error', 'Error'), ('server-error', 'Server Error')]
status_message
Char
readonly=True
system_name
Char
index=True
required=True
tray_ids
One2many → printing.tray
comodel_name='printing.tray'
inverse_name='printer_id'
string='Paper Sources'
uri
Char
readonly=True
string='URI'
action_cancel_all_jobs(self)
cancel_all_jobs(self, purge_jobs=False)
disable(self)
enable(self)
get_default(self)
print_document(self, report, content, **print_opts)
print_file(self, file_name, report=None, **print_opts)
print_options(self, report=None, **print_opts)
print_test_page(self)
set_default(self)
unset_default(self)
No new fields.
Public methods (1)action_ok(self)
action
Selection
required=True
selection=<expr>
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Printer'
printer_tray_id
Many2one → printing.tray
comodel_name='printing.tray'
domain="[('printer_id', '=', printer_id)]"
string='Paper Source'
report_id
Many2one → ir.actions.report
comodel_name='ir.actions.report'
ondelete='cascade'
required=True
string='Report'
user_id
Many2one → res.users
comodel_name='res.users'
ondelete='cascade'
required=True
string='User'
behaviour(self)
onchange_printer_id(self)
active
Boolean
default=True
help='If checked, this server is useable.'
address
Char
default='localhost'
help='IP address or hostname of the server'
required=True
encryption_policy
Selection
help='Encryption Policy to connect to the server. Empty by default.'
args: [('0', 'HTTP_ENCRYPT_IF_REQUESTED'), ('1', 'HTTP_ENCRYPT_NEVER'), ('2', 'HTTP_ENCRYPT_REQUIRED'), ('3', 'HTTP_ENCRYPT_ALWAYS')]
multi_thread
Boolean
name
Char
default='Localhost'
help='Name of the server.'
required=True
password
Char
help='Password to connect to the server. Empty by default.'
port
Integer
default=631
help='Port of the server.'
required=True
printer_ids
One2many → printing.printer
comodel_name='printing.printer'
help='List of printers available on this server.'
inverse_name='server_id'
string='Printers List'
user
Char
help='User name to connect to the server. Empty by default.'
action_update_jobs(self)
action_update_printers(self)
update_jobs(self, which='all', first_job_id=-1)
update_printers(self, domain=None, raise_on_error=False)
name
Char
required=True
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
ondelete='cascade'
readonly=True
required=True
string='Printer'
system_name
Char
readonly=True
required=True
No public methods.
printer_tray_id
Many2one → printing.tray
comodel_name='printing.tray'
domain="[('printer_id', '=', printing_printer_id)]"
string='Default Printer Paper Source'
printing_action
Selection
selection=_user_available_action_types
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
SELF_READABLE_FIELDS(self)
SELF_WRITEABLE_FIELDS(self)
onchange_printing_printer_id(self)
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
default=<expr>
string='Default Printer'
action_confirm(self)
attachment_line_ids
One2many → wizard.print.attachment.line
string='Attachments to print'
args: 'wizard.print.attachment.line', 'wizard_id'
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
help='Printer used to print the attachments.'
required=True
string='Printer'
print_attachments(self)
attachment_id
Many2one → ir.attachment
domain="['|', ('mimetype', '=', 'application/pdf'), ('mimetype', '=', 'application/octet-stream')]"
required=True
args: 'ir.attachment'
copies
Integer
default=1
record_name
Char
readonly=True
related='attachment_id.res_name'
wizard_id
Many2one → wizard.print.attachment
get_format(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/report-print-send |
| GIT | |
| GIT | https://github.com/OCA/report-print-send.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/report-print-send/tree/14.0/base_report_to_printer |
| VERSION | |
| VERSION | 2.0.2 |
| CATEGORY | |
| CATEGORY | Generic Modules/Base |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp, LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN, Open for Small Business Ltd |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp, LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN, Open for Small Business Ltd |
| COMMITTERS | |
| COMMITTERS | Alexandre Fayolle, Pedro M. Baeza, Denis Roussel, Florent de Labarre, Lois Rilo, Pierre Verkest, OCA Transbot, Sébastien Alix, oca-travis, Weblate, OCA-git-bot, Stephane Mangin, oca-ci, Carlos Roca, oca-git-bot, sonhd |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/report-print-send |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:41:11 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - web - base |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
pycups |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
act_report_xml_view |
ir.actions.report.form (in base_report_to_printer) | ir.actions.report | page | Inherits base.act_report_xml_view |
assets_backend |
base_report_to_printer assets | ir.ui.view | qweb | Inherits web.assets_backend |
printer_update_wizard |
printing.printer.update.wizard | printing.printer.update.wizard | form | New |
printing_job_view_form |
printing.job.form (in base_report_to_printer) | printing.job | form | New |
printing_job_view_tree |
printing.job.tree (in base_report_to_printer) | printing.job | tree | New |
printing_printer_view_form |
printing.printer.form (in base_report_to_printer) | printing.printer | form | New |
printing_printer_view_search |
printing.printer.search (in base_report_to_printer) | printing.printer | search | New |
printing_printer_view_tree |
printing.printer.tree (in base_report_to_printer) | printing.printer | tree | New |
printing_report_xml_action_view_form |
printing.report.xml.action.form (in base_report_to_printer) | printing.report.xml.action | form | New |
printing_report_xml_action_view_tree |
printing.report.xml.action.tree (in base_report_to_printer) | printing.report.xml.action | tree | New |
printing_server_view_form |
printing.server.form (in base_report_to_printer) | printing.server | form | New |
printing_server_view_search |
printing.server.search (in base_report_to_printer) | printing.server | search | New |
printing_server_view_tree |
printing.server.tree (in base_report_to_printer) | printing.server | tree | New |
view_users_form |
res.users.form (in base_report_to_printer) | res.users | group | Inherits base.view_users_form |
view_users_form_simple_modif |
res.users.form.simple (in base_report_to_printer) | res.users | group | Inherits base.view_users_form_simple_modif |
wizard_print_attachment_form |
wizard.print.attachment | wizard.print.attachment | form | New |
wizard_print_attachment_line_form |
wizard.print.attachment.line.form | wizard.print.attachment.line | form | New |
printer_tray_id
Many2one → printing.tray
comodel_name='printing.tray'
domain="[('printer_id', '=', printing_printer_id)]"
string='Paper Source'
printing_action_ids
One2many → printing.report.xml.action
comodel_name='printing.report.xml.action'
help='This field allows configuring action and printer on a per user basis'
inverse_name='report_id'
string='Actions'
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
property_printing_action_id
Many2one → printing.action
comodel_name='printing.action'
company_dependent=True
string='Default Behaviour'
behaviour(self)
onchange_printing_printer_id(self)
print_action_for_report_name(self, report_name)
print_document(self, record_ids, data=None)
report_action(self, docids, data=None, config=True)
action_type
Selection
required=True
selection=_available_action_types
string='Type'
name
Char
required=True
No public methods.
active
Boolean
default=True
help='Unchecked if the job is purged from cups.'
job_id_cups
Integer
help='CUPS id for this job.'
required=True
string='Job ID'
job_media_progress
Integer
help='Percentage of progress for this job.'
required=True
string='Media Progress'
job_state
Selection
help='Current state of the job.'
selection=[('pending', 'Pending'), ('pending held', 'Pending Held'), ('processing', 'Processing'), ('processing stopped', 'Processing Stopped'), ('canceled', 'Canceled'), ('aborted', 'Aborted'), ('completed', 'Completed'), ('unknown', 'Unknown')]
string='State'
job_state_reason
Selection
help='Reason for the current job state.'
selection=[('none', 'No reason'), ('aborted-by-system', 'Aborted by the system'), ('compression-error', 'Error in the compressed data'), ('cups-filter-crashed', 'CUPS filter crashed'), ('document-access-error', 'The URI cannot be accessed'), ('document-format-error', 'Error in the document'), ('job-canceled-at-device', 'Cancelled at the device'), ('job-canceled-by-operator', 'Cancelled by the printer operator'), ('job-canceled-by-user', 'Cancelled by the user'), ('job-completed-successfully', 'Completed successfully'), ('job-completed-with-errors', 'Completed with some errors'), ('job-completed-with-warnings', 'Completed with some warnings'), ('job-data-insufficient', 'No data has been received'), ('job-hold-until-specified', 'Currently held'), ('job-incoming', 'Files are currently being received'), ('job-interpreting', 'Currently being interpreted'), ('job-outgoing', 'Currently being sent to the printer'), ('job-printing', 'Currently printing'), ('job-queued', 'Queued for printing'), ('job-queued-for-marker', 'Printer needs ink/marker/toner'), ('job-restartable', 'Can be restarted'), ('job-transforming', 'Being transformed into a different format'), ('printer-stopped', 'Printer is stopped'), ('printer-stopped-partly', "Printer state reason set to 'stopped-partly'"), ('processing-to-stop-point', 'Cancelled, but printing already processed pages'), ('queued-in-device', 'Queued at the output device'), ('resources-are-not-ready', 'Resources not available to print the job'), ('service-off-line', 'Held because the printer is offline'), ('submission-interrupted', 'Files were not received in full'), ('unsupported-compression', 'Compressed using an unknown algorithm'), ('unsupported-document-format', 'Unsupported format')]
string='State Reason'
name
Char
help='Job name.'
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
help='Printer used for this job.'
ondelete='cascade'
required=True
string='Printer'
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server which hosts this job.'
related='printer_id.server_id'
store=True
string='Server'
time_at_completed
Datetime
help='Date and time of completion for this job.'
time_at_creation
Datetime
help='Date and time of creation for this job.'
required=True
time_at_processing
Datetime
help='Date and time of process for this job.'
action_cancel(self)
cancel(self, purge_job=False)
active
Boolean
default=True
default
Boolean
readonly=True
job_ids
One2many → printing.job
comodel_name='printing.job'
help='Jobs printed on this printer.'
inverse_name='printer_id'
string='Jobs'
location
Char
readonly=True
model
Char
readonly=True
name
Char
index=True
required=True
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server used to access this printer.'
required=True
string='Server'
status
Selection
default='unknown'
readonly=True
required=True
selection=[('unavailable', 'Unavailable'), ('printing', 'Printing'), ('unknown', 'Unknown'), ('available', 'Available'), ('error', 'Error'), ('server-error', 'Server Error')]
status_message
Char
readonly=True
system_name
Char
index=True
required=True
tray_ids
One2many → printing.tray
comodel_name='printing.tray'
inverse_name='printer_id'
string='Paper Sources'
uri
Char
readonly=True
string='URI'
action_cancel_all_jobs(self)
cancel_all_jobs(self, purge_jobs=False)
disable(self)
enable(self)
get_default(self)
print_document(self, report, content, **print_opts)
print_file(self, file_name, report=None, **print_opts)
print_options(self, report=None, **print_opts)
print_test_page(self)
set_default(self)
unset_default(self)
No new fields.
Public methods (1)action_ok(self)
action
Selection
required=True
selection=<expr>
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Printer'
printer_tray_id
Many2one → printing.tray
comodel_name='printing.tray'
domain="[('printer_id', '=', printer_id)]"
string='Paper Source'
report_id
Many2one → ir.actions.report
comodel_name='ir.actions.report'
ondelete='cascade'
required=True
string='Report'
user_id
Many2one → res.users
comodel_name='res.users'
ondelete='cascade'
required=True
string='User'
behaviour(self)
onchange_printer_id(self)
active
Boolean
default=True
help='If checked, this server is useable.'
address
Char
default='localhost'
help='IP address or hostname of the server'
required=True
encryption_policy
Selection
help='Encryption Policy to connect to the server. Empty by default.'
args: [('0', 'HTTP_ENCRYPT_IF_REQUESTED'), ('1', 'HTTP_ENCRYPT_NEVER'), ('2', 'HTTP_ENCRYPT_REQUIRED'), ('3', 'HTTP_ENCRYPT_ALWAYS')]
name
Char
default='Localhost'
help='Name of the server.'
required=True
password
Char
help='Password to connect to the server. Empty by default.'
port
Integer
default=631
help='Port of the server.'
required=True
printer_ids
One2many → printing.printer
comodel_name='printing.printer'
help='List of printers available on this server.'
inverse_name='server_id'
string='Printers List'
user
Char
help='User name to connect to the server. Empty by default.'
action_update_jobs(self)
action_update_printers(self)
update_jobs(self, which='all', first_job_id=-1)
update_printers(self, domain=None, raise_on_error=False)
name
Char
required=True
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
ondelete='cascade'
readonly=True
required=True
string='Printer'
system_name
Char
readonly=True
required=True
No public methods.
printer_tray_id
Many2one → printing.tray
comodel_name='printing.tray'
domain="[('printer_id', '=', printing_printer_id)]"
string='Default Printer Paper Source'
printing_action
Selection
selection=_user_available_action_types
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
onchange_printing_printer_id(self)
attachment_line_ids
One2many → wizard.print.attachment.line
string='Attachments to print'
args: 'wizard.print.attachment.line', 'wizard_id'
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
help='Printer used to print the attachments.'
required=True
string='Printer'
print_attachments(self)
attachment_id
Many2one → ir.attachment
domain="['|', ('mimetype', '=', 'application/pdf'), ('mimetype', '=', 'application/octet-stream')]"
required=True
args: 'ir.attachment'
copies
Integer
default=1
record_name
Char
readonly=True
related='attachment_id.res_name'
wizard_id
Many2one → wizard.print.attachment
get_format(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/report-print-send |
| GIT | |
| GIT | https://github.com/OCA/report-print-send.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/report-print-send/tree/13.0/base_report_to_printer |
| VERSION | |
| VERSION | 1.3.0 |
| CATEGORY | |
| CATEGORY | Generic Modules/Base |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp, LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN, Open for Small Business Ltd |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp, LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN, Open for Small Business Ltd |
| COMMITTERS | |
| COMMITTERS | Stéphane Bidoul, Guewen Baconnier, Alexandre Fayolle, GitHub, Enric Tobella, OCA Transbot, Thomas Binsfeld, Rod Schouteden, oca-travis, Weblate, OCA-git-bot, Jaime Arroyo, Florian Pose |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/report-print-send |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:20 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
pycups |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
act_report_xml_view |
ir.actions.report.form (in base_report_to_printer) | ir.actions.report | xpath | Inherits base.act_report_xml_view |
assets_backend |
base_report_to_printer assets | ir.ui.view | qweb | Inherits web.assets_backend |
printer_update_wizard |
printing.printer.update.wizard | printing.printer.update.wizard | form | New |
printing_job_view_form |
printing.job.form (in base_report_to_printer) | printing.job | form | New |
printing_job_view_tree |
printing.job.tree (in base_report_to_printer) | printing.job | tree | New |
printing_printer_view_form |
printing.printer.form (in base_report_to_printer) | printing.printer | form | New |
printing_printer_view_search |
printing.printer.search (in base_report_to_printer) | printing.printer | search | New |
printing_printer_view_tree |
printing.printer.tree (in base_report_to_printer) | printing.printer | tree | New |
printing_report_xml_action_view_form |
printing.report.xml.action.form (in base_report_to_printer) | printing.report.xml.action | form | New |
printing_report_xml_action_view_tree |
printing.report.xml.action.tree (in base_report_to_printer) | printing.report.xml.action | tree | New |
printing_server_view_form |
printing.server.form (in base_report_to_printer) | printing.server | form | New |
printing_server_view_search |
printing.server.search (in base_report_to_printer) | printing.server | search | New |
printing_server_view_tree |
printing.server.tree (in base_report_to_printer) | printing.server | tree | New |
view_users_form |
res.users.form (in base_report_to_printer) | res.users | xpath | Inherits base.view_users_form |
view_users_form_simple_modif |
res.users.form.simple (in base_report_to_printer) | res.users | footer | Inherits base.view_users_form_simple_modif |
printer_tray_id
Many2one → printing.tray
comodel_name='printing.tray'
domain="[('printer_id', '=', printing_printer_id)]"
string='Paper Source'
printing_action_ids
One2many → printing.report.xml.action
comodel_name='printing.report.xml.action'
help='This field allows configuring action and printer on a per user basis'
inverse_name='report_id'
string='Actions'
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
property_printing_action_id
Many2one → printing.action
comodel_name='printing.action'
company_dependent=True
string='Default Behaviour'
behaviour(self)
onchange_printing_printer_id(self)
print_action_for_report_name(self, report_name)
print_document(self, record_ids, data=None)
render_qweb_pdf(self, res_ids=None, data=None)
report_action(self, docids, data=None, config=True)
action_type
Selection
required=True
selection=_available_action_types
string='Type'
name
Char
required=True
No public methods.
active
Boolean
default=True
help='Unchecked if the job is purged from cups.'
job_id_cups
Integer
help='CUPS id for this job.'
required=True
string='Job ID'
job_media_progress
Integer
help='Percentage of progress for this job.'
required=True
string='Media Progress'
job_state
Selection
help='Current state of the job.'
selection=[('pending', 'Pending'), ('pending held', 'Pending Held'), ('processing', 'Processing'), ('processing stopped', 'Processing Stopped'), ('canceled', 'Canceled'), ('aborted', 'Aborted'), ('completed', 'Completed'), ('unknown', 'Unknown')]
string='State'
job_state_reason
Selection
help='Reason for the current job state.'
selection=[('none', 'No reason'), ('aborted-by-system', 'Aborted by the system'), ('compression-error', 'Error in the compressed data'), ('cups-filter-crashed', 'CUPS filter crashed'), ('document-access-error', 'The URI cannot be accessed'), ('document-format-error', 'Error in the document'), ('job-canceled-at-device', 'Cancelled at the device'), ('job-canceled-by-operator', 'Cancelled by the printer operator'), ('job-canceled-by-user', 'Cancelled by the user'), ('job-completed-successfully', 'Completed successfully'), ('job-completed-with-errors', 'Completed with some errors'), ('job-completed-with-warnings', 'Completed with some warnings'), ('job-data-insufficient', 'No data has been received'), ('job-hold-until-specified', 'Currently held'), ('job-incoming', 'Files are currently being received'), ('job-interpreting', 'Currently being interpreted'), ('job-outgoing', 'Currently being sent to the printer'), ('job-printing', 'Currently printing'), ('job-queued', 'Queued for printing'), ('job-queued-for-marker', 'Printer needs ink/marker/toner'), ('job-restartable', 'Can be restarted'), ('job-transforming', 'Being transformed into a different format'), ('printer-stopped', 'Printer is stopped'), ('printer-stopped-partly', "Printer state reason set to 'stopped-partly'"), ('processing-to-stop-point', 'Cancelled, but printing already processed pages'), ('queued-in-device', 'Queued at the output device'), ('resources-are-not-ready', 'Resources not available to print the job'), ('service-off-line', 'Held because the printer is offline'), ('submission-interrupted', 'Files were not received in full'), ('unsupported-compression', 'Compressed using an unknown algorithm'), ('unsupported-document-format', 'Unsupported format')]
string='State Reason'
name
Char
help='Job name.'
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
help='Printer used for this job.'
ondelete='cascade'
required=True
string='Printer'
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server which hosts this job.'
related='printer_id.server_id'
store=True
string='Server'
time_at_completed
Datetime
help='Date and time of completion for this job.'
time_at_creation
Datetime
help='Date and time of creation for this job.'
required=True
time_at_processing
Datetime
help='Date and time of process for this job.'
action_cancel(self)
cancel(self, purge_job=False)
active
Boolean
default=True
default
Boolean
readonly=True
job_ids
One2many → printing.job
comodel_name='printing.job'
help='Jobs printed on this printer.'
inverse_name='printer_id'
string='Jobs'
location
Char
readonly=True
model
Char
readonly=True
name
Char
index=True
required=True
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server used to access this printer.'
required=True
string='Server'
status
Selection
default='unknown'
readonly=True
required=True
selection=[('unavailable', 'Unavailable'), ('printing', 'Printing'), ('unknown', 'Unknown'), ('available', 'Available'), ('error', 'Error'), ('server-error', 'Server Error')]
status_message
Char
readonly=True
system_name
Char
index=True
required=True
tray_ids
One2many → printing.tray
comodel_name='printing.tray'
inverse_name='printer_id'
string='Paper Sources'
uri
Char
readonly=True
string='URI'
action_cancel_all_jobs(self)
cancel_all_jobs(self, purge_jobs=False)
disable(self)
enable(self)
get_default(self)
print_document(self, report, content, **print_opts)
print_file(self, file_name, report=None, **print_opts)
print_options(self, report=None, **print_opts)
set_default(self)
unset_default(self)
No new fields.
Public methods (1)action_ok(self)
action
Selection
required=True
selection=<expr>
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Printer'
printer_tray_id
Many2one → printing.tray
comodel_name='printing.tray'
domain="[('printer_id', '=', printer_id)]"
string='Paper Source'
report_id
Many2one → ir.actions.report
comodel_name='ir.actions.report'
ondelete='cascade'
required=True
string='Report'
user_id
Many2one → res.users
comodel_name='res.users'
ondelete='cascade'
required=True
string='User'
behaviour(self)
onchange_printer_id(self)
active
Boolean
default=True
help='If checked, this server is useable.'
address
Char
default='localhost'
help='IP address or hostname of the server'
required=True
name
Char
default='Localhost'
help='Name of the server.'
required=True
port
Integer
default=631
help='Port of the server.'
required=True
printer_ids
One2many → printing.printer
comodel_name='printing.printer'
help='List of printers available on this server.'
inverse_name='server_id'
string='Printers List'
action_update_jobs(self)
action_update_printers(self)
update_jobs(self, which='all', first_job_id=-1)
update_printers(self, domain=None, raise_on_error=False)
name
Char
required=True
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
ondelete='cascade'
readonly=True
required=True
string='Printer'
system_name
Char
readonly=True
required=True
No public methods.
printer_tray_id
Many2one → printing.tray
comodel_name='printing.tray'
domain="[('printer_id', '=', printing_printer_id)]"
string='Default Printer Paper Source'
printing_action
Selection
selection=_user_available_action_types
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
onchange_printing_printer_id(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/report-print-send |
| GIT | |
| GIT | https://github.com/OCA/report-print-send.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/report-print-send/tree/12.0/base_report_to_printer |
| VERSION | |
| VERSION | 1.2.1 |
| CATEGORY | |
| CATEGORY | Generic Modules/Base |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp, LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN, Open for Small Business Ltd |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp, LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN, Open for Small Business Ltd |
| COMMITTERS | |
| COMMITTERS | Alexandre Fayolle, sebalix, OCA Transbot, Graeme Gellatly, oca-travis, Weblate, OCA-git-bot, Jaime Arroyo |
| WEBSITE | |
| WEBSITE | http://www.agilebg.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:25 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - web - base |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
cups |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
act_report_xml_view |
ir.actions.report.form (in base_report_to_printer) | ir.actions.report | xpath | Inherits base.act_report_xml_view |
assets_backend |
base_report_to_printer assets | ir.ui.view | qweb | Inherits web.assets_backend |
printer_update_wizard |
printing.printer.update.wizard | printing.printer.update.wizard | form | New |
printing_job_view_form |
printing.job.form (in base_report_to_printer) | printing.job | form | New |
printing_job_view_tree |
printing.job.tree (in base_report_to_printer) | printing.job | tree | New |
printing_printer_view_form |
printing.printer.form (in base_report_to_printer) | printing.printer | form | New |
printing_printer_view_search |
printing.printer.search (in base_report_to_printer) | printing.printer | search | New |
printing_printer_view_tree |
printing.printer.tree (in base_report_to_printer) | printing.printer | tree | New |
printing_report_xml_action_view_form |
printing.report.xml.action.form (in base_report_to_printer) | printing.report.xml.action | form | New |
printing_report_xml_action_view_tree |
printing.report.xml.action.tree (in base_report_to_printer) | printing.report.xml.action | tree | New |
printing_server_view_form |
printing.server.form (in base_report_to_printer) | printing.server | form | New |
printing_server_view_search |
printing.server.search (in base_report_to_printer) | printing.server | search | New |
printing_server_view_tree |
printing.server.tree (in base_report_to_printer) | printing.server | tree | New |
view_users_form |
res.users.form (in base_report_to_printer) | res.users | xpath | Inherits base.view_users_form |
view_users_form_simple_modif |
res.users.form.simple (in base_report_to_printer) | res.users | footer | Inherits base.view_users_form_simple_modif |
wizard_print_attachment_form |
wizard.print.attachment | wizard.print.attachment | form | New |
wizard_print_attachment_line_form |
wizard.print.attachment.line.form | wizard.print.attachment.line | form | New |
printer_tray_id
Many2one → printing.tray
comodel_name='printing.tray'
domain="[('printer_id', '=', printing_printer_id)]"
string='Paper Source'
printing_action_ids
One2many → printing.report.xml.action
comodel_name='printing.report.xml.action'
help='This field allows configuring action and printer on a per user basis'
inverse_name='report_id'
string='Actions'
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
property_printing_action_id
Many2one → printing.action
comodel_name='printing.action'
company_dependent=True
string='Default Behaviour'
behaviour(self)
onchange_printing_printer_id(self)
print_action_for_report_name(self, report_name)
print_document(self, record_ids, data=None)
render_qweb_pdf(self, res_ids=None, data=None)
report_action(self, docids, data=None, config=True)
action_type
Selection
oldname='type'
required=True
selection=_available_action_types
string='Type'
name
Char
required=True
No public methods.
active
Boolean
default=True
help='Unchecked if the job is purged from cups.'
job_id_cups
Integer
help='CUPS id for this job.'
required=True
string='Job ID'
job_media_progress
Integer
help='Percentage of progress for this job.'
required=True
string='Media Progress'
job_state
Selection
help='Current state of the job.'
selection=[('pending', 'Pending'), ('pending held', 'Pending Held'), ('processing', 'Processing'), ('processing stopped', 'Processing Stopped'), ('canceled', 'Canceled'), ('aborted', 'Aborted'), ('completed', 'Completed'), ('unknown', 'Unknown')]
string='State'
job_state_reason
Selection
help='Reason for the current job state.'
selection=[('none', 'No reason'), ('aborted-by-system', 'Aborted by the system'), ('compression-error', 'Error in the compressed data'), ('document-access-error', 'The URI cannot be accessed'), ('document-format-error', 'Error in the document'), ('cups-filter-crashed', 'CUPS filter crashed'), ('job-canceled-at-device', 'Cancelled at the device'), ('job-canceled-by-operator', 'Cancelled by the printer operator'), ('job-canceled-by-user', 'Cancelled by the user'), ('job-completed-successfully', 'Completed successfully'), ('job-completed-with-errors', 'Completed with some errors'), ('job-completed-with-warnings', 'Completed with some warnings'), ('job-data-insufficient', 'No data has been received'), ('job-hold-until-specified', 'Currently held'), ('job-incoming', 'Files are currently being received'), ('job-interpreting', 'Currently being interpreted'), ('job-outgoing', 'Currently being sent to the printer'), ('job-printing', 'Currently printing'), ('job-queued', 'Queued for printing'), ('job-queued-for-marker', 'Printer needs ink/marker/toner'), ('job-restartable', 'Can be restarted'), ('job-transforming', 'Being transformed into a different format'), ('printer-stopped', 'Printer is stopped'), ('printer-stopped-partly', "Printer state reason set to 'stopped-partly'"), ('processing-to-stop-point', 'Cancelled, but printing already processed pages'), ('queued-in-device', 'Queued at the output device'), ('resources-are-not-ready', 'Resources not available to print the job'), ('service-off-line', 'Held because the printer is offline'), ('submission-interrupted', 'Files were not received in full'), ('unsupported-compression', 'Compressed using an unknown algorithm'), ('unsupported-document-format', 'Unsupported format')]
string='State Reason'
name
Char
help='Job name.'
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
help='Printer used for this job.'
ondelete='cascade'
required=True
string='Printer'
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server which hosts this job.'
related='printer_id.server_id'
store=True
string='Server'
time_at_completed
Datetime
help='Date and time of completion for this job.'
time_at_creation
Datetime
help='Date and time of creation for this job.'
required=True
time_at_processing
Datetime
help='Date and time of process for this job.'
action_cancel(self)
cancel(self, purge_job=False)
active
Boolean
default=True
default
Boolean
readonly=True
job_ids
One2many → printing.job
comodel_name='printing.job'
help='Jobs printed on this printer.'
inverse_name='printer_id'
string='Jobs'
location
Char
readonly=True
model
Char
readonly=True
name
Char
index=True
required=True
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server used to access this printer.'
required=True
string='Server'
status
Selection
default='unknown'
readonly=True
required=True
selection=[('unavailable', 'Unavailable'), ('printing', 'Printing'), ('unknown', 'Unknown'), ('available', 'Available'), ('error', 'Error'), ('server-error', 'Server Error')]
status_message
Char
readonly=True
system_name
Char
index=True
required=True
tray_ids
One2many → printing.tray
comodel_name='printing.tray'
inverse_name='printer_id'
string='Paper Sources'
uri
Char
readonly=True
string='URI'
action_cancel_all_jobs(self)
cancel_all_jobs(self, purge_jobs=False)
disable(self)
enable(self)
get_default(self)
print_document(self, report, content, **print_opts)
print_file(self, file_name, report=None, **print_opts)
print_options(self, report=None, **print_opts)
set_default(self)
unset_default(self)
No new fields.
Public methods (1)action_ok(self)
action
Selection
required=True
selection=<expr>
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Printer'
printer_tray_id
Many2one → printing.tray
comodel_name='printing.tray'
domain="[('printer_id', '=', printer_id)]"
string='Paper Source'
report_id
Many2one → ir.actions.report
comodel_name='ir.actions.report'
ondelete='cascade'
required=True
string='Report'
user_id
Many2one → res.users
comodel_name='res.users'
ondelete='cascade'
required=True
string='User'
behaviour(self)
onchange_printer_id(self)
active
Boolean
default=True
help='If checked, this server is useable.'
address
Char
default='localhost'
help='IP address or hostname of the server'
required=True
name
Char
default='Localhost'
help='Name of the server.'
required=True
port
Integer
default=631
help='Port of the server.'
required=True
printer_ids
One2many → printing.printer
comodel_name='printing.printer'
help='List of printers available on this server.'
inverse_name='server_id'
string='Printers List'
action_update_jobs(self)
action_update_printers(self)
update_jobs(self, which='all', first_job_id=-1)
update_printers(self, domain=None, raise_on_error=False)
name
Char
required=True
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
ondelete='cascade'
readonly=True
required=True
string='Printer'
system_name
Char
readonly=True
required=True
No public methods.
printer_tray_id
Many2one → printing.tray
comodel_name='printing.tray'
domain="[('printer_id', '=', printing_printer_id)]"
string='Default Printer Paper Source'
printing_action
Selection
selection=_user_available_action_types
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
onchange_printing_printer_id(self)
attachment_line_ids
One2many → wizard.print.attachment.line
string='Attachments to print'
args: 'wizard.print.attachment.line', 'wizard_id'
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
help='Printer used to print the attachments.'
required=True
string='Printer'
print_attachments(self)
attachment_id
Many2one → ir.attachment
domain="['|', ('mimetype', '=', 'application/pdf'), ('mimetype', '=', 'application/octet-stream')]"
required=True
args: 'ir.attachment'
copies
Integer
default=1
record_name
Char
readonly=True
related='attachment_id.res_name'
wizard_id
Many2one → wizard.print.attachment
get_format(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/report-print-send |
| GIT | |
| GIT | https://github.com/OCA/report-print-send.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/report-print-send/tree/11.0/base_report_to_printer |
| VERSION | |
| VERSION | 2.3.1 |
| CATEGORY | |
| CATEGORY | Generic Modules/Base |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp, LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp, LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN |
| COMMITTERS | |
| COMMITTERS | Yannick Vaucher, Alexandre Fayolle, Maxime Chambreuil, Pedro M. Baeza, GitHub, Enric Tobella, Florent de Labarre, OCA Transbot, Graeme Gellatly, oca-travis, Weblate, OCA-git-bot, Sylvain GARANCHER, Oscar Ulises Garza Cordova |
| WEBSITE | |
| WEBSITE | http://www.agilebg.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:24:02 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - web - base |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
cups |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
act_report_xml_view |
ir.actions.report.printing | ir.actions.report | xpath | Inherits base.act_report_xml_view |
assets_backend |
base_report_to_printer assets | ir.ui.view | qweb | Inherits web.assets_backend |
printer_update_wizard |
printing.printer.update.wizard | printing.printer.update.wizard | form | New |
printing_job_view_form |
printing.job.form | printing.job | form | New |
printing_job_view_tree |
printing.job.tree | printing.job | tree | New |
printing_printer_view_form |
printing.printer.form | printing.printer | form | New |
printing_printer_view_search |
printing.printer.search | printing.printer | search | New |
printing_printer_view_tree |
printing.printer.tree | printing.printer | tree | New |
printing_report_xml_action_view_form |
printing.report.xml.action.form | printing.report.xml.action | form | New |
printing_report_xml_action_view_tree |
printing.report.xml.action.tree | printing.report.xml.action | tree | New |
printing_server_view_form |
printing.server.form | printing.server | form | New |
printing_server_view_search |
printing.server.search | printing.server | search | New |
printing_server_view_tree |
printing.server.tree | printing.server | tree | New |
view_users_form |
res.users.form.printing.preferences | res.users | xpath | Inherits base.view_users_form |
view_users_form_simple_modif |
res.users.form.printing | res.users | footer | Inherits base.view_users_form_simple_modif |
printer_tray_id
Many2one → printing.tray
comodel_name='printing.tray'
domain="[('printer_id', '=', printing_printer_id)]"
string='Paper Source'
printing_action_ids
One2many → printing.report.xml.action
comodel_name='printing.report.xml.action'
help='This field allows configuring action and printer on a per user basis'
inverse_name='report_id'
string='Actions'
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
property_printing_action_id
Many2one → printing.action
comodel_name='printing.action'
company_dependent=True
string='Default Behaviour'
behaviour(self)
onchange_printing_printer_id(self)
print_action_for_report_name(self, report_name)
print_document(self, record_ids, data=None)
render_qweb_pdf(self, docids, data=None)
report_action(self, docids, data=None, config=True)
action_type
Selection
oldname='type'
required=True
selection=_available_action_types
string='Type'
name
Char
required=True
No public methods.
active
Boolean
default=True
help='Unchecked if the job is purged from cups.'
job_id_cups
Integer
help='CUPS id for this job.'
required=True
string='Job ID'
job_media_progress
Integer
help='Percentage of progress for this job.'
required=True
string='Media Progress'
job_state
Selection
help='Current state of the job.'
selection=[('pending', 'Pending'), ('pending held', 'Pending Held'), ('processing', 'Processing'), ('processing stopped', 'Processing Stopped'), ('canceled', 'Canceled'), ('aborted', 'Aborted'), ('completed', 'Completed'), ('unknown', 'Unknown')]
string='State'
job_state_reason
Selection
help='Reason for the current job state.'
selection=[('none', 'No reason'), ('aborted-by-system', 'Aborted by the system'), ('compression-error', 'Error in the compressed data'), ('document-access-error', 'The URI cannot be accessed'), ('document-format-error', 'Error in the document'), ('cups-filter-crashed', 'CUPS filter crashed'), ('job-canceled-at-device', 'Cancelled at the device'), ('job-canceled-by-operator', 'Cancelled by the printer operator'), ('job-canceled-by-user', 'Cancelled by the user'), ('job-completed-successfully', 'Completed successfully'), ('job-completed-with-errors', 'Completed with some errors'), ('job-completed-with-warnings', 'Completed with some warnings'), ('job-data-insufficient', 'No data has been received'), ('job-hold-until-specified', 'Currently held'), ('job-incoming', 'Files are currently being received'), ('job-interpreting', 'Currently being interpreted'), ('job-outgoing', 'Currently being sent to the printer'), ('job-printing', 'Currently printing'), ('job-queued', 'Queued for printing'), ('job-queued-for-marker', 'Printer needs ink/marker/toner'), ('job-restartable', 'Can be restarted'), ('job-transforming', 'Being transformed into a different format'), ('printer-stopped', 'Printer is stopped'), ('printer-stopped-partly', "Printer state reason set to 'stopped-partly'"), ('processing-to-stop-point', 'Cancelled, but printing already processed pages'), ('queued-in-device', 'Queued at the output device'), ('resources-are-not-ready', 'Resources not available to print the job'), ('service-off-line', 'Held because the printer is offline'), ('submission-interrupted', 'Files were not received in full'), ('unsupported-compression', 'Compressed using an unknown algorithm'), ('unsupported-document-format', 'Unsupported format')]
string='State Reason'
name
Char
help='Job name.'
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
help='Printer used for this job.'
ondelete='cascade'
required=True
string='Printer'
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server which hosts this job.'
related='printer_id.server_id'
store=True
string='Server'
time_at_completed
Datetime
help='Date and time of completion for this job.'
time_at_creation
Datetime
help='Date and time of creation for this job.'
required=True
time_at_processing
Datetime
help='Date and time of process for this job.'
action_cancel(self)
cancel(self, purge_job=False)
default
Boolean
readonly=True
job_ids
One2many → printing.job
comodel_name='printing.job'
help='Jobs printed on this printer.'
inverse_name='printer_id'
string='Jobs'
location
Char
readonly=True
model
Char
readonly=True
name
Char
index=True
required=True
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server used to access this printer.'
required=True
string='Server'
status
Selection
default='unknown'
readonly=True
required=True
selection=[('unavailable', 'Unavailable'), ('printing', 'Printing'), ('unknown', 'Unknown'), ('available', 'Available'), ('error', 'Error'), ('server-error', 'Server Error')]
status_message
Char
readonly=True
system_name
Char
index=True
required=True
tray_ids
One2many → printing.tray
comodel_name='printing.tray'
inverse_name='printer_id'
string='Paper Sources'
uri
Char
readonly=True
string='URI'
action_cancel_all_jobs(self)
cancel_all_jobs(self, purge_jobs=False)
disable(self)
enable(self)
get_default(self)
print_document(self, report, content, **print_opts)
print_file(self, file_name, report=None, **print_opts)
print_options(self, report=None, **print_opts)
set_default(self)
unset_default(self)
No new fields.
Public methods (1)action_ok(self)
action
Selection
required=True
selection=<expr>
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Printer'
printer_tray_id
Many2one → printing.tray
comodel_name='printing.tray'
domain="[('printer_id', '=', printer_id)]"
string='Paper Source'
report_id
Many2one → ir.actions.report
comodel_name='ir.actions.report'
ondelete='cascade'
required=True
string='Report'
user_id
Many2one → res.users
comodel_name='res.users'
ondelete='cascade'
required=True
string='User'
behaviour(self)
onchange_printer_id(self)
active
Boolean
default=True
help='If checked, this server is useable.'
address
Char
default='localhost'
help='IP address or hostname of the server'
required=True
name
Char
default='Localhost'
help='Name of the server.'
required=True
port
Integer
default=631
help='Port of the server.'
required=True
printer_ids
One2many → printing.printer
comodel_name='printing.printer'
help='List of printers available on this server.'
inverse_name='server_id'
string='Printers List'
action_update_jobs(self)
action_update_printers(self)
update_jobs(self, which='all', first_job_id=-1)
update_printers(self, domain=None, raise_on_error=False)
name
Char
required=True
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
ondelete='cascade'
readonly=True
required=True
string='Printer'
system_name
Char
readonly=True
required=True
No public methods.
printer_tray_id
Many2one → printing.tray
comodel_name='printing.tray'
domain="[('printer_id', '=', printing_printer_id)]"
string='Default Printer Paper Source'
printing_action
Selection
selection=_user_available_action_types
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
onchange_printing_printer_id(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/report-print-send |
| GIT | |
| GIT | https://github.com/OCA/report-print-send.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/report-print-send/tree/10.0/base_report_to_printer |
| VERSION | |
| VERSION | 2.0.2 |
| CATEGORY | |
| CATEGORY | Generic Modules/Base |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, GitHub, Jairo Llopis, Stéphane Bidoul (ACSONE), OCA Transbot, Graeme Gellatly, Dave Lasley, oca-travis, Weblate, OCA-git-bot, Sergio Teruel Albert, Sylvain GARANCHER |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/report-print-send |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:20:02 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - report - base - web - base_setup - web_kanban |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
cups |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
act_report_xml_view |
ir.actions.report.xml.printing | ir.actions.report.xml | xpath | Inherits base.act_report_xml_view |
assets_backend |
base_report_to_printer assets | ir.ui.view | qweb | Inherits report.assets_backend |
printer_update_wizard |
printing.printer.update.wizard | printing.printer.update.wizard | form | New |
printing_job_view_form |
printing.job.form | printing.job | form | New |
printing_job_view_tree |
printing.job.tree | printing.job | tree | New |
printing_printer_view_form |
printing.printer.form | printing.printer | form | New |
printing_printer_view_search |
printing.printer.search | printing.printer | search | New |
printing_printer_view_tree |
printing.printer.tree | printing.printer | tree | New |
printing_report_xml_action_view_form |
printing.report.xml.action.form | printing.report.xml.action | form | New |
printing_report_xml_action_view_tree |
printing.report.xml.action.tree | printing.report.xml.action | tree | New |
printing_server_view_form |
printing.server.form | printing.server | form | New |
printing_server_view_search |
printing.server.search | printing.server | search | New |
printing_server_view_tree |
printing.server.tree | printing.server | tree | New |
report_1 |
report_1 | ir.ui.view | qweb | New |
view_users_form |
res.users.form.printing.preferences | res.users | xpath | Inherits base.view_users_form |
view_users_form_simple_modif |
res.users.form.printing | res.users | footer | Inherits base.view_users_form_simple_modif |
printing_action_ids
One2many → printing.report.xml.action
comodel_name='printing.report.xml.action'
help='This field allows configuring action and printer on a per user basis'
inverse_name='report_id'
string='Actions'
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Printer'
property_printing_action_id
Many2one → printing.action
comodel_name='printing.action'
company_dependent=True
string='Action'
report_copies
Integer
default=1
string='# Copies'
behaviour(self)
print_action_for_report_name(self, report_name)
action_type
Selection
oldname='type'
required=True
selection=_available_action_types
string='Type'
name
Char
required=True
No public methods.
active
Boolean
default=True
help='Unchecked if the job is purged from cups.'
job_id_cups
Integer
help='CUPS id for this job.'
required=True
string='Job ID'
job_media_progress
Integer
help='Percentage of progress for this job.'
required=True
string='Media Progress'
job_state
Selection
help='Current state of the job.'
selection=[('pending', 'Pending'), ('pending held', 'Pending Held'), ('processing', 'Processing'), ('processing stopped', 'Processing Stopped'), ('canceled', 'Canceled'), ('aborted', 'Aborted'), ('completed', 'Completed'), ('unknown', 'Unknown')]
string='State'
job_state_reason
Selection
help='Reason for the current job state.'
selection=[('none', 'No reason'), ('aborted-by-system', 'Aborted by the system'), ('compression-error', 'Error in the compressed data'), ('document-access-error', 'The URI cannot be accessed'), ('document-format-error', 'Error in the document'), ('job-canceled-at-device', 'Cancelled at the device'), ('job-canceled-by-operator', 'Cancelled by the printer operator'), ('job-canceled-by-user', 'Cancelled by the user'), ('job-completed-successfully', 'Completed successfully'), ('job-completed-with-errors', 'Completed with some errors'), ('job-completed(with-warnings', 'Completed with some warnings'), ('job-data-insufficient', 'No data has been received'), ('job-hold-until-specified', 'Currently held'), ('job-incoming', 'Files are currently being received'), ('job-interpreting', 'Currently being interpreted'), ('job-outgoing', 'Currently being sent to the printer'), ('job-printing', 'Currently printing'), ('job-queued', 'Queued for printing'), ('job-queued-for-marker', 'Printer needs ink/marker/toner'), ('job-restartable', 'Can be restarted'), ('job-transforming', 'Being transformed into a different format'), ('printer-stopped', 'Printer is stopped'), ('printer-stopped-partly', "Printer state reason set to 'stopped-partly'"), ('processing-to-stop-point', 'Cancelled, but printing already processed pages'), ('queued-in-device', 'Queued at the output device'), ('resources-are-not-ready', 'Resources not available to print the job'), ('service-off-line', 'Held because the printer is offline'), ('submission-interrupted', 'Files were not received in full'), ('unsupported-compression', 'Compressed using an unknown algorithm'), ('unsupported-document-format', 'Unsupported format')]
string='State Reason'
name
Char
help='Job name.'
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
help='Printer used for this job.'
ondelete='cascade'
required=True
string='Printer'
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server which hosts this job.'
readonly=True
related='printer_id.server_id'
store=True
string='Server'
time_at_completed
Datetime
help='Date and time of completion for this job.'
time_at_creation
Datetime
help='Date and time of creation for this job.'
required=True
time_at_processing
Datetime
help='Date and time of process for this job.'
action_cancel(self)
cancel(self, purge_job=False)
default
Boolean
readonly=True
job_ids
One2many → printing.job
comodel_name='printing.job'
help='Jobs printed on this printer.'
inverse_name='printer_id'
string='Jobs'
location
Char
readonly=True
model
Char
readonly=True
name
Char
index=True
required=True
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server used to access this printer.'
required=True
string='Server'
status
Selection
default='unknown'
readonly=True
required=True
selection=[('unavailable', 'Unavailable'), ('printing', 'Printing'), ('unknown', 'Unknown'), ('available', 'Available'), ('error', 'Error'), ('server-error', 'Server Error')]
status_message
Char
readonly=True
system_name
Char
index=True
required=True
uri
Char
readonly=True
string='URI'
action_cancel_all_jobs(self)
cancel_all_jobs(self, purge_jobs=False)
disable(self)
enable(self)
get_default(self)
print_document(self, report, content, format, copies=None)
print_file(self, file_name, report=None, copies=1, format=None)
print_options(self, report=None, format=None, copies=1)
set_default(self)
No new fields.
Public methods (1)action_ok(self)
action
Selection
required=True
selection=<expr>
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Printer'
report_id
Many2one → ir.actions.report.xml
comodel_name='ir.actions.report.xml'
ondelete='cascade'
required=True
string='Report'
user_id
Many2one → res.users
comodel_name='res.users'
ondelete='cascade'
required=True
string='User'
behaviour(self)
active
Boolean
default=True
help='If checked, this server is useable.'
address
Char
default='localhost'
help='IP address or hostname of the server'
required=True
name
Char
default='Localhost'
help='Name of the server.'
required=True
port
Integer
default=631
help='Port of the server.'
required=True
printer_ids
One2many → printing.printer
comodel_name='printing.printer'
help='List of printers available on this server.'
inverse_name='server_id'
string='Printers List'
action_update_jobs(self)
action_update_printers(self)
update_jobs(self, which='all', first_job_id=-1)
update_printers(self, domain=None, raise_on_error=False)
No new fields.
Public methods (2)get_pdf(self, docids, report_name, html=None, data=None)
print_document(self, record_ids, report_name, html=None, data=None)
printing_action
Selection
selection=_user_available_action_types
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/report-print-send |
| GIT | |
| GIT | https://github.com/OCA/report-print-send.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/report-print-send/tree/9.0/base_report_to_printer |
| VERSION | |
| VERSION | 2.1.1 |
| CATEGORY | |
| CATEGORY | Generic Modules/Base |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), LasLabs, Agile Business Group & Domsense, Pegueroles SCP, NaN |
| COMMITTERS | |
| COMMITTERS | Yannick Vaucher, Pedro M. Baeza, GitHub, Stéphane Bidoul (ACSONE), OCA Transbot, Juan Jose Scarafia, Dave Lasley, Moises Lopez - https://www.vauxoo.com/, oca-travis, Weblate, OCA-git-bot, Sylvain GARANCHER, David, yvaucher |
| WEBSITE | |
| WEBSITE | http://www.agilebg.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:15:24 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - report - base - web |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
cups |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
act_report_xml_view |
ir.actions.report.xml.printing | ir.actions.report.xml | xpath | Inherits base.act_report_xml_view |
assets_backend |
base_report_to_printer assets | ir.ui.view | qweb | Inherits report.assets_backend |
printer_update_wizard |
printing.printer.update.wizard | printing.printer.update.wizard | form | New |
printing_job_view_form |
printing.job.form | printing.job | form | New |
printing_job_view_tree |
printing.job.tree | printing.job | tree | New |
printing_printer_view_form |
printing.printer.form | printing.printer | form | New |
printing_printer_view_search |
printing.printer.search | printing.printer | search | New |
printing_printer_view_tree |
printing.printer.tree | printing.printer | tree | New |
printing_report_xml_action_view_form |
printing.report.xml.action.form | printing.report.xml.action | form | New |
printing_report_xml_action_view_tree |
printing.report.xml.action.tree | printing.report.xml.action | tree | New |
printing_server_view_form |
printing.server.form | printing.server | form | New |
printing_server_view_search |
printing.server.search | printing.server | search | New |
printing_server_view_tree |
printing.server.tree | printing.server | tree | New |
view_users_form |
res.users.form.printing.preferences | res.users | xpath | Inherits base.view_users_form |
view_users_form_simple_modif |
res.users.form.printing | res.users | footer | Inherits base.view_users_form_simple_modif |
printing_action_ids
One2many → printing.report.xml.action
comodel_name='printing.report.xml.action'
help='This field allows configuring action and printer on a per user basis'
inverse_name='report_id'
string='Actions'
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Printer'
property_printing_action_id
Many2one → printing.action
comodel_name='printing.action'
company_dependent=True
string='Action'
behaviour(self)
print_action_for_report_name(self, report_name)
name
Char
required=True
type
Selection
required=True
args: <expr>
No public methods.
active
Boolean
default=True
help='Unchecked if the job is purged from cups.'
job_id_cups
Integer
help='CUPS id for this job.'
required=True
string='Job ID'
job_media_progress
Integer
help='Percentage of progress for this job.'
required=True
string='Media Progress'
job_state
Selection
help='Current state of the job.'
selection=[('pending', 'Pending'), ('pending held', 'Pending Held'), ('processing', 'Processing'), ('processing stopped', 'Processing Stopped'), ('canceled', 'Canceled'), ('aborted', 'Aborted'), ('completed', 'Completed'), ('unknown', 'Unknown')]
string='State'
job_state_reason
Selection
help='Reason for the current job state.'
selection=[('none', 'No reason'), ('aborted-by-system', 'Aborted by the system'), ('compression-error', 'Error in the compressed data'), ('document-access-error', 'The URI cannot be accessed'), ('document-format-error', 'Error in the document'), ('job-canceled-at-device', 'Cancelled at the device'), ('job-canceled-by-operator', 'Cancelled by the printer operator'), ('job-canceled-by-user', 'Cancelled by the user'), ('job-completed-successfully', 'Completed successfully'), ('job-completed-with-errors', 'Completed with some errors'), ('job-completed(with-warnings', 'Completed with some warnings'), ('job-data-insufficient', 'No data has been received'), ('job-hold-until-specified', 'Currently held'), ('job-incoming', 'Files are currently being received'), ('job-interpreting', 'Currently being interpreted'), ('job-outgoing', 'Currently being sent to the printer'), ('job-printing', 'Currently printing'), ('job-queued', 'Queued for printing'), ('job-queued-for-marker', 'Printer needs ink/marker/toner'), ('job-restartable', 'Can be restarted'), ('job-transforming', 'Being transformed into a different format'), ('printer-stopped', 'Printer is stopped'), ('printer-stopped-partly', "Printer state reason set to 'stopped-partly'"), ('processing-to-stop-point', 'Cancelled, but printing already processed pages'), ('queued-in-device', 'Queued at the output device'), ('resources-are-not-ready', 'Resources not available to print the job'), ('service-off-line', 'Held because the printer is offline'), ('submission-interrupted', 'Files were not received in full'), ('unsupported-compression', 'Compressed using an unknown algorithm'), ('unsupported-document-format', 'Unsupported format')]
string='State Reason'
name
Char
help='Job name.'
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
help='Printer used for this job.'
ondelete='cascade'
required=True
string='Printer'
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server which hosts this job.'
related='printer_id.server_id'
store=True
string='Server'
time_at_completed
Datetime
help='Date and time of completion for this job.'
time_at_creation
Datetime
help='Date and time of creation for this job.'
required=True
time_at_processing
Datetime
help='Date and time of process for this job.'
action_cancel(self)
cancel(self, purge_job=False)
default
Boolean
readonly=True
job_ids
One2many → printing.job
comodel_name='printing.job'
help='Jobs printed on this printer.'
inverse_name='printer_id'
string='Jobs'
location
Char
readonly=True
model
Char
readonly=True
name
Char
index=True
required=True
server_id
Many2one → printing.server
comodel_name='printing.server'
help='Server used to access this printer.'
required=True
string='Server'
status
Selection
default='unknown'
readonly=True
required=True
args: [('unavailable', 'Unavailable'), ('printing', 'Printing'), ('unknown', 'Unknown'), ('available', 'Available'), ('error', 'Error'), ('server-error', 'Server Error')]
status_message
Char
readonly=True
system_name
Char
index=True
required=True
uri
Char
readonly=True
string='URI'
action_cancel_all_jobs(self)
cancel_all_jobs(self, purge_jobs=False)
disable(self)
enable(self)
get_default(self)
print_document(self, report, content, format, copies=1)
print_file(self, file_name, report=None, copies=1, format=None)
print_options(self, report=None, format=None, copies=1)
set_default(self)
update_from_cups(self, cups_connection, cups_printer)
update_printers_status(self, domain=None)
No new fields.
Public methods (1)action_ok(self)
action
Selection
required=True
args: <expr>
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Printer'
report_id
Many2one → ir.actions.report.xml
comodel_name='ir.actions.report.xml'
ondelete='cascade'
required=True
string='Report'
user_id
Many2one → res.users
comodel_name='res.users'
ondelete='cascade'
required=True
string='User'
behaviour(self)
active
Boolean
default=True
help='If checked, this server is useable.'
address
Char
default='localhost'
help='IP address or hostname of the server'
required=True
name
Char
default='Localhost'
help='Name of the server.'
required=True
port
Integer
default=631
help='Port of the server.'
required=True
printer_ids
One2many → printing.printer
comodel_name='printing.printer'
help='List of printers available on this server.'
inverse_name='server_id'
string='Printers List'
action_update_jobs(self)
action_update_printers(self)
update_jobs(self, which='all', first_job_id=-1)
update_printers(self, domain=None, raise_on_error=False)
No new fields.
Public methods (3)get_pdf(self, cr, uid, ids, report_name, html=None, data=None, context=None)
get_pdf(self, docids, report_name, html=None, data=None)
print_document(self, record_ids, report_name, html=None, data=None)
printing_action
Selection
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/report-print-send |
| GIT | |
| GIT | https://github.com/OCA/report-print-send.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/report-print-send/tree/8.0/base_report_to_printer |
| VERSION | |
| VERSION | 0.2.0 |
| CATEGORY | |
| CATEGORY | Generic Modules/Base |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Agile Business Group & Domsense, Pegueroles SCP, NaN |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Agile Business Group & Domsense, Pegueroles SCP, NaN |
| COMMITTERS | |
| COMMITTERS | Stéphane Bidoul, Alexis de Lattre, Yannick Vaucher, Guewen Baconnier, Alexandre Fayolle, Anthony Muschang, Stéphane Bidoul (ACSONE), OCA Transbot, vrenaville, czoellner, Roel Adriaans, oca-travis, Weblate, OCA-git-bot, oihane |
| WEBSITE | |
| WEBSITE | http://www.agilebg.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:11:27 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - report - web |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
cups |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
action_report_xml_form |
ir.actions.report.xml.printing | ir.actions.report.xml | page | Inherits base.act_report_xml_view |
assets_backend |
base_report_to_printer assets | ir.ui.view | qweb | Inherits report.assets_backend |
printer_update_wizard |
printing.printer.update.wizard | printing.printer.update.wizard | form | New |
printing_report_xml_action_form |
printing.report.xml.action.form | printing.report.xml.action | form | New |
printing_report_xml_action_tree |
printing.report.xml.action.tree | printing.report.xml.action | tree | New |
view_printing_printer_form |
printing.printer.form | printing.printer | form | New |
view_printing_printer_search |
printing.printer.search | printing.printer | search | New |
view_printing_printer_tree |
printing.printer.tree | printing.printer | tree | New |
view_printing_users_form |
res.users.form.printing | res.users | page | Inherits base.view_users_form |
view_printing_users_prefs |
res.users.form.printing | res.users | footer | Inherits base.view_users_form_simple_modif |
printing_action_ids
One2many → printing.report.xml.action
comodel_name='printing.report.xml.action'
help='This field allows configuring action and printer on a per user basis'
inverse_name='report_id'
string='Actions'
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Printer'
property_printing_action
Many2one → printing.action
comodel_name='printing.action'
company_dependent=True
string='Action'
behaviour(self)
print_action_for_report_name(self, report_name)
name
Char
required=True
type
Selection
required=True
args: _available_action_types
No public methods.
default
Boolean
readonly=True
location
Char
readonly=True
model
Char
readonly=True
name
Char
required=True
select=True
status
Selection
default='unknown'
readonly=True
required=True
args: [('unavailable', 'Unavailable'), ('printing', 'Printing'), ('unknown', 'Unknown'), ('available', 'Available'), ('error', 'Error'), ('server-error', 'Server Error')]
status_message
Char
readonly=True
system_name
Char
required=True
select=True
uri
Char
readonly=True
string='URI'
get_default(self)
print_document(self, report, content, format, copies=1)
print_options(self, report, format, copies=1)
set_default(self)
update_from_cups(self, cups_connection, cups_printer)
update_printers_status(self)
No new fields.
Public methods (1)action_ok(self)
action
Selection
required=True
args: _available_action_types
printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Printer'
report_id
Many2one → ir.actions.report.xml
comodel_name='ir.actions.report.xml'
ondelete='cascade'
required=True
string='Report'
user_id
Many2one → res.users
comodel_name='res.users'
ondelete='cascade'
required=True
string='User'
behaviour(self)
No new fields.
Public methods (4)get_pdf(self, cr, uid, ids, report_name, html=None, data=None, context=None)
get_pdf(self, records, report_name, html=None, data=None)
print_document(self, cr, uid, ids, report_name, html=None, data=None, context=None)
print_document(self, records, report_name, html=None, data=None)
printing_action
Selection
printing_printer_id
Many2one → printing.printer
comodel_name='printing.printer'
string='Default Printer'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/report-print-send |
| GIT | |
| GIT | https://github.com/OCA/report-print-send.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/report-print-send/tree/7.0/base_report_to_printer |
| VERSION | |
| VERSION | 0.2 |
| CATEGORY | |
| CATEGORY | Generic Modules/Base |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Agile Business Group & Domsense, Pegueroles SCP, NaN |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Agile Business Group & Domsense, Pegueroles SCP, NaN |
| COMMITTERS | |
| COMMITTERS | Yannick Vaucher, Guewen Baconnier, Alexandre Fayolle, Lionel Sausin, Laetitia Gangloff, Joel Grand-Guillaume, Maxime Chambreuil, Stéphane Bidoul (ACSONE), Launchpad Translations on behalf of report-print-send-core-editors, OCA Transbot, Lionel Sausin (Numérigraphe), Andrew Schrafel |
| WEBSITE | |
| WEBSITE | http://www.agilebg.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:07:16 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_calendar - base_status - base_setup - web_kanban - web - base_action_rule |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
cups |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Report to printer
-----------------
This module allows users to send reports to a printer attached to the server.
It adds an optional behaviour on reports to send it directly to a printer.
* `Send to Client` is the default behavious providing you a downloadable PDF
* `Send to Printer` prints the report on selected printer
Report behaviour is defined by settings.
Settings can be configured:
* globaly
* per user
* per report
* per user and report
* per company and report
* per user/company and report
After installing enable the "Printing / Print Operator" option under access
rights to give users the ability to view the print menu.
To show all available printers for your server, uses
`Settings/Configuration/Printing/Update Printers from CUPS` wizard.
Then goto the user profile and set the users printing action and default
printer.
Dependencies
------------
This module requires pycups
https://pypi.python.org/pypi/pycups
Contributors
------------
* Ferran Pegueroles <ferran@pegueroles.com>
* Albert Cervera i Areny <albert@nan-tic.com>
* Davide Corio <davide.corio@agilebg.com>
* Lorenzo Battistini <lorenzo.battistini@agilebg.com>
* Yannick Vaucher <yannick.vaucher@camptocamp.com>
* Lionel Sausin <ls@numerigraphe.com>
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
action_report_xml_form |
ir.actions.report.xml.printing | ir.actions.report.xml | page | Inherits base.act_report_xml_view |
printer_update_wizard |
printing.printer.update.wizard | printing.printer.update.wizard | form | New |
printing_report_xml_action_form |
printing.report.xml.action.form | printing.report.xml.action | form | New |
printing_report_xml_action_tree |
printing.report.xml.action.tree | printing.report.xml.action | tree | New |
view_printing_printer_form |
printing.printer.form | printing.printer | form | New |
view_printing_printer_tree |
printing.printer.tree | printing.printer | tree | New |
view_printing_users_form |
res.users.form.printing | res.users | page | Inherits base.view_users_form |
view_printing_users_prefs |
res.users.form.printing | res.users | footer | Inherits base.view_users_form_simple_modif |
No new fields.
Public methods (3)behaviour(self, cr, uid, ids, context=None)
print_direct(self, cr, uid, report_id, result, format, printer, context=None)
set_print_options(self, cr, uid, report_id, format, context=None)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (8)browse(self, cr, uid, ids, context=None)
get_default(self, cr, uid, context)
read(self, cr, uid, ids, fields=None, context=None, load='_classic_read')
search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False)
set_default(self, cr, uid, ids, context)
start_printer_update(self, cr, uid, context)
update(self, cr, uid, context=None)
update_printers_status(self, db_name, uid, context=None)
No new fields.
Public methods (2)action_cancel(self, cr, uid, ids, context=None)
action_ok(self, cr, uid, ids, context=None)
No new fields.
Public methods (1)behaviour(self, cr, uid, act_id, context=None)
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/report-print-send |
| GIT | |
| GIT | https://github.com/OCA/report-print-send.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/report-print-send/tree/6.1/base_report_to_printer |
| VERSION | |
| VERSION | 0.1 |
| CATEGORY | |
| CATEGORY | Generic Modules/Base |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Agile Business Group, Pegueroles SCP, NaN |
| MAINTAINERS | |
| MAINTAINERS | Agile Business Group, Pegueroles SCP, NaN |
| COMMITTERS | |
| COMMITTERS | Lorenzo Battistini, Launchpad Translations on behalf of report-print-send-core-editors |
| WEBSITE | |
| WEBSITE | http://www.agilebg.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:04:07 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_calendar - base_tools |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | Extracted from printjob ( http://apps.openerp.com/addon/1727 ), this module allows to send reports to a printer attached to the server. Settings can be configured globaly, per user, per report and per user and report. Configuration ============= .. image:: http://planet.domsense.com/wp-content/uploads/2011/09/printing-menu.png :width: 400 px First of all, you have to load CUPS printers in OpenERP. You can use a wizard that retrieves them automatically. You just have to click on Update Printers from CUPS and printers will appear within the available printers list. In the next step you will configure the reports to send to the printers. .. image:: http://planet.domsense.com/wp-content/uploads/2011/09/reports.png :width: 400 px Through the report form you can define the system’s behaviour while producing the report. .. image:: http://planet.domsense.com/wp-content/uploads/2011/09/report-configuration.png :width: 400 px You can set a global behaviour, or differentiate it according to the user who’s printing. In the example, the global behaviour defines to send the report to client directly (Send to Client), therefore without sending it to the printer. But if user elbati is printing, the report will be sent to the selected printer (Send to Printer). You can also define a default behaviour associated to the user, in order to establish whether a certain user, when not differently set, wants to send the reports always to a specific printer or not. After finishing the configuration, you will just have to click on printing button associated to the report (or launch the report by a wizard or whatever) and the system will automatically send the report to the previously set printer |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
action_report_xml_form |
ir.actions.report.xml.printing | ir.actions.report.xml | field | Inherits base.act_report_xml_view |
printer_update_wizard |
printing.printer.update.wizard | printing.printer.update.wizard | form | New |
printing_report_xml_action_form |
printing.report.xml.action.form | printing.report.xml.action | form | New |
printing_report_xml_action_tree |
printing.report.xml.action.tree | printing.report.xml.action | tree | New |
view_printing_printer_form |
printing.printer.form | printing.printer | form | New |
view_printing_printer_tree |
printing.printer.tree | printing.printer | tree | New |
view_printing_users_form |
res.users.form.printing | res.users | field | Inherits base.view_users_form |
No models found for this module.