init: Euro-Office Odoo 16.0 modules

Based on onlyoffice_odoo by Ascensio System SIA (ONLYOFFICE, LGPL-3).
Rebranded and adapted for Euro-Office by bring.out d.o.o.

Modules:
- eurooffice_odoo: base integration
- eurooffice_odoo_templates: document templates
- eurooffice_odoo_oca_dms: OCA DMS integration (replaces Enterprise documents)

All references renamed: onlyoffice -> eurooffice, ONLYOFFICE -> Euro-Office.
Original copyright notices preserved.
This commit is contained in:
Ernad Husremovic 2026-03-31 17:24:17 +02:00
commit b59a9dc6bb
347 changed files with 16699 additions and 0 deletions

View file

@ -0,0 +1,157 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_eurooffice_form" model="ir.ui.view">
<field name="name">eurooffice.odoo.templates.form</field>
<field name="model">eurooffice.odoo.templates</field>
<field name="arch" type="xml">
<form string="Create template">
<sheet>
<group string="Template creation">
<div class="text-muted" colspan="2"> Use this form to create a new fillable PDF template
for your Odoo modules. Start by entering a <span class="fw-bolder">name </span> for
your template to easily identify it later in the Euro-Office Templates list. </div>
<div class="text-muted" colspan="2"> Choose the <span class="fw-bolder">Odoo module </span>
(e.g., Employee, Invoice, Sales Order) that the template will be linked to. The chosen
model defines the data fields available for automatic form filling. </div>
<field name="name" required="1" />
<field
name="template_model_id"
options="{'no_create': True, 'no_create_edit':True, 'no_open':True}"
help="Model for which the template is being created."
required="1"
/>
<field name="template_model_related_name" invisible="1" />
<field name="template_model_model" invisible="1" />
<field name="hide_file_field" invisible="1" />
</group>
<group string="Template uploading" attrs="{'invisible': [('hide_file_field', '=', True)]}">
<div class="text-muted" colspan="2"> If you already have a <span class="fw-bolder">prepared
PDF file</span> with fillable fields, you can upload it here </div>
<field
name="file"
options="{'accepted_file_extensions': '.pdf', 'attachment': False}"
help="Select an existing template. Leave the field blank to create a blank template."
/>
</group>
<group>
<div colspan="2">
<div class="text-muted">
Once you've saved the template, return to the Euro-Office Templates list.
</div>
<div class="text-muted">
Locate your newly created template and set up the connections between the form
fields in the Euro-Office editor and the corresponding data fields from the selected
Odoo model.
</div>
</div>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_eurooffice_kanban_search" model="ir.ui.view">
<field name="name">eurooffice.odoo.templates.kanban.search</field>
<field name="model">eurooffice.odoo.templates</field>
<field name="arch" type="xml">
<search>
<field name="name" />
<field name="template_model_name" />
<group expand="0" string="Group By">
<filter string="Model" name="template_model_id" context="{'group_by': 'template_model_id'}" />
</group>
<searchpanel>
<field name="template_model_id" string="Model" enable_counters="1" />
</searchpanel>
</search>
</field>
</record>
<record id="view_eurooffice_kanban" model="ir.ui.view">
<field name="name">eurooffice.odoo.templates.kanban</field>
<field name="model">eurooffice.odoo.templates</field>
<field name="arch" type="xml">
<kanban js_class="eurooffice_kanban">
<field name="id" />
<field name="attachment_id" />
<field name="mimetype" />
<field name="create_uid" />
<field name="create_date" />
<field name="name" />
<field name="template_model_name" />
<field name="template_model_related_name" />
<field name="template_model_model" />
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_global_area o_kanban_attachment oe_kanban_global_click">
<div class="o_kanban_image">
<div class="o_kanban_image_wrapper">
<div class="o_image o_image_thumbnail" t-att-data-mimetype="record.mimetype.value" />
</div>
</div>
<div class="o_kanban_details">
<div class="o_kanban_details_wrapper">
<div class="o_kanban_record_title">
<field name="name" class="o_text_overflow" />
</div>
<div class="o_kanban_record_body">
<t t-if="template_model_related_name">
<field name="template_model_related_name" widget="badge" />
</t>
<t t-else="">
<field name="template_model_name" widget="badge" />
</t>
</div>
<div class="o_kanban_record_bottom">
<span class="oe_kanban_bottom_left">
<field name="create_date" widget="date" />
</span>
<div class="oe_kanban_bottom_right oe_eurooffice_kanban_bottom_right">
<field name="create_uid" widget="many2one_avatar_user" />
</div>
</div>
<div class="o_dropdown_kanban dropdown" tabindex="-1">
<a
class="dropdown-toggle o-no-caret btn"
data-bs-toggle="dropdown"
href="#"
role="button"
aria-label="Dropdown menu"
title="Dropdown menu"
>
<span class="fa fa-ellipsis-v" />
</a>
<div class="dropdown-menu" role="menu" aria-labelledby="dLabel">
<a t-if="widget.editable" type="edit" class="dropdown-item">Edit</a>
<a t-if="widget.deletable" type="delete" class="dropdown-item">Delete</a>
<a
t-attf-href="/web/content/ir.attachment/#{record.attachment_id.raw_value}/datas?download=true"
download=""
class="dropdown-item"
>Download</a>
</div>
</div>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record model="ir.actions.act_window" id="action_eurooffice_odoo_templates">
<field name="name">Euro-Office Templates</field>
<field name="res_model">eurooffice.odoo.templates</field>
<field name="view_mode">kanban,form</field>
</record>
<menuitem
id="eurooffice_menu"
name="Euro-Office Templates"
web_icon="eurooffice_odoo_templates,static/description/icon.svg"
sequence="30"
groups="eurooffice_odoo_templates.group_eurooffice_odoo_templates_user,eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin"
action="action_eurooffice_odoo_templates"
/>
</odoo>

View file

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- -->
<!-- (c) Copyright Ascensio System SIA 2024 -->
<!-- -->
<odoo>
<record id="action_eurooffice_demo_templates" model="ir.actions.act_window">
<field name="name">Manage Templates</field>
<field name="res_model">eurooffice.odoo.demo.templates</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<record id="view_eurooffice_demo_templates_form" model="ir.ui.view">
<field name="name">eurooffice.demo.templates.form</field>
<field name="model">eurooffice.odoo.demo.templates</field>
<field name="arch" type="xml">
<form>
<p>
Check templates you want to export to the Euro-Office Templates module and press Export. You can do this as many times as you need.
</p>
<field name="selected_templates" widget="eurooffice_template_tree" />
<footer>
<button name="action_save" string="Export" type="object" class="btn-primary" />
<button string="Cancel" special="cancel" class="btn-secondary" />
</footer>
</form>
</field>
</record>
<record id="res_config_settings_view_form" model="ir.ui.view">
<field name="name">res.config.settings.view.form.inherit.eurooffice_odoo_templates</field>
<field name="model">res.config.settings</field>
<field name="priority" eval="10" />
<field name="inherit_id" ref="base.res_config_settings_view_form" />
<field name="arch" type="xml">
<xpath expr="//div[hasclass('o_eurooffice_settings_common')]" position="after">
<div>
<h2>Euro-Office Templates</h2>
<div class="row mt16 o_settings_container">
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane" />
<div class="o_setting_right_pane">
<span class="o_form_label">
Templates gallery
</span>
<div class="text-muted">
Export templates to the Euro-Office Templates module
</div>
<div class="text-muted content-group mt16">
<button
type="action"
name="%(action_eurooffice_demo_templates)d"
string="Manage templates"
class="btn-link"
icon="fa-arrow-right"
/>
</div>
</div>
</div>
</div>
<div class="row mt16 o_settings_container">
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="editable_form_fields" />
</div>
<div class="o_setting_right_pane">
<label class="o_form_label" for="editable_form_fields">
Disable form fields after printing PDF form
</label>
<div class="text-muted">
Form fields cannot be filled in manually if they were not automatically filled in
with data from Odoo
</div>
</div>
</div>
</div>
</div>
</xpath>
</field>
</record>
</odoo>