huyen_dev #2

Closed
huyennx wants to merge 15 commits from huyen_dev into dev
63 changed files with 2933 additions and 6 deletions

View File

@ -3,8 +3,7 @@
[![Help](https://img.shields.io/badge/master-help-875A7B.svg?style=flat&colorA=8F8F8F)](https://www.odoo.com/forum/help-1)
[![Nightly Builds](https://img.shields.io/badge/master-nightly-875A7B.svg?style=flat&colorA=8F8F8F)](https://nightly.odoo.com/)
Odoo
----
## Odoo
Odoo is a suite of web based open source business apps.
@ -23,10 +22,10 @@ The main Odoo Apps include an <a href="https://www.odoo.com/page/crm">Open Sourc
Odoo Apps can be used as stand-alone applications, but they also integrate seamlessly so you get
a full-featured <a href="https://www.odoo.com">Open Source ERP</a> when you install several Apps.
Getting started with Odoo
-------------------------
## Getting started with Odoo
For a standard installation please follow the <a href="https://www.odoo.com/documentation/master/administration/install/install.html">Setup instructions</a>
from the documentation.
To learn the software, we recommend the <a href="https://www.odoo.com/slides">Odoo eLearning</a>, or <a href="https://www.odoo.com/page/scale-up-business-game">Scale-up</a>, the <a href="https://www.odoo.com/page/scale-up-business-game">business game</a>. Developers can start with <a href="https://www.odoo.com/documentation/master/developer/howtos.html">the developer tutorials</a>
<a>huyendev</a>

View File

@ -37,6 +37,7 @@ class HrEmployeePrivate(models.Model):
# resource and user
# required on the resource, make sure required="True" set in the view
name = fields.Char(string="Employee Name", related='resource_id.name', store=True, readonly=False, tracking=True)
english_name = fields.Char(string="English Name")
user_id = fields.Many2one(
'res.users', 'User',
related='resource_id.user_id',

View File

@ -99,6 +99,7 @@
<field name="company_country_code" invisible="1"/>
</group>
<group>
<field name="english_name"/>
<field name="department_id"/>
<field name="job_id" context="{'default_no_of_recruitment': 0, 'default_is_favorite': False}" placeholder="e.g. Sales Manager"/>
<field name="parent_id" widget="many2one_avatar_user"/>

View File

@ -78,6 +78,12 @@ class Contract(models.Model):
help='Person responsible for validating the employee\'s contracts.', domain=_get_hr_responsible_domain)
calendar_mismatch = fields.Boolean(compute='_compute_calendar_mismatch', compute_sudo=True)
first_contract_date = fields.Date(related='employee_id.first_contract_date')
department_of_justice = fields.Char(string="Department of Justice", required=True)
internship_start_date = fields.Date(string="Internship Start Date")
internship_end_date = fields.Date(string="Internship End Date")
probation_start_date = fields.Date(string="Probation Start Date")
probation_end_date = fields.Date(string="Probation End Date")
department_of_labor = fields.Char(string="Department of Labor", required=True)
@api.depends('employee_id.resource_calendar_id', 'resource_calendar_id')
def _compute_calendar_mismatch(self):

View File

@ -91,6 +91,7 @@ class Project(models.Model):
currency_id = fields.Many2one('res.currency', compute="_compute_currency_id", string="Currency", readonly=True, export_string_translation=False)
analytic_account_balance = fields.Monetary(related="account_id.balance")
account_id = fields.Many2one('account.analytic.account', copy=False, domain="['|', ('company_id', '=', False), ('company_id', '=?', company_id)]", ondelete='set null')
productive_status = fields.Selection([('productive','Productive'), ('non-productive', 'Non-productive')], default="productive", string="Product Status", required=True)
favorite_user_ids = fields.Many2many(
'res.users', 'project_favorite_user_rel', 'project_id', 'user_id',

View File

@ -304,6 +304,9 @@ class Task(models.Model):
)
link_preview_name = fields.Char(compute='_compute_link_preview_name', export_string_translation=False)
# Non-chargeable or Chargeable
is_chargeable = fields.Boolean(string='Chargable', default=False)
_sql_constraints = [
('recurring_task_has_no_parent', 'CHECK (NOT (recurring_task IS TRUE AND parent_id IS NOT NULL))', "A subtask cannot be recurrent."),
('private_task_has_no_parent', 'CHECK (NOT (project_id IS NULL AND parent_id IS NOT NULL))', "A private task cannot have a parent."),

View File

@ -85,6 +85,7 @@
<page name="settings" string="Settings">
<group>
<group>
<field name="productive_status" widget="radio"/>
<field name="privacy_visibility" widget="radio"/>
<span colspan="2" class="text-muted o_row ps-1" invisible="access_instruction_message == ''">
<i class="fa fa-lightbulb-o"/>&amp;nbsp;<field class="d-inline" name="access_instruction_message" nolabel="1"/>

View File

@ -460,6 +460,8 @@
</div>
<!-- Field needed to trigger its compute in project_enterprise, but will be replaced in an override defined in hr_timesheet module -->
<field name="allocated_hours" invisible="1"/>
<!-- Field Chargeable / Non Chargeable -->
<field name="is_chargeable" string="Chargeable"/>
</group>
</group>
<field name="task_properties" columns="2"/>
@ -665,6 +667,7 @@
<field name="has_late_and_unreached_milestone" />
<field name="allow_milestones" />
<field name="state" />
<!-- <field name="is_chargeable"/> -->
<field name="subtask_count"/>
<progressbar field="state" colors='{"1_done": "success-done", "1_canceled": "danger", "03_approved": "success", "02_changes_requested": "warning", "04_waiting_normal": "info", "01_in_progress": "200" }'/>
<templates>
@ -681,10 +684,14 @@
<div class="text-muted d-flex flex-column">
<field t-if="record.parent_id.raw_value" invisible="context.get('default_parent_id', False)" name="parent_id"/>
<field invisible="context.get('default_project_id', False)" name="project_id" options="{'no_open': True}"/>
<field name="partner_id"/>
<field name="partner_id"/>
<field t-if="record.allow_milestones.raw_value and record.milestone_id.raw_value" t-att-class="record.has_late_and_unreached_milestone.raw_value and !record.state.raw_value.startsWith('1_') ? 'text-danger' : ''" name="milestone_id" options="{'no_open': True}"/>
</div>
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}"/>
<!-- show is_chargeable in mode kanban -->
<!-- <div t-if="record.is_chargeable.raw_value">
<span>Chargeable</span>
</div> -->
<field t-if="record.date_deadline.raw_value" invisible="state in ['1_done', '1_canceled']" name="date_deadline" widget="remaining_days"/>
<field name="task_properties" widget="properties"/>
<field name="displayed_image_id" widget="attachment_image"/>
@ -753,6 +760,8 @@
<field name="company_id" column_invisible="True"/>
<field name="date_deadline" optional="hide" widget="remaining_days" invisible="state in ['1_done', '1_canceled']"/>
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}" optional="show" context="{'project_id': project_id}"/>
<!-- show is_chargeable in mode list -->
<!-- <field name="is_chargeable" optional="show"/> -->
<field name="date_last_stage_update" optional="hide"/>
<field name="stage_id" column_invisible="context.get('set_visible', False)" optional="show"/>
</list>
@ -825,6 +834,8 @@
<field name="partner_id" invisible="not partner_id"/>
<field name="priority" widget="priority"/>
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}" invisible="not tag_ids"/>
<!-- show is_chargeable in mode calendar -->
<!-- <field name="is_chargeable" invisible="not is_chargeable"/> -->
<field name="stage_id" invisible="not project_id or not stage_id" widget="task_stage_with_state_selection"/>
<field name="personal_stage_id" string="Personal Stage" options="{'no_open': True}" invisible="project_id or not personal_stage_id"/>
<field name="task_properties" invisible="not task_properties"/>

View File

@ -0,0 +1,14 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import wizard
from . import models
def pre_init_check(cr):
from odoo.service import common
from odoo.exceptions import ValidationError
version_info = common.exp_version()
server_serie =version_info.get('server_serie')
if server_serie!='18.0':raise ValidationError('Module support Odoo series 18.0. Your Odoo series is {}.'.format(server_serie))
return True
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,720 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
{
"name": 'Dynamic Doc and Pdf Reports',
"author": 'OMAX Informatics',
"version": '1.0',
"website": 'https://www.omaxinformatics.com',
"category": 'Extra Tools,Productivity,Sales,Purchases,Accounting',
'description': """
Odoo app to design your own doc template and export the same to print the doc or pdf report.
""",
"depends": ['base', 'hr_contract'],
"external_dependencies": {
'python': [],
},
"data": [
'security/ir.model.access.csv',
'security/dynamic_docx_pdf_report_security.xml',
'wizard/docx_template_wiz.xml',
'views/docx_template.xml',
'views/hr_contract_views.xml',
],
"demo": [],
"test": [],
"images": ['static/description/banner.png',],
"assets": {
},
"license": 'OPL-1',
"currency": 'EUR',
"price": 80,
"installable": True,
"auto_install": False,
"application": True,
"pre_init_hook": 'pre_init_check',
"live_test_url": 'https://youtu.be/gaY95WFdbL0',
"module_type": 'official', # required bcz some time facing warning
'summary': """
Odoo app to design your own doc template and export the same to print the doc or pdf report.
Design own doc template,Design own PDF template,
Create many doc report for same model,
Create many pdf report for same model,
Dynamic doc reports,
Dynamic pdf reports,
Dynamic doc downloads,
Dynamic pdf downloads,
Design doc template for a report,
Design Pdf template for a report,
Print dynamic doc report,
Print dynamic pdf report,
Print doc for any odoo model,
Print pdf for any odoo model,
Print doc for any odoo object,
Print pdf for any odoo object,
App to print dynamic doc report,
App to print dynamic pdf report,
App to configure your own doc template,
App to configure your own PDF template
Design and print doc,
Design and print pdf,
Design template for any model,
Print doc for any model,
Print pdf for any model,
Design doc for any object,
Print doc for any object,
Print pdf for any object,
doc print, pdf print, doc print based on user,pdf print based on user,
Create Doc template, Doc template design,Create Pdf template, PDf template design,
Odoo app to downlaod Doc report, Odoo app to downlaod PDF report,
Odoo app to design Doc template,Odoo app to design Pdf template, Print report Doc,Print report Pdf,
Configure template and print PDF,Configure template and print Doc, configure doc and print,configure pdf and print, Dynamic report doc,Dynamic report pdf, Dynamic report,
configure report, design report, design Doc,design Pdf, configure Doc, configure PDf,dynamic report odoo, Dynamic, Doc,PDf, report,
Preprinted report, dynamic preprinted report,
Dynamic PDF report, Dynamic PDF reports, Design PDF reports, Print dynamic PDF reports, PDF reports, PDF, Configure PDF template,
doc to pdf,print doc to pdf, download doc to pdf, Dynamic Sale order report, Dynamic Purchase order report, Dynamic Invoice report,
Dynamic Inventory report, Dynamic Sale order pdf, Dynamic purchase order pdf, Dynamic Invoice pdf,Dynamic Inventory pdf,
microsoft, microsoft word, libreoffice, libreoffice writer
French
-------
L'application Odoo pour concevoir votre propre modèle de document et l'exporter pour imprimer le document ou le rapport pdf.
Créez votre propre modèle de document, créez votre propre modèle de PDF,
Créer plusieurs rapports doc pour un même modèle,
Créer plusieurs rapports PDF pour le même modèle,
Rapports doc dynamiques,
Rapports pdf dynamiques,
Téléchargements dynamiques de documents,
Téléchargements dynamiques de pdf,
Concevoir un modèle de rapport doc,
Concevoir un modèle Pdf pour un rapport,
Imprimer un rapport doc dynamique,
Imprimer un rapport pdf dynamique,
Imprimer un document pour n'importe quel modèle odoo,
Imprimer un pdf pour n'importe quel modèle odoo,
Imprimer un document pour n'importe quel objet odoo,
Imprimer un pdf pour n'importe quel objet odoo,
Application pour l'impression d'un rapport pdf dynamique,
Application pour imprimer un rapport pdf dynamique,
Application pour configurer votre propre modèle de document,
App pour configurer votre propre modèle de document, App pour configurer votre propre modèle de PDF
Concevoir et imprimer des doc,
Concevoir et imprimer un pdf,
Concevoir un modèle pour n'importe quel modèle,
Imprimer un document pour n'importe quel modèle,
Imprimer un pdf pour n'importe quel modèle,
Conception d'un document pour n'importe quel objet,
Imprimez le document pour n'importe quel objet,
Imprimer le pdf pour n'importe quel objet,
Impression doc, impression pdf, impression doc en fonction de l'utilisateur, impression pdf en fonction de l'utilisateur,
Créer un modèle Doc, Conception d'un modèle Doc, Créer un modèle Pdf, Conception d'un modèle PDf,
Odoo app to downlaod Doc report, Odoo app to downlaod PDF report, Odoo app to downlaod Doc report, Odoo app to downlaod PDF report,
Odoo app to design Doc template,Odoo app to design Pdf template, Print report Doc,Print report Pdf,
Configurer le modèle et imprimer le PDF, Configurer le modèle et imprimer le Doc, Configurer le doc et imprimer, Configurer le pdf et imprimer, Rapport dynamique doc, Rapport dynamique pdf, Rapport dynamique,
configurer rapport, concevoir rapport, concevoir Doc, concevoir Pdf, configurer Doc, configurer PDf, rapport dynamique odoo, Dynamique, Doc, PDf, rapport,
Rapport préimprimé, rapport préimprimé dynamique,
Rapport PDF dynamique, Rapports PDF dynamiques, Concevoir des rapports PDF, Imprimer des rapports PDF dynamiques, Rapports PDF, PDF, Configurer un modèle PDF,
Rapport dynamique de commande de vente, Rapport dynamique de commande d'achat, Rapport dynamique de facture,
Rapport d'inventaire dynamique, Bon de vente dynamique pdf, Bon d'achat dynamique pdf, Facture dynamique pdf, Inventaire dynamique pdf,
Spanish
-------
Odoo aplicación para diseñar su propia plantilla doc y exportar el mismo para imprimir el informe doc o pdf.
Diseñe su propia plantilla doc, Diseñe su propia plantilla PDF,
Crear muchos informes doc para el mismo modelo,
Crear muchos informes pdf para el mismo modelo,
Informes de documentos dinámicos,
Informes pdf dinámicos,
Descargas de documentos dinámicos,
Descargas pdf dinámicas,
Diseñar plantilla doc para un informe,
Diseñar plantilla Pdf para un informe,
Imprimir informe doc dinámico,
Imprimir informe pdf dinámico,
Imprimir doc para cualquier modelo de odoo,
Imprimir pdf para cualquier modelo de odoo,
Imprimir doc para cualquier objeto odoo,
Imprimir pdf para cualquier objeto odoo,
App para imprimir informe doc dinámico,
App para imprimir informe pdf dinámico,
App para configurar su propia plantilla doc,
Aplicación para configurar su propia plantilla PDF
Diseñar e imprimir doc,
Diseñar e imprimir pdf,
Diseñar plantilla para cualquier modelo,
Imprimir doc para cualquier modelo,
Imprimir pdf para cualquier modelo,
Diseñar doc para cualquier objeto,
Imprimir doc para cualquier objeto,
Imprimir pdf para cualquier objeto,
Imprimir doc, Imprimir pdf, Imprimir doc según usuario, Imprimir pdf según usuario,
Crear Doc plantilla, Doc diseño de la plantilla,Crear Pdf plantilla, PDf diseño de la plantilla,
Odoo app to downlaod Doc report, Odoo app to downlaod PDF report,
Odoo app to design Doc template,Odoo app to design Pdf template, Imprimir informe Doc,Imprimir informe Pdf,
Configurar plantilla e imprimir PDF,Configurar plantilla e imprimir Doc, configurar doc e imprimir,configurar pdf e imprimir, Informe dinámico doc,Informe dinámico pdf, Informe dinámico,
configurar informe, diseñar informe, diseñar Doc,diseñar Pdf, configurar Doc, configurar PDf,informe dinámico odoo, Dinámico, Doc,PDf, informe,
informe preimpreso, informe preimpreso dinámico,
informe PDF dinámico, informes PDF dinámicos, diseñar informes PDF, imprimir informes PDF dinámicos, informes PDF, PDF, configurar plantilla PDF,
doc to pdf,imprimir doc to pdf, descargar doc to pdf, Informe dinámico de pedido de venta, Informe dinámico de pedido de compra, Informe dinámico de factura,
Informe dinámico de inventario, Informe dinámico de pedido de venta, Informe dinámico de pedido de compra, Informe dinámico de factura, Informe dinámico de inventario,
Chinese
-------
Odoo应用程序可以设计自己的文档模板并导出相同的打印文档或PDF报告
设计自己的文档模板设计自己的PDF模板
为同一模型创建许多文档报告
为同一模型创建许多pdf报告
动态文档报告
动态pdf报告
动态文档下载
动态pdf下载
设计报告的doc模板
为报告设计Pdf模板
打印动态文档报告
打印动态pdf报告
为任何odoo模型打印doc
为任何odoo模型打印pdf
为任何odoo对象打印文档
为任何odoo对象打印pdf
打印动态文档报告的应用程序
打印动态pdf报告的应用程序
应用来配置你自己的文档模板
应用程序配置您自己的PDF模板
设计和打印文档
设计和打印pdf
为任何模型设计模板
为任何模型打印文档
为任何模型打印pdf
为任何物体设计文档
为任何对象打印文档
为任何对象打印pdf
文档打印pdf打印基于用户的文档打印基于用户的pdf打印
创建Doc模板Doc模板设计创建Pdf模板PDf模板设计
Odoo应用下载Doc报告Odoo应用下载PDF报告
Odoo应用程序设计Doc模板Odoo应用程序设计Pdf模板打印Doc报告打印Pdf报告
配置模板并打印PDF配置模板并打印Doc配置Doc并打印配置PDF并打印动态报告DOC动态报告PDF动态报告
配置报告设计报告设计Doc设计Pdf配置Doc配置PDf动态报告odoo动态DocPDf报告
预印报告动态预印报告
动态PDF报告动态PDF报告设计PDF报告打印动态PDF报告PDF报告PDF配置PDF模板
doc转pdf打印doc转pdf下载doc转pdf动态销售订单报告动态采购订单报告动态发票报告
动态库存报告动态销售订单pdf动态采购订单pdf动态发票pdf动态库存pdf
Dutch
-----
Odoo-app om je eigen documentsjabloon te ontwerpen en hetzelfde te exporteren om het doc- of pdf-rapport af te drukken.
Ontwerp je eigen doc sjabloon,Ontwerp je eigen PDF sjabloon,
Maak veel documentrapporten voor hetzelfde model,
Maak veel pdf-rapporten voor hetzelfde model,
Dynamische doc rapporten,
Dynamische pdf-rapporten,
Dynamische doc downloads,
Dynamische pdf downloads,
Ontwerp doc sjabloon voor een rapport,
Ontwerp pdf-sjabloon voor een rapport,
Dynamisch doc rapport afdrukken,
Dynamisch pdf rapport afdrukken,
Doc afdrukken voor elk odoo-model,
Print pdf voor elk odoo model,
Doc afdrukken voor elk odoo object,
Print pdf voor elk odoo object,
App om dynamisch doc rapport af te drukken,
App om dynamisch pdf rapport af te drukken,
App om je eigen doc template te configureren,
App om je eigen pdf sjabloon te configureren
Ontwerp en print doc,
Ontwerp en print pdf,
Ontwerp sjabloon voor elk model,
Doc afdrukken voor elk model,
PDF afdrukken voor elk model,
Ontwerpdocument voor elk object,
Doc afdrukken voor elk object,
pdf afdrukken voor elk object,
doc afdrukken, pdf afdrukken, doc afdrukken op basis van gebruiker, pdf afdrukken op basis van gebruiker,
Doc sjabloon maken, Doc sjabloon ontwerpen, Pdf sjabloon maken, PDf sjabloon ontwerpen,
Odoo-app om Doc-rapport te downloaden, Odoo-app om PDF-rapport te downloaden,
Odoo app to design Doc template,Odoo app to design Pdf template, Print report Doc,Print report Pdf,
Configureer sjabloon en print PDF,Configureer sjabloon en print Doc,Configureer doc en print,Configureer pdf en print,Dynamisch rapport doc,Dynamisch rapport pdf,Dynamisch rapport,
rapport configureren, rapport ontwerpen, Doc ontwerpen, Pdf ontwerpen, Doc configureren, PDf configureren, dynamisch rapport odoo, Dynamisch, Doc, PDf, rapport configureren,
Voorgedrukt rapport, dynamisch voorgedrukt rapport,
Dynamisch PDF-rapport, dynamische PDF-rapporten, ontwerp PDF-rapporten, dynamische PDF-rapporten afdrukken, PDF-rapporten, PDF-sjabloon configureren,
doc to pdf,doc to pdf afdrukken, doc to pdf downloaden, Dynamisch verkooporderrapport, Dynamisch inkooporderrapport, Dynamisch factuurrapport,
Dynamisch voorraadrapport, Dynamische verkooporder pdf, Dynamische inkooporder pdf, Dynamische factuur pdf, Dynamische voorraad pdf,
German
------
Odoo-App zum Entwerfen Ihrer eigenen Dokumentvorlage und zum Exportieren derselben, um den Dokument- oder PDF-Bericht zu drucken.
Eigene Dokumentvorlage entwerfen, eigene PDF-Vorlage entwerfen,
Erstellen Sie viele Dokumentationsberichte für dasselbe Modell,
Erstellen Sie viele PDF-Berichte für dasselbe Modell,
Dynamische Doku-Berichte,
Dynamische PDF-Berichte,
Dynamische doc-Downloads,
Dynamische pdf-Downloads,
Entwurf einer doc-Vorlage für einen Bericht,
Pdf-Vorlage für einen Bericht entwerfen,
Dynamischen doc-Bericht drucken,
Dynamischen pdf-Bericht drucken,
Druck doc für jedes odoo Modell,
Drucke pdf für jedes odoo Modell,
Drucke doc für jedes odoo Objekt,
Drucke pdf für jedes Odoo-Objekt,
App zum Drucken von dynamischen doc-Berichten,
App zum Drucken eines dynamischen pdf-Berichts,
App zum Konfigurieren Ihrer eigenen Dokumentvorlage,
App zum Konfigurieren Ihrer eigenen PDF-Vorlage
Dokument entwerfen und drucken,
PDF entwerfen und drucken,
Designvorlage für jedes Modell,
Dokument für beliebiges Modell drucken,
PDF für beliebiges Modell drucken,
Entwurfsvorlage für beliebiges Objekt,
Druckvorlage für beliebiges Objekt,
PDF für beliebiges Objekt drucken,
doc print, pdf print, doc print based on user, pdf print based on user,
Doc-Vorlage erstellen, Doc-Vorlage entwerfen, Pdf-Vorlage erstellen, PDf-Vorlage entwerfen,
Odoo-App zum Herunterladen von Doc-Berichten, Odoo-App zum Herunterladen von PDF-Berichten,
Odoo app to design Doc template,Odoo app to design Pdf template, Print report Doc,Print report Pdf,
Vorlage konfigurieren und PDF drucken, Vorlage konfigurieren und Doc drucken, Doc konfigurieren und drucken, PDF konfigurieren und drucken, Dynamischer Bericht doc, Dynamischer Bericht pdf, Dynamischer Bericht,
Bericht konfigurieren, Bericht entwerfen, Doc entwerfen, Pdf entwerfen, Doc konfigurieren, PDf konfigurieren, Dynamischer Bericht odoo, Dynamisch, Doc, PDf, Bericht,
Vorgedruckter Bericht, dynamischer vorgedruckter Bericht,
Dynamischer PDF-Bericht, Dynamische PDF-Berichte, PDF-Berichte gestalten, Dynamische PDF-Berichte drucken, PDF-Berichte, PDF, PDF-Vorlage konfigurieren,
doc to pdf, doc to pdf drucken, doc to pdf herunterladen, Dynamischer Verkaufsauftragsbericht, Dynamischer Bestellungsbericht, Dynamischer Rechnungsbericht,
Dynamischer Lagerbestandsbericht, Dynamischer Verkaufsauftrag pdf, Dynamischer Einkaufsauftrag pdf, Dynamische Rechnung pdf, Dynamischer Lagerbestand pdf,
Indonesian
----------
Aplikasi Odoo untuk mendesain template dokumen Anda sendiri dan mengekspor yang sama untuk mencetak laporan dokumen atau pdf.
Rancang templat dokumen sendiri, Rancang templat PDF sendiri,
Buat banyak laporan dokumen untuk model yang sama,
Buat banyak laporan pdf untuk model yang sama,
Laporan dokumen dinamis,
Laporan pdf dinamis,
Unduhan dokumen dinamis,
Unduhan pdf dinamis,
Desain template dokumen untuk sebuah laporan,
Desain template Pdf untuk sebuah laporan,
Cetak laporan dokumen dinamis,
Cetak laporan pdf dinamis,
Cetak dokumen untuk model odoo apa pun,
Cetak pdf untuk model odoo apa pun,
Cetak dokumen untuk objek odoo apa pun,
Cetak pdf untuk objek odoo apa pun,
Aplikasi untuk mencetak laporan dokumen dinamis,
Aplikasi untuk mencetak laporan pdf dinamis,
Aplikasi untuk mengonfigurasi templat dokumen Anda sendiri,
Aplikasi untuk mengonfigurasi template PDF Anda sendiri
Desain dan cetak dokumen,
Desain dan cetak pdf,
Templat desain untuk model apa pun,
Cetak dokumen untuk model apa pun,
Cetak pdf untuk model apa pun,
Desain dokumen untuk objek apa pun,
Cetak dokumen untuk objek apa pun,
Cetak pdf untuk objek apa pun,
cetak dokumen, cetak pdf, cetak dokumen berdasarkan pengguna, cetak pdf berdasarkan pengguna,
Buat template Doc, desain template Doc, Buat template Pdf, desain template PDf,
Aplikasi Odoo untuk mengunduh laporan Doc, aplikasi Odoo untuk mengunduh laporan PDF,
Aplikasi Odoo untuk mendesain template Doc, aplikasi Odoo untuk mendesain template Pdf, Cetak laporan Doc, Cetak laporan Pdf,
Konfigurasikan templat dan cetak PDF, Konfigurasikan templat dan cetak Doc, konfigurasikan doc dan cetak, konfigurasikan pdf dan cetak, Dokumen laporan dinamis, Laporan dinamis pdf, Laporan dinamis,
konfigurasikan laporan, desain laporan, desain Doc, desain Pdf, konfigurasikan Doc, konfigurasikan PDf, laporan dinamis odoo, Dinamis, Doc, PDf, laporan,
Laporan pracetak, laporan pracetak dinamis,
Laporan PDF dinamis, Laporan PDF dinamis, Desain laporan PDF, Cetak laporan PDF dinamis, Laporan PDF, PDF, Konfigurasikan templat PDF,
doc ke pdf, cetak doc ke pdf, unduh doc ke pdf, Laporan pesanan Penjualan Dinamis, Laporan pesanan Pembelian Dinamis, Laporan Faktur Dinamis,
Laporan Persediaan Dinamis, pdf pesanan Penjualan Dinamis, pdf pesanan pembelian dinamis, pdf Faktur Dinamis, pdf Persediaan Dinamis,
Italy
------
Un'applicazione di Odoo per progettare il proprio modello di documento ed esportarlo per stampare il documento o il rapporto pdf.
Progettare il proprio modello di documento, progettare il proprio modello di PDF,
Creare molti documenti per lo stesso modello,
Creare molti rapporti pdf per lo stesso modello,
Rapporti dinamici su documenti,
Rapporti pdf dinamici,
Download dinamici di documenti,
Download dinamici di pdf,
Progettare un modello di documento per un rapporto,
Progettare un modello Pdf per un rapporto,
Stampa di rapporti dinamici in formato doc,
Stampa di un rapporto pdf dinamico,
Stampa doc per qualsiasi modello di odoo,
Stampa pdf per qualsiasi modello di odoo,
Stampa doc per qualsiasi oggetto odoo,
Stampa pdf per qualsiasi oggetto odoo,
App per stampare report di documenti dinamici,
App per stampare rapporti dinamici in pdf,
App per configurare il proprio modello di documento,
App per configurare il proprio modello PDF
Progettazione e stampa di documenti,
Progettare e stampare pdf,
Modello di progettazione per qualsiasi modello,
Stampa doc per qualsiasi modello,
Stampa pdf per qualsiasi modello,
Documento di progettazione per qualsiasi oggetto,
Stampa doc per qualsiasi oggetto,
Stampa pdf per qualsiasi oggetto,
stampa doc, stampa pdf, stampa doc in base all'utente, stampa pdf in base all'utente,
Creare modello Doc, progettare modello Doc, creare modello Pdf, progettare modello PDf,
Applicazione Odoo per scaricare il rapporto Doc, Applicazione Odoo per scaricare il rapporto PDF,
Progettazione di un modello Doc, progettazione di un modello Pdf, Stampa di un rapporto Doc, Stampa di un rapporto Pdf,
Configura modello e stampa PDF, Configura modello e stampa Doc, configura doc e stampa, configura pdf e stampa, Report dinamico doc, Report dinamico pdf, Report dinamico,
configurare report, progettare report, progettare Doc, progettare Pdf, configurare Doc, configurare PDf, report dinamico odoo, Dynamic, Doc, PDf, report,
Rapporto prestampato, rapporto prestampato dinamico,
Rapporto dinamico PDF, rapporti dinamici PDF, progettare rapporti PDF, stampare rapporti dinamici PDF, rapporti PDF, PDF, configurare modello PDF,
doc to pdf, stampare doc to pdf, scaricare doc to pdf, report dinamico dell'ordine di vendita, report dinamico dell'ordine di acquisto, report dinamico della fattura,
Rapporto sull'inventario dinamico, Rapporto sull'ordine di vendita dinamico, Rapporto sull'ordine di acquisto dinamico, Rapporto sulla fattura dinamica, Rapporto sull'inventario dinamico,
Korean
------
Odoo 앱을 사용하여 자신 만의 문서 템플릿을 디자인하고 동일한 템플릿을 내보내 문서 또는 pdf 보고서를 인쇄하십시오.
나만의 문서 템플릿을 디자인하고, 나만의 PDF 템플릿을 디자인하세요,
동일한 모델에 대해 많은 문서 보고서를 만듭니다,
동일한 모델에 대해 많은 PDF 보고서를 만듭니다,
동적 문서 보고서,
동적 PDF 보고서,
동적 문서 다운로드,
동적 PDF 다운로드,
보고서 문서 템플릿 디자인,
보고서용 PDF 템플릿 디자인,
동적 문서 보고서 인쇄,
동적 PDF 보고서 인쇄,
모든 odoo 모델에 대한 문서 인쇄,
모든 odoo 모델에 대한 pdf 인쇄,
모든 odoo 개체에 대한 문서 인쇄,
모든 odoo 개체에 대한 pdf 인쇄,
동적 문서 보고서를 인쇄하는 ,
동적 PDF 보고서를 인쇄하는 ,
나만의 문서 템플릿을 구성하는 ,
나만의 PDF 템플릿을 구성하는
문서 디자인 인쇄,
PDF 디자인 인쇄,
모든 모델용 템플릿 디자인,
모든 모델용 문서 인쇄,
모든 모델에 대한 PDF 인쇄,
모든 개체에 대한 문서 디자인,
모든 개체에 대한 문서 인쇄,
모든 개체에 대한 pdf 인쇄,
문서 인쇄, pdf 인쇄, 사용자 기반 문서 인쇄, 사용자 기반 pdf 인쇄,
문서 템플릿 만들기, 문서 템플릿 디자인, PDF 템플릿 만들기, PDf 템플릿 디자인,
문서 보고서를 다운로드하는 Odoo , PDF 보고서를 다운로드하는 Odoo ,
문서 템플릿을 디자인하는 Odoo , PDF 템플릿을 디자인하는 Odoo , 보고서 문서 인쇄, 보고서 PDF 인쇄,
템플릿 구성 PDF 인쇄, 템플릿 구성 인쇄 문서, 문서 구성 인쇄, PDF 구성 인쇄, 동적 보고서 문서, 동적 보고서 pdf, 동적 보고서,
보고서 구성, 디자인 보고서, 디자인 문서, 디자인 PDF, 문서 구성, PDf 구성, 동적 보고서 오두, 동적, 문서, PDf, 보고서,
미리 인쇄된 보고서, 동적 미리 인쇄된 보고서,
동적 PDF 보고서, 동적 PDF 보고서, 동적 PDF 보고서 디자인, 동적 PDF 보고서 인쇄, PDF 보고서, PDF, PDF 템플릿 구성,
문서를 PDF로, 문서를 PDF로 인쇄, 문서를 PDF로 다운로드, 동적 판매 주문 보고서, 동적 구매 주문 보고서, 동적 송장 보고서,
동적 재고 보고서, 동적 판매 주문 pdf, 동적 구매 주문 pdf, 동적 송장 pdf, 동적 인보이스 pdf, 동적 재고 pdf,
Japanese
--------
Odooアプリは独自のドキュメントテンプレートをデザインしドキュメントやPDFレポートを印刷するために同じものをエクスポートします
独自のドキュメントテンプレート独自のPDFテンプレートをデザインします
同じモデルのドキュメントレポートを多数作成
同じモデルのPDFレポートを多数作成
ダイナミックなdocレポート
動的pdfレポート
動的docダウンロード
動的pdfダウンロード
報告書のdocテンプレートをデザインする
報告書のPDFテンプレートをデザインする
動的docレポートの印刷
ダイナミックpdfレポートの印刷
あらゆるODOOモデルのドキュメントを印刷
あらゆるodooモデルにpdfを印刷
あらゆるodooオブジェクトにドキュメントを印刷
あらゆるodooオブジェクトのpdfを印刷
ダイナミックドキュメントレポートを印刷するアプリ
ダイナミックpdfレポート印刷アプリ
独自のdocテンプレートを設定するアプリ
独自のPDFテンプレートを設定するアプリ
ドキュメントをデザインして印刷する
PDFをデザインして印刷する
どんなモデルにも対応するデザインテンプレート
あらゆるモデルのドキュメントを印刷
どんなモデルにもpdfを印刷
あらゆるオブジェクトのデザインドキュメント
どんなオブジェクトにもドキュメントを印刷
どんなオブジェクトにもpdfを印刷します
doc print, pdf print, doc print based on user, pdf print based on user
Docテンプレートの作成DocテンプレートのデザインPdfテンプレートの作成PDfテンプレートのデザイン
OdooアプリでDocレポートをダウンロード, OdooアプリでPDFレポートをダウンロード
OdooアプリでDocテンプレートをデザイン,OdooアプリでPdfテンプレートをデザイン, Docレポートを印刷,Pdfレポートを印刷
テンプレートを設定してPDFを印刷,テンプレートを設定してDocを印刷,Docを設定して印刷,PDFを設定して印刷,ダイナミックレポートDoc,ダイナミックレポートPDF,ダイナミックレポート
設定レポートデザインレポートデザインDocデザインPdf設定Doc設定PDfダイナミックレポートodooダイナミックDocPDfレポート
プレプリントレポート, ダイナミックプレプリントレポート
ダイナミックPDFレポート, ダイナミックPDFレポート, PDFレポートのデザイン, ダイナミックPDFレポートの印刷, PDFレポート, PDF, PDFテンプレートの設定
動的販売注文レポート動的購買注文レポート動的請求書レポート
ダイナミック在庫レポートダイナミック販売注文PDFダイナミック購入注文PDFダイナミック請求書PDFダイナミック在庫PDF
Portugese
--------
Aplicação Odoo para conceber o seu próprio modelo de documento e exportá-lo para imprimir o documento ou o relatório em PDF.
Conceber o seu próprio modelo de documento, conceber o seu próprio modelo de PDF,
Criar vários relatórios de documentos para o mesmo modelo,
Criar muitos relatórios PDF para o mesmo modelo,
Relatórios dinâmicos de documentos,
Relatórios PDF dinâmicos,
Transferências dinâmicas de documentos,
Transferências dinâmicas de pdf,
Conceber um modelo de documento para um relatório,
Conceber um modelo de PDF para um relatório,
Imprimir relatório dinâmico de documentos,
Imprimir relatório dinâmico em pdf,
Imprimir doc para qualquer modelo odoo,
Imprimir pdf para qualquer modelo odoo,
Imprimir documento para qualquer objeto odoo,
Imprimir pdf para qualquer objeto odoo,
Aplicação para imprimir relatório dinâmico de documentos,
Aplicação para imprimir um relatório dinâmico em pdf,
Aplicação para configurar o seu próprio modelo de documento,
Aplicação para configurar o seu próprio modelo de PDF
Conceber e imprimir doc,
Conceber e imprimir pdf,
Conceber um modelo para qualquer modelo,
Imprimir documento para qualquer modelo,
Imprimir pdf para qualquer modelo,
Conceber documento para qualquer objeto,
Imprimir documento para qualquer objeto,
Imprimir pdf para qualquer objeto,
Impressão de documentos, impressão de pdf, impressão de documentos com base no utilizador, impressão de pdf com base no utilizador,
Criar modelo de documento, conceção de modelo de documento, criar modelo de pdf, conceção de modelo de pdf,
Aplicação Odoo para descarregar o relatório Doc, aplicação Odoo para descarregar o relatório PDF,
Aplicação Odoo para conceber modelo de documento, Aplicação Odoo para conceber modelo de PDF, Imprimir relatório Doc, Imprimir relatório Pdf,
Configurar modelo e imprimir PDF, Configurar modelo e imprimir Doc, configurar doc e imprimir, configurar pdf e imprimir, Relatório dinâmico doc, Relatório dinâmico pdf, Relatório dinâmico,
configurar relatório, conceber relatório, conceber Doc, conceber Pdf, configurar Doc, configurar PDf, relatório dinâmico odoo, Dinâmico, Doc, PDf, relatório,
Relatório pré-impresso, relatório pré-impresso dinâmico,
Relatório PDF dinâmico, Relatórios PDF dinâmicos, Conceber relatórios PDF, Imprimir relatórios PDF dinâmicos, Relatórios PDF, PDF, Configurar modelo PDF,
doc para pdf, imprimir doc para pdf, descarregar doc para pdf, relatório dinâmico de ordem de venda, relatório dinâmico de ordem de compra, relatório dinâmico de faturação,
Relatório de inventário dinâmico, pdf de ordem de venda dinâmica, pdf de ordem de compra dinâmica, pdf de fatura dinâmica, pdf de inventário dinâmico,
Russian
-------
Приложение Odoo для разработки собственного шаблона документа и экспорта этого шаблона для печати документа или отчета в формате pdf.
Разработка собственного шаблона документа, разработка собственного шаблона PDF,
Создание множества отчетов в формате doc для одной модели,
Создание множества отчетов в формате pdf для одной модели,
Динамические отчеты в формате doc,
Динамические отчеты в формате pdf,
Динамические загрузки документов,
Динамические загрузки pdf,
Разработать шаблон doc для отчета,
Разработать шаблон Pdf для отчета,
Печать динамического отчета doc,
Печать динамического отчета в формате pdf,
Печать doc для любой модели odoo,
Печать pdf для любой модели odoo,
Печать doc для любого объекта odoo,
Печать pdf для любого объекта odoo,
Приложение для печати динамического отчета в формате doc,
Приложение для печати динамического отчета в формате pdf,
Приложение для настройки собственного шаблона doc,
Приложение для настройки собственного шаблона PDF
Разработка и печать doc,
Дизайн и печать pdf,
Дизайн шаблона для любой модели,
Печать doc для любой модели,
Печать pdf для любой модели,
Дизайн doc для любого объекта,
Печать doc для любого объекта,
Печать pdf для любого объекта,
печать doc, печать pdf, печать doc на основе пользователя, печать pdf на основе пользователя,
Создание шаблона Doc, дизайн шаблона Doc, создание шаблона Pdf, дизайн шаблона PDf,
Приложение Odoo для загрузки отчета Doc, приложение Odoo для загрузки отчета PDF,
Приложение Odoo для разработки шаблона Doc, Приложение Odoo для разработки шаблона Pdf, Печать отчета Doc, Печать отчета Pdf,
Настроить шаблон и печать PDF,Настроить шаблон и печать Doc,Настроить doc и печать,Настроить pdf и печать,Динамический отчет doc,Динамический отчет pdf,Динамический отчет,
настроить отчет, дизайн отчета, дизайн Doc, дизайн Pdf, настроить Doc, настроить PDf, динамический отчет odoo, Dynamic, Doc, PDf, report,
Предварительно напечатанный отчет, динамический предварительно напечатанный отчет,
Динамический PDF отчет, Динамические PDF отчеты, Дизайн PDF отчетов, Печать динамических PDF отчетов, PDF отчеты, PDF, Настроить PDF шаблон,
doc в pdf, печать doc в pdf, скачать doc в pdf, динамический отчет по заказу на продажу, динамический отчет по заказу на покупку, динамический отчет по счету-фактуре,
Динамический отчет по инвентаризации, Динамический заказ на продажу pdf, Динамический заказ на покупку pdf, Динамический счет-фактура pdf, Динамическая инвентаризация pdf,
Turkish
--------
Kendi doküman şablonunuzu tasarlamak ve dokümanı veya pdf raporunu yazdırmak için aynısını dışa aktarmak için Odoo uygulaması.
Kendi doküman şablonunu tasarlayın, Kendi PDF şablonunu tasarlayın,
Aynı model için birçok doküman raporu oluşturun,
Aynı model için birçok pdf raporu oluşturun,
Dinamik doküman raporları,
Dinamik pdf raporları,
Dinamik doküman indirmeleri,
Dinamik pdf indirmeleri,
Bir rapor için doküman şablonu tasarlayın,
Bir rapor için Pdf şablonu tasarlayın,
Dinamik doküman raporu yazdırın,
Dinamik pdf raporu yazdırın,
Herhangi bir odoo modeli için doküman yazdırın,
Herhangi bir odoo modeli için pdf yazdırın,
Herhangi bir odoo nesnesi için doküman yazdırın,
Herhangi bir odoo nesnesi için pdf yazdırın,
Dinamik doküman raporu yazdırmak için uygulama,
Dinamik pdf raporu yazdırmak için uygulama,
Kendi doküman şablonunuzu yapılandırmak için uygulama,
Kendi PDF şablonunuzu yapılandırmak için uygulama
Tasarım ve baskı dokümanı,
Tasarım ve baskı pdf,
Herhangi bir model için tasarım şablonu,
Herhangi bir model için doküman yazdırın,
Herhangi bir model için pdf yazdırın,
Herhangi bir nesne için tasarım dokümanı,
Herhangi bir nesne için doküman yazdırın,
Herhangi bir nesne için pdf yazdırın,
doc yazdırma, pdf yazdırma, kullanıcıya göre doc yazdırma, kullanıcıya göre pdf yazdırma,
Doc şablonu oluştur, Doc şablon tasarımı, Pdf şablonu oluştur, PDf şablon tasarımı,
Doc raporunu indirmek için Odoo uygulaması, PDF raporunu indirmek için Odoo uygulaması,
Doküman şablonu tasarlamak için Odoo uygulaması, Pdf şablonu tasarlamak için Odoo uygulaması, Doküman raporu yazdır, Pdf raporu yazdır,
Şablonu yapılandırın ve PDF yazdırın, Şablonu yapılandırın ve Doc yazdırın, doc yapılandırın ve yazdırın, pdf yapılandırın ve yazdırın, Dinamik rapor doc, Dinamik rapor pdf, Dinamik rapor,
rapor yapılandırma, rapor tasarlama, Doc tasarlama, Pdf tasarlama, Doc yapılandırma, PDf yapılandırma, dinamik rapor odoo, Dinamik, Doc,PDf, rapor,
Önceden basılmış rapor, dinamik önceden basılmış rapor,
Dinamik PDF raporu, Dinamik PDF raporları, PDF raporları tasarlayın, Dinamik PDF raporlarını yazdırın, PDF raporları, PDF, PDF şablonunu yapılandırın,
doc to pdf,print doc to pdf, download doc to pdf, Dynamic Sale order report, Dynamic Purchase order report, Dynamic Invoice report,
Dinamik Envanter raporu, Dinamik Satış siparişi pdf, Dinamik satın alma siparişi pdf, Dinamik Fatura pdf, Dinamik Envanter pdf,
Ukrainian
--------
Додаток Odoo для створення власного шаблону документу та експорту його для друку документу або звіту у форматі pdf.
Створіть власний шаблон документа, створіть власний шаблон PDF,
Створіть багато звітів у форматі doc для однієї моделі,
Створіть багато PDF-звітів для однієї моделі,
Динамічні звіти у форматі doc,
Динамічні PDF-звіти,
Динамічні завантаження документів,
Динамічні завантаження pdf,
Створіть шаблон документа для звіту,
Створіть шаблон PDF для звіту,
Друк динамічного звіту doc,
Надрукуйте динамічний звіт у форматі pdf,
Друк doc для будь-якої моделі odoo,
Роздрукувати pdf для будь-якої моделі odoo,
Роздрукувати doc для будь-якого об'єкта odoo,
Роздрукувати pdf для будь-якого об'єкта odoo,
Додаток для друку динамічного звіту doc,
Додаток для друку динамічного звіту у форматі pdf,
Додаток для налаштування власного шаблону doc,
Додаток для налаштування власного шаблону PDF
Створення та друк doc,
Створення та друк pdf,
Створення шаблону для будь-якої моделі,
Друк doc для будь-якої моделі,
Друк pdf для будь-якої моделі,
Створити документ для будь-якого об'єкта,
Роздрукувати документ для будь-якого об'єкта,
Друк pdf для будь-якого об'єкта,
друк doc, друк pdf, друк doc на основі користувача, друк pdf на основі користувача,
Створити шаблон Doc, Дизайн шаблону Doc, Створити шаблон Pdf, Дизайн шаблону PDf,
Додаток Odoo для завантаження звіту Doc, додаток Odoo для завантаження звіту PDF,
Додаток Odoo для створення шаблону Doc, Додаток Odoo для створення шаблону Pdf, Друк звіту Doc, Друк звіту Pdf,
Налаштувати шаблон і роздрукувати PDF, Налаштувати шаблон і роздрукувати Doc, Налаштувати doc і роздрукувати, Налаштувати pdf і роздрукувати, Динамічний звіт doc, Динамічний звіт pdf, Динамічний звіт,
налаштувати звіт, дизайн звіту, дизайн Doc, дизайн Pdf, налаштувати Doc, налаштувати PDf, динамічний звіт odoo, динамічний, Doc, PDf, звіт,
Попередньо надрукований звіт, динамічний попередньо надрукований звіт,
Динамічний PDF-звіт, Динамічні PDF-звіти, Дизайн PDF-звітів, Друк динамічних PDF-звітів, PDF-звіти, PDF, Налаштувати шаблон PDF,
doc to pdf, друк doc to pdf, завантажити doc to pdf, Динамічний звіт про замовлення на продаж, Динамічний звіт про замовлення на купівлю, Динамічний звіт про рахунки-фактури,
Динамічний інвентаризаційний звіт, Динамічні замовлення на продаж pdf, Динамічні замовлення на покупку pdf, Динамічні рахунки-фактури pdf, Динамічні інвентаризаційні звіти pdf,
Swedish
-------
Odoo-app för att designa din egen dokumentmall och exportera densamma för att skriva ut dokumentet eller pdf-rapporten.
Designa egen dokumentmall,Designa egen PDF-mall,
Skapa många dokumentrapporter för samma modell,
Skapa många pdf-rapporter för samma modell,
Dynamiska dokumentrapporter,
Dynamiska pdf-rapporter,
Dynamiska dokumentnedladdningar,
Dynamiska pdf-nedladdningar,
Designa doc-mall för en rapport,
Utforma pdf-mall för en rapport,
Skriv ut dynamisk doc-rapport,
Skriv ut dynamisk pdf-rapport,
Skriv ut doc för alla odoo-modeller,
Skriv ut pdf för alla odoo-modeller,
Skriv ut doc för alla odoo-objekt,
Skriv ut pdf för alla odoo-objekt,
App för att skriva ut dynamisk doc-rapport,
App för att skriva ut dynamisk pdf-rapport,
App för att konfigurera din egen dokumentmall,
App för att konfigurera din egen PDF-mall
Designa och skriv ut dokument,
Designa och skriv ut pdf,
Designmall för valfri modell,
Skriv ut dokument för alla modeller,
Skriv ut pdf för valfri modell,
Designdokument för valfritt objekt,
Skriv ut dokument för valfritt objekt,
Skriv ut pdf för valfritt objekt,
utskrift av dokument, utskrift av pdf, utskrift av dokument baserat användare, utskrift av pdf baserat användare,
Skapa Doc-mall, design av Doc-mall,Skapa Pdf-mall, design av PDf-mall,
Odoo-app för att ladda ner Doc-rapport, Odoo-app för att ladda ner PDF-rapport,
Odoo-app för att designa Doc-mall,Odoo-app för att designa Pdf-mall, Skriv ut rapport Doc,Skriv ut rapport Pdf,
Konfigurera mall och skriv ut PDF,Konfigurera mall och skriv ut Doc, konfigurera doc och skriv ut,konfigurera pdf och skriv ut, Dynamisk rapport doc,Dynamisk rapport pdf, Dynamisk rapport,
konfigurera rapport, designa rapport, designa Doc,designa Pdf, konfigurera Doc, konfigurera PDf,dynamisk rapport odoo, Dynamisk, Doc,PDf, rapport,
Förtryckt rapport, dynamisk förtryckt rapport,
Dynamisk PDF-rapport, Dynamiska PDF-rapporter, Utforma PDF-rapporter, Skriv ut dynamiska PDF-rapporter, PDF-rapporter, PDF, Konfigurera PDF-mall,
doc to pdf,print doc to pdf, download doc to pdf, Dynamisk försäljningsorderrapport, Dynamisk inköpsorderrapport, Dynamisk fakturarapport,
Dynamisk lagerrapport, Dynamisk försäljningsorder pdf, Dynamisk inköpsorder pdf, Dynamisk faktura pdf, Dynamisk lager pdf,
Arabic
-------
تطبيق Odoo لتصميم قالب المستند الخاص بك وتصديره لطباعة تقرير doc أو pdf.
تصميم قالب مستند خاص ، تصميم قالب PDF خاص ،
إنشاء العديد من تقارير المستندات لنفس النموذج ،
إنشاء العديد من تقارير pdf لنفس النموذج ،
تقارير المستندات الديناميكية ،
تقارير pdf الديناميكية ،
تنزيلات المستندات الديناميكية ،
تنزيلات pdf الديناميكية ،
قالب مستند التصميم لتقرير ،
قالب تصميم Pdf لتقرير ،
طباعة تقرير مستند ديناميكي ،
طباعة تقرير pdf الديناميكي ،
طباعة المستند لأي طراز أودو ،
طباعة ملف pdf لأي طراز أودو ،
طباعة مستند لأي كائن odoo ،
طباعة pdf لأي كائن odoo ،
تطبيق لطباعة تقرير مستند ديناميكي ،
تطبيق لطباعة تقرير pdf الديناميكي ،
التطبيق لتكوين قالب المستند الخاص بك ،
التطبيق لتكوين قالب PDF الخاص بك
تصميم وطباعة المستند ،
تصميم وطباعة pdf ،
قالب تصميم لأي نموذج ،
طباعة المستند لأي طراز ،
طباعة pdf لأي طراز ،
مستند التصميم لأي كائن ،
طباعة مستند لأي كائن ،
طباعة pdf لأي كائن ،
طباعة doc ، طباعة pdf ، طباعة doc بناءً على المستخدم ، طباعة pdf بناءً على المستخدم ،
إنشاء قالب Doc ، تصميم قالب Doc ، إنشاء قالب Pdf ، تصميم قالب PDf ،
تطبيق Odoo لتنزيل تقرير Doc ، وتطبيق Odoo لتنزيل تقرير PDF ،
تطبيق Odoo لتصميم قالب Doc ، تطبيق Odoo لتصميم قالب Pdf ، طباعة تقرير Doc ، طباعة تقرير Pdf ،
تكوين القالب وطباعة PDF ، تكوين القالب وطباعة المستند ، تكوين المستند والطباعة ، تكوين pdf والطباعة ، مستند التقرير الديناميكي ، تقرير pdf الديناميكي ، التقرير الديناميكي ،
تكوين تقرير ، تقرير تصميم ، مستند تصميم ، تصميم ملف PDF ، تكوين مستند ، تكوين PDf ، تقرير ديناميكي odoo ، ديناميكي ، مستند ، PDf ، تقرير ،
تقرير مطبوع مسبقًا ، تقرير ديناميكي مطبوع مسبقًا ،
تقرير PDF الديناميكي ، تقارير PDF الديناميكية ، تصميم تقارير PDF ، طباعة تقارير PDF الديناميكية ، تقارير PDF ، PDF ، تكوين قالب PDF ،
doc إلى pdf ، وطباعة المستند إلى pdf ، وتنزيل المستند إلى pdf ، وتقرير أمر البيع الديناميكي ، وتقرير أمر الشراء الديناميكي ، وتقرير الفاتورة الديناميكية ،
تقرير المخزون الديناميكي ، أمر البيع الديناميكي pdf ، أمر الشراء الديناميكي pdf ، الفاتورة الديناميكية pdf ، المخزون الديناميكي pdf ،
Persian
-------
برنامه Odoo برای طراحی الگوی سند خود و صادر کردن آن برای چاپ گزارش سند یا pdf.
طراحی قالب سند خود، طراحی قالب PDF خود،
ایجاد بسیاری از گزارشات سند برای همان مدل،
ایجاد بسیاری از گزارش های پی دی اف برای همان مدل،
گزارشات داینامیک داک،
گزارش های pdf پویا،
بارگیری اسناد پویا،
دانلود پویا پی دی اف،
طراحی قالب سند برای گزارش،
طراحی قالب پی دی اف برای گزارش،
چاپ گزارش سند پویا،
چاپ گزارش پویا pdf،
چاپ سند برای هر مدل اودو،
چاپ pdf برای هر مدل odoo،
چاپ سند برای هر شی odoo،
چاپ pdf برای هر شی odoo،
برنامه برای چاپ گزارش سند پویا،
برنامه برای چاپ گزارش پویا pdf،
برنامه برای پیکربندی الگوی سند خود،
برنامه ای برای پیکربندی قالب PDF خود
طراحی و چاپ سند،
طراحی و چاپ pdf،
طراحی قالب برای هر مدل،
چاپ سند برای هر مدل،
چاپ pdf برای هر مدلی،
طراحی سند برای هر شی،
چاپ سند برای هر شی،
چاپ pdf برای هر شی،
چاپ doc، چاپ پی دی اف، چاپ سند بر اساس کاربر، چاپ پی دی اف بر اساس کاربر،
ایجاد قالب Doc، طراحی قالب Doc، ایجاد قالب پی دی اف، طراحی قالب پی دی اف،
برنامه Odoo برای دانلود گزارش Doc، برنامه Odoo برای دانلود گزارش PDF،
برنامه Odoo برای طراحی قالب Doc، برنامه Odoo برای طراحی قالب Pdf، چاپ گزارش Doc، چاپ گزارش Pdf،
پیکربندی قالب و چاپ PDF، پیکربندی الگو و چاپ Doc، پیکربندی سند و چاپ، پیکربندی pdf و چاپ، سند گزارش پویا، گزارش پویا pdf، گزارش پویا،
پیکربندی گزارش، گزارش طراحی، طراحی Doc، طراحی پی دی اف، پیکربندی Doc، پیکربندی PDf، گزارش پویا odoo، Dynamic، Doc، PDF، گزارش،
گزارش از پیش چاپ شده، گزارش از پیش چاپ شده پویا،
گزارش پویا PDF، گزارش پویا PDF، طراحی گزارش های PDF، چاپ گزارش های PDF پویا، گزارش های PDF، PDF، پیکربندی قالب PDF،
doc به pdf، چاپ سند به pdf، دانلود سند به pdf، گزارش سفارش فروش پویا، گزارش سفارش خرید پویا، گزارش فاکتور پویا،
گزارش موجودی پویا، pdf سفارش فروش پویا، pdf سفارش خرید پویا، pdf فاکتور پویا، pdf موجودی پویا،
""",
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,231 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * dynamic_docx_pdf_reports_omax
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-06-29 13:47+0000\n"
"PO-Revision-Date: 2023-06-29 13:47+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid ""
"<i class=\"fa fa-info fa-3x text-info float-start\" role=\"img\" aria-"
"label=\"Info\" title=\"Info\"/>"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__ir_actions_server_id
msgid "Action Server"
msgstr "خادم العمل"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Available Fields"
msgstr "الحقول المتاحة"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_wiz_form
msgid "Cancel"
msgstr "يلغي"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__create_uid
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__create_uid
msgid "Created by"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__create_date
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__create_date
msgid "Created on"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template__print_type__docx
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template_wiz__print_type__docx
msgid "DOCX"
msgstr "DOCX"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Detailed template:"
msgstr "نموذج مفصل:"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__display_name
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__display_name
msgid "Display Name"
msgstr "Name anzeigen"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.actions.act_window,name:dynamic_docx_pdf_reports_omax.action_docx_template
#: model:ir.ui.menu,name:dynamic_docx_pdf_reports_omax.action_docx_template_main_menu_id
msgid "Docx Template"
msgstr "Docx-Vorlage"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.ui.menu,name:dynamic_docx_pdf_reports_omax.action_docx_template_menu_id
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_tree
msgid "Docx Template Detail"
msgstr "نموذج Docx"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_wiz_form
msgid "Download"
msgstr "تحميل"
#. module: dynamic_docx_pdf_reports_omax
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_wiz_form
#, python-format
msgid "Download Report"
msgstr "تنزيل التقرير"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.module.category,name:dynamic_docx_pdf_reports_omax.module_category_dynamic_docx_report
msgid "Dynamic Docx Report"
msgstr "تقرير Docx الديناميكي"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__field_ids
msgid "Fields"
msgstr "مجالات"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__file_name
msgid "File Name"
msgstr "اسم الملف"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Help"
msgstr "يساعد"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__id
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__id
msgid "ID"
msgstr "ID"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid ""
"If we need value in table then use '$' sign and then field_technical_name. "
"Ex $order_line.name, $partner_id"
msgstr ""
"إذا احتجنا إلى قيمة في الجدول ، فاستخدم علامة '$' ثم field_technical_name."
"مثال $order_line.name, $partner_id"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template____last_update
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz____last_update
msgid "Last Modified on"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__write_uid
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__write_uid
msgid "Last Updated by"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__write_date
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__write_date
msgid "Last Updated on"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:res.groups,name:dynamic_docx_pdf_reports_omax.group_dynamic_docx_report_manager
msgid "Manager"
msgstr "مدير"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__model_id
msgid "Model"
msgstr "نموذج"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template__print_type__pdf
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template_wiz__print_type__pdf
msgid "PDF"
msgstr "PDF"
#. module: dynamic_docx_pdf_reports_omax
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#, python-format
msgid "Please choose the file with .docx extension!"
msgstr "الرجاء اختيار الملف بامتداد .docx!"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__name
msgid "Report File Name"
msgstr "تقرير اسم الملف"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__name
msgid "Report Name"
msgstr "تقرير اسم"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__print_type
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__print_type
msgid "Report type"
msgstr "نوع التقرير"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Table Example"
msgstr "مثال على الجدول"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__docx_file
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__new_docx_file
msgid "Upload File"
msgstr "رفع ملف"
#. module: dynamic_docx_pdf_reports_omax
#: model:res.groups,name:dynamic_docx_pdf_reports_omax.group_dynamic_docx_report_user
msgid "User"
msgstr "مستخدم"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid ""
"User needs value from the record then use '$\\{field_technical_name\\}', Ex."
" $\\{name\\}, $\\{payment_term_id\\}, $\\{company_id\\}"
msgstr ""
"يحتاج المستخدم إلى قيمة من السجل ثم يستخدم '$ \\ {field_technical_name \\' ، على سبيل المثال."
" $\\{name\\}, $\\{payment_term_id\\}, $\\{company_id\\}"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "When create docs template then please follow below instructions."
msgstr "عند إنشاء نموذج مستندات ، يرجى اتباع التعليمات التالية."
#. module: dynamic_docx_pdf_reports_omax
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#, python-format
msgid "You can not change Model."
msgstr "لا يمكنك تغيير النموذج."
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model,name:dynamic_docx_pdf_reports_omax.model_docx_template
msgid "docx.template"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model,name:dynamic_docx_pdf_reports_omax.model_docx_template_wiz
msgid "docx.template.wiz"
msgstr ""

View File

@ -0,0 +1,230 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * dynamic_docx_pdf_reports_omax
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-06-29 13:47+0000\n"
"PO-Revision-Date: 2023-06-29 13:47+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid ""
"<i class=\"fa fa-info fa-3x text-info float-start\" role=\"img\" aria-"
"label=\"Info\" title=\"Info\"/>"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__ir_actions_server_id
msgid "Action Server"
msgstr "Aktion Server"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Available Fields"
msgstr "Verfügbare Felder"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_wiz_form
msgid "Cancel"
msgstr "Abbrechen"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__create_uid
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__create_uid
msgid "Created by"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__create_date
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__create_date
msgid "Created on"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template__print_type__docx
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template_wiz__print_type__docx
msgid "DOCX"
msgstr "DOCX"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Detailed template:"
msgstr "Detaillierte Vorlage:"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__display_name
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__display_name
msgid "Display Name"
msgstr "Name anzeigen"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.actions.act_window,name:dynamic_docx_pdf_reports_omax.action_docx_template
#: model:ir.ui.menu,name:dynamic_docx_pdf_reports_omax.action_docx_template_main_menu_id
msgid "Docx Template"
msgstr "Docx-Vorlage"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.ui.menu,name:dynamic_docx_pdf_reports_omax.action_docx_template_menu_id
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_tree
msgid "Docx Template Detail"
msgstr "Docx Vorlage Detail"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_wiz_form
msgid "Download"
msgstr "Herunterladen"
#. module: dynamic_docx_pdf_reports_omax
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_wiz_form
#, python-format
msgid "Download Report"
msgstr "Bericht herunterladen"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.module.category,name:dynamic_docx_pdf_reports_omax.module_category_dynamic_docx_report
msgid "Dynamic Docx Report"
msgstr "Dynamischer Docx-Bericht"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__field_ids
msgid "Fields"
msgstr "Felder"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__file_name
msgid "File Name"
msgstr "Datei Name"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Help"
msgstr "Hilfe"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__id
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__id
msgid "ID"
msgstr "ID"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid ""
"If we need value in table then use '$' sign and then field_technical_name. "
"Ex $order_line.name, $partner_id"
msgstr ""
"Wenn wir einen Wert in einer Tabelle benötigen, verwenden wir das Zeichen '$' und dann field_technical_name. "
"Beispiel $order_line.name, $partner_id"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template____last_update
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz____last_update
msgid "Last Modified on"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__write_uid
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__write_uid
msgid "Last Updated by"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__write_date
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__write_date
msgid "Last Updated on"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:res.groups,name:dynamic_docx_pdf_reports_omax.group_dynamic_docx_report_manager
msgid "Manager"
msgstr "Manager"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__model_id
msgid "Model"
msgstr "Modell"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template__print_type__pdf
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template_wiz__print_type__pdf
msgid "PDF"
msgstr "PDF"
#. module: dynamic_docx_pdf_reports_omax
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#, python-format
msgid "Please choose the file with .docx extension!"
msgstr "Bitte wählen Sie die Datei mit der Erweiterung .docx!"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__name
msgid "Report File Name"
msgstr "Bericht Dateiname"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__name
msgid "Report Name"
msgstr "Bericht Name"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__print_type
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__print_type
msgid "Report type"
msgstr "Berichtstyp"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Table Example"
msgstr "Tabelle Beispiel"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__docx_file
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__new_docx_file
msgid "Upload File"
msgstr "Datei hochladen"
#. module: dynamic_docx_pdf_reports_omax
#: model:res.groups,name:dynamic_docx_pdf_reports_omax.group_dynamic_docx_report_user
msgid "User"
msgstr "Benutzer"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid ""
"User needs value from the record then use '$\\{field_technical_name\\}', Ex."
" $\\{name\\}, $\\{payment_term_id\\}, $\\{company_id\\}"
msgstr ""
"Benötigt der Benutzer einen Wert aus dem Datensatz, so ist '$\\{field_technical_name\\}' zu verwenden, Beispiel."
" $\\{name\\}, $\\{payment_term_id\\}, $\\{company_id\\}"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "When create docs template then please follow below instructions."
msgstr "Wenn Sie eine Dokumentvorlage erstellen, folgen Sie bitte den nachstehenden Anweisungen."
#. module: dynamic_docx_pdf_reports_omax
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#, python-format
msgid "You can not change Model."
msgstr "Sie können das Modell nicht ändern."
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model,name:dynamic_docx_pdf_reports_omax.model_docx_template
msgid "docx.template"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model,name:dynamic_docx_pdf_reports_omax.model_docx_template_wiz
msgid "docx.template.wiz"
msgstr ""

View File

@ -0,0 +1,230 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * dynamic_docx_pdf_reports_omax
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-06-29 13:47+0000\n"
"PO-Revision-Date: 2023-06-29 13:47+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid ""
"<i class=\"fa fa-info fa-3x text-info float-start\" role=\"img\" aria-"
"label=\"Info\" title=\"Info\"/>"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__ir_actions_server_id
msgid "Action Server"
msgstr "Servidor de acción"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Available Fields"
msgstr "Campos disponibles"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_wiz_form
msgid "Cancel"
msgstr "Cancelar"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__create_uid
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__create_uid
msgid "Created by"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__create_date
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__create_date
msgid "Created on"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template__print_type__docx
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template_wiz__print_type__docx
msgid "DOCX"
msgstr "DOCX"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Detailed template:"
msgstr "Plantilla detallada:"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__display_name
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__display_name
msgid "Display Name"
msgstr "Mostrar nombre"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.actions.act_window,name:dynamic_docx_pdf_reports_omax.action_docx_template
#: model:ir.ui.menu,name:dynamic_docx_pdf_reports_omax.action_docx_template_main_menu_id
msgid "Docx Template"
msgstr "Plantilla Docx"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.ui.menu,name:dynamic_docx_pdf_reports_omax.action_docx_template_menu_id
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_tree
msgid "Docx Template Detail"
msgstr "Plantilla Docx Detalle"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_wiz_form
msgid "Download"
msgstr "Descargar"
#. module: dynamic_docx_pdf_reports_omax
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_wiz_form
#, python-format
msgid "Download Report"
msgstr "Descargar informe"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.module.category,name:dynamic_docx_pdf_reports_omax.module_category_dynamic_docx_report
msgid "Dynamic Docx Report"
msgstr "Informe Docx dinámico"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__field_ids
msgid "Fields"
msgstr "Campos"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__file_name
msgid "File Name"
msgstr "Nombre del archivo"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Help"
msgstr "Ayuda"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__id
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__id
msgid "ID"
msgstr "ID"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid ""
"If we need value in table then use '$' sign and then field_technical_name. "
"Ex $order_line.name, $partner_id"
msgstr ""
"Si necesitamos el valor en la tabla, utilice el signo '$' y, a continuación, field_technical_name. "
"Ex $order_line.name, $partner_id"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template____last_update
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz____last_update
msgid "Last Modified on"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__write_uid
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__write_uid
msgid "Last Updated by"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__write_date
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__write_date
msgid "Last Updated on"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:res.groups,name:dynamic_docx_pdf_reports_omax.group_dynamic_docx_report_manager
msgid "Manager"
msgstr "Director"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__model_id
msgid "Model"
msgstr "Modelo"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template__print_type__pdf
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template_wiz__print_type__pdf
msgid "PDF"
msgstr "PDF"
#. module: dynamic_docx_pdf_reports_omax
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#, python-format
msgid "Please choose the file with .docx extension!"
msgstr "Elija el archivo con extensión .docx."
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__name
msgid "Report File Name"
msgstr "Nombre del archivo del informe"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__name
msgid "Report Name"
msgstr "Nombre del informe"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__print_type
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__print_type
msgid "Report type"
msgstr "Tipo de informe"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Table Example"
msgstr "Ejemplo de tabla"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__docx_file
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__new_docx_file
msgid "Upload File"
msgstr "Cargar archivo"
#. module: dynamic_docx_pdf_reports_omax
#: model:res.groups,name:dynamic_docx_pdf_reports_omax.group_dynamic_docx_report_user
msgid "User"
msgstr "Usuario"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid ""
"User needs value from the record then use '$\\{field_technical_name\\}', Ex."
" $\\{name\\}, $\\{payment_term_id\\}, $\\{company_id\\}"
msgstr ""
"El usuario necesita el valor del registro, a continuación, utilice '$\{field_technical_name\}', Ej."
" $\\{name\\}, $\\{payment_term_id\\}, $\\{company_id\\}"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "When create docs template then please follow below instructions."
msgstr "Para crear una plantilla de documento, siga las siguientes instrucciones."
#. module: dynamic_docx_pdf_reports_omax
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#, python-format
msgid "You can not change Model."
msgstr "No se puede cambiar de modelo"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model,name:dynamic_docx_pdf_reports_omax.model_docx_template
msgid "docx.template"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model,name:dynamic_docx_pdf_reports_omax.model_docx_template_wiz
msgid "docx.template.wiz"
msgstr ""

View File

@ -0,0 +1,230 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * dynamic_docx_pdf_reports_omax
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-06-29 13:47+0000\n"
"PO-Revision-Date: 2023-06-29 13:47+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid ""
"<i class=\"fa fa-info fa-3x text-info float-start\" role=\"img\" aria-"
"label=\"Info\" title=\"Info\"/>"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__ir_actions_server_id
msgid "Action Server"
msgstr "Serveur d'action"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Available Fields"
msgstr "Champs disponibles"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_wiz_form
msgid "Cancel"
msgstr "Annuler"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__create_uid
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__create_uid
msgid "Created by"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__create_date
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__create_date
msgid "Created on"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template__print_type__docx
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template_wiz__print_type__docx
msgid "DOCX"
msgstr "DOCX"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Detailed template:"
msgstr "Modèle détaillé:"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__display_name
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__display_name
msgid "Display Name"
msgstr "Nom d'affichage"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.actions.act_window,name:dynamic_docx_pdf_reports_omax.action_docx_template
#: model:ir.ui.menu,name:dynamic_docx_pdf_reports_omax.action_docx_template_main_menu_id
msgid "Docx Template"
msgstr "Modèle Docx"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.ui.menu,name:dynamic_docx_pdf_reports_omax.action_docx_template_menu_id
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_tree
msgid "Docx Template Detail"
msgstr "Détail du modèle Docx"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_wiz_form
msgid "Download"
msgstr "Télécharger"
#. module: dynamic_docx_pdf_reports_omax
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_wiz_form
#, python-format
msgid "Download Report"
msgstr "Télécharger le rapport"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.module.category,name:dynamic_docx_pdf_reports_omax.module_category_dynamic_docx_report
msgid "Dynamic Docx Report"
msgstr "Rapport Docx dynamique"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__field_ids
msgid "Fields"
msgstr "Domaines"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__file_name
msgid "File Name"
msgstr "Nom du fichier"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Help"
msgstr "Aide"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__id
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__id
msgid "ID"
msgstr "ID"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid ""
"If we need value in table then use '$' sign and then field_technical_name. "
"Ex $order_line.name, $partner_id"
msgstr ""
"Si nous avons besoin d'une valeur dans la table, nous utilisons le signe '$' et ensuite le nom du champ_technique. "
"Ex $order_line.name, $partner_id"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template____last_update
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz____last_update
msgid "Last Modified on"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__write_uid
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__write_uid
msgid "Last Updated by"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__write_date
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__write_date
msgid "Last Updated on"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:res.groups,name:dynamic_docx_pdf_reports_omax.group_dynamic_docx_report_manager
msgid "Manager"
msgstr "Gestionnaire"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__model_id
msgid "Model"
msgstr "Modèle"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template__print_type__pdf
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template_wiz__print_type__pdf
msgid "PDF"
msgstr "PDF"
#. module: dynamic_docx_pdf_reports_omax
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#, python-format
msgid "Please choose the file with .docx extension!"
msgstr "Veuillez choisir le fichier avec l'extension .docx !"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__name
msgid "Report File Name"
msgstr "Nom du fichier du rapport"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__name
msgid "Report Name"
msgstr "Nom du rapport"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__print_type
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__print_type
msgid "Report type"
msgstr "Type de rapport"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Table Example"
msgstr "Exemple de tableau"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__docx_file
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__new_docx_file
msgid "Upload File"
msgstr "Télécharger le fichier"
#. module: dynamic_docx_pdf_reports_omax
#: model:res.groups,name:dynamic_docx_pdf_reports_omax.group_dynamic_docx_report_user
msgid "User"
msgstr "Utilisateur"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid ""
"User needs value from the record then use '$\\{field_technical_name\\}', Ex."
" $\\{name\\}, $\\{payment_term_id\\}, $\\{company_id\\}"
msgstr ""
"L'utilisateur a besoin d'une valeur dans l'enregistrement, alors utilisez '$\N{nom_technique_du_champ\N}', par exemple."
" $\\{name\\}, $\\{payment_term_id\\}, $\\{company_id\\}"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "When create docs template then please follow below instructions."
msgstr "Pour créer un modèle de document, veuillez suivre les instructions ci-dessous."
#. module: dynamic_docx_pdf_reports_omax
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#, python-format
msgid "You can not change Model."
msgstr "Vous ne pouvez pas changer de modèle"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model,name:dynamic_docx_pdf_reports_omax.model_docx_template
msgid "docx.template"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model,name:dynamic_docx_pdf_reports_omax.model_docx_template_wiz
msgid "docx.template.wiz"
msgstr ""

View File

@ -0,0 +1,230 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * dynamic_docx_pdf_reports_omax
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-06-29 13:47+0000\n"
"PO-Revision-Date: 2023-06-29 13:47+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid ""
"<i class=\"fa fa-info fa-3x text-info float-start\" role=\"img\" aria-"
"label=\"Info\" title=\"Info\"/>"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__ir_actions_server_id
msgid "Action Server"
msgstr "行动服务器"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Available Fields"
msgstr "可用领域"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_wiz_form
msgid "Cancel"
msgstr "取消"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__create_uid
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__create_uid
msgid "Created by"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__create_date
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__create_date
msgid "Created on"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template__print_type__docx
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template_wiz__print_type__docx
msgid "DOCX"
msgstr "DOCX"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Detailed template:"
msgstr "详细模板:"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__display_name
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__display_name
msgid "Display Name"
msgstr "显示名称"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.actions.act_window,name:dynamic_docx_pdf_reports_omax.action_docx_template
#: model:ir.ui.menu,name:dynamic_docx_pdf_reports_omax.action_docx_template_main_menu_id
msgid "Docx Template"
msgstr "Docx模板"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.ui.menu,name:dynamic_docx_pdf_reports_omax.action_docx_template_menu_id
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_tree
msgid "Docx Template Detail"
msgstr "Docx模板详情"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_wiz_form
msgid "Download"
msgstr "下载"
#. module: dynamic_docx_pdf_reports_omax
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_wiz_form
#, python-format
msgid "Download Report"
msgstr "下载报告"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.module.category,name:dynamic_docx_pdf_reports_omax.module_category_dynamic_docx_report
msgid "Dynamic Docx Report"
msgstr "动态Docx报告"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__field_ids
msgid "Fields"
msgstr "领域"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__file_name
msgid "File Name"
msgstr "文件名称"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Help"
msgstr "帮助"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__id
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__id
msgid "ID"
msgstr "身份证"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid ""
"If we need value in table then use '$' sign and then field_technical_name. "
"Ex $order_line.name, $partner_id"
msgstr ""
"如果我们需要表格中的值,那么使用 '$' 符号然后是field_technical_name. "
"雇员 $order_line.name, $partner_id"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template____last_update
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz____last_update
msgid "Last Modified on"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__write_uid
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__write_uid
msgid "Last Updated by"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__write_date
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__write_date
msgid "Last Updated on"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:res.groups,name:dynamic_docx_pdf_reports_omax.group_dynamic_docx_report_manager
msgid "Manager"
msgstr "经理"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__model_id
msgid "Model"
msgstr "模型"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template__print_type__pdf
#: model:ir.model.fields.selection,name:dynamic_docx_pdf_reports_omax.selection__docx_template_wiz__print_type__pdf
msgid "PDF"
msgstr "PDF"
#. module: dynamic_docx_pdf_reports_omax
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#, python-format
msgid "Please choose the file with .docx extension!"
msgstr "请选择扩展名为.docx的文件!"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__name
msgid "Report File Name"
msgstr "报告文件名"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__name
msgid "Report Name"
msgstr "报告名称"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__print_type
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template_wiz__print_type
msgid "Report type"
msgstr "报告类型"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "Table Example"
msgstr "表例"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__docx_file
#: model:ir.model.fields,field_description:dynamic_docx_pdf_reports_omax.field_docx_template__new_docx_file
msgid "Upload File"
msgstr "上传文件"
#. module: dynamic_docx_pdf_reports_omax
#: model:res.groups,name:dynamic_docx_pdf_reports_omax.group_dynamic_docx_report_user
msgid "User"
msgstr "用户"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid ""
"User needs value from the record then use '$\\{field_technical_name\\}', Ex."
" $\\{name\\}, $\\{payment_term_id\\}, $\\{company_id\\}"
msgstr ""
"用户需要记录中的值,然后使用 '$\\{领域_技术_名称\\}', Ex."
" $\\{name\\}, $\\{payment_term_id\\}, $\\{company_id\\}"
#. module: dynamic_docx_pdf_reports_omax
#: model_terms:ir.ui.view,arch_db:dynamic_docx_pdf_reports_omax.view_docx_template_form
msgid "When create docs template then please follow below instructions."
msgstr "当创建文档模板时,请遵循以下说明"
#. module: dynamic_docx_pdf_reports_omax
#: code:addons/dynamic_docx_pdf_reports_omax/models/docx_template.py:0
#, python-format
msgid "You can not change Model."
msgstr "你不能改变模型"
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model,name:dynamic_docx_pdf_reports_omax.model_docx_template
msgid "docx.template"
msgstr ""
#. module: dynamic_docx_pdf_reports_omax
#: model:ir.model,name:dynamic_docx_pdf_reports_omax.model_docx_template_wiz
msgid "docx.template.wiz"
msgstr ""

View File

@ -0,0 +1,6 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import docx_template
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,478 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models, _
from odoo.exceptions import UserError
import base64
from PIL import Image
import io
import docx
import os
from python_docx_replace import docx_get_keys
from python_docx_replace import docx_replace
#import datetime
from odoo.addons.website.tools import text_from_html
import copy
from docx.table import _Cell
from docx.shared import Inches, Pt
import html2text
import platform
import tempfile
class DocxTemplate(models.Model):
_name = 'docx.template'
_description = "Docx Template"
name = fields.Char(string='Report Name', required=True)
model_id = fields.Many2one("ir.model", string='Model', required=True, ondelete="cascade")
docx_file = fields.Binary(string='Upload File', required=True)
ir_actions_server_id = fields.Many2one("ir.actions.server", string="Action Server")
new_docx_file = fields.Binary(string='Upload File.', required=False)
file_name = fields.Char(string='File Name', size=256)
font_name = fields.Char(string='Font Name', size=256)
font_size = fields.Integer(string='Font Size', default=10)
print_type = fields.Selection(selection=[
('docx', 'DOCX'),
('pdf', 'PDF'),
], string='Report type', default='docx', required=True) # , tracking=True
skip_wizard = fields.Boolean(string='skip print pop-up')
field_ids = fields.One2many('ir.model.fields', related='model_id.field_id')
def create(self, vals):
res = super(DocxTemplate, self).create(vals)
fname = str(res.file_name.split('.')[-1])
if fname != 'docx':
raise UserError(_('Please choose the file with .docx extension!'))
model_id = res.model_id
docx_template = self.env["ir.model"].search([('model', '=', 'docx.template')])
code_with_ctx = "action = model.with_context(menu_action_id=" + str(res.id) + ").make_docx_pdf_report()"
values = {
'name': str(res.name),
'type': 'ir.actions.server',
'model_id': docx_template.id,
'binding_model_id': model_id.id,
'binding_view_types': 'form', # 'form,list'
'binding_type': 'action',
'state': 'code',
'groups_id': [(4, self.env.ref('dynamic_docx_pdf_reports_omax.group_dynamic_docx_report_user').id)],
# 'code':'action = model.make_docx_pdf_report()',
'code': code_with_ctx,
}
action_id = self.env['ir.actions.server'].create(values)
res.ir_actions_server_id = action_id
return res
def print_employee_contract_action(self, records):
# only handle employee contracts
if not records or records._name != 'hr.contract':
raise UserError(_('This function only applies to employee contracts.'))
for record in records:
if not record.contract_type_id:
raise UserError(_('There is no information about the type of contract'))
contract_type = record.contract_type_id.name
# search for template to contract_type
template = self.search([
('model_id.model', '=', 'hr.contract'),
('name', 'ilike', 'contract_type_%s' % contract_type) # search name template
], order='create_date desc', limit=1) # get latest file
if not template:
raise UserError(_('No template is found for type contracts: %s.' % contract_type))
result = template.with_context(active_model='hr.contract', active_ids=records.ids).make_docx_pdf_report()
if not result:
raise UserError(_('Can not create reports from the template.'))
return result
def write(self, values):
if 'model_id' in values and self.ir_actions_server_id:
raise UserError(_('You can not change Model.'))
res = super(DocxTemplate, self).write(values)
fname = str(self.file_name.split('.')[-1])
if fname != 'docx':
raise UserError(_('Please choose the file with .docx extension!'))
if 'name' in values:
if self.ir_actions_server_id:
self.ir_actions_server_id.name = self.name
return res
def unlink(self):
if self.ir_actions_server_id:
self.ir_actions_server_id.unlink()
return super(DocxTemplate, self).unlink()
def get_image(self, paragraph, value):
image = Image.open(value).convert("RGBA")
image.save(os.path.join(tempfile.gettempdir(), 'out.png'))
run = paragraph.add_run()
run.add_picture(os.path.join(tempfile.gettempdir(), 'out.png'), width=Inches(1),height=Inches(1))
def make_docx_pdf_report(self):
active_ids = self._context.get('active_ids')
active_model = self._context.get('active_model')
records = self.env[active_model].browse(active_ids)
###
menu_action_id = False
if 'menu_action_id' in list(self._context.keys()):
menu_action_id = int(self._context.get('menu_action_id'))
###
if active_model and menu_action_id:
model_id = self.env["ir.model"].search([('model', '=', active_model)])
docx_template_id = self.browse(menu_action_id)
if docx_template_id:
# existing file read
val = base64.b64decode(docx_template_id.docx_file)
# get temp directory
file_path = os.path.join(tempfile.gettempdir(), 'output.docx')
os.makedirs(os.path.dirname(file_path), exist_ok=True) # create directory if it doesn't exist
with open(file_path, 'wb') as autfile:
autfile.write(val)
autfile.close()
for rec in records:
doc = docx.Document(file_path)
for doc_style in doc.styles:
if 'font' in dir(doc_style):
if docx_template_id.font_name:
doc_style.font.name = str(docx_template_id.font_name)
if docx_template_id.font_size != 0:
doc_style.font.size = Pt(docx_template_id.font_size)
#Table code
row_number = False
for table in doc.tables:
row_number = 0
del_row_number = False
##
last_added_rows = []#after o2m add remaining lines of tbl
need_update_index = False#execute o2m then is true
new_lines = []#o2m lines store
##
for row in table.rows:
###
if need_update_index:
new_row = copy.deepcopy(table._tbl.tr_lst[row_number])
if table._tbl.tr_lst[row_number] in new_lines and row_number > 1:
new_row = self.copy_last_added_rows(table._tbl.tr_lst, new_lines, row_number)
for tc in new_row.tc_lst:
cell = _Cell(tc, new_row.tc_lst)
last_added_rows.append(new_row)
###
column_names = []
lines = False
for cell in row.cells:
if '$' in str(cell.text):
split_vals = str(cell.text).split('$')
main_field = split_vals[1]
sub_split_vals = ''
if '.' in split_vals[1]:
sub_split_vals = str(split_vals[1]).split('.')
main_field = sub_split_vals[0]
sub_split_vals.remove(main_field)
Model = self.env["ir.model"]
Fields = self.env["ir.model.fields"]
model_id = Model.search([('model','=',active_model)])
get_field = Fields.search([('name','=',str(main_field)),('model_id','=',model_id.id)])
if get_field:
if get_field.ttype == 'one2many':
lines = rec[get_field.name]
##make list of table columns
if not column_names:
column = len(row.cells)
for i in range(1, column + 1):
for cell in row.cells:
new_cell = cell
if '$'+str(main_field)+'.' in str(new_cell.text):
split_vals = str(new_cell.text).split('$'+str(main_field)+'.')
split_vals = '$'+split_vals[1]
column_names.append(split_vals)
else:#also add blank column too
column_names.append(new_cell.text)
del_row_number = row_number
break
if lines:
need_update_index = True#
else:
use_existing = True
if need_update_index:#
pass
else:
res_value = self.get_value_func(rec,active_model, cell.text)
if str(type(res_value)) == "<class '_io.BytesIO'>":
#add img in normal table
paragraph = cell.paragraphs[0]
for p in paragraph.runs:
p.text = ''#remove text
self.get_image(paragraph,res_value)#add img
else:
if res_value:
cell.text = str(res_value)
else:
cell.text = ''
else:
cell.text = str(cell.text) + " " + "Wrong field"
if need_update_index and not lines:#not get_field
table_element = table._tbl
row_element = row._tr
for tc in row_element.tc_lst:
cell = _Cell(tc, row_element.tc_lst)
table_element.remove(row_element)
row_number -= 1
if lines:
#remove technical name field
#ex.$order_line.product_id,$order_line.name,$order_line.product_uom_qty,$order_line.tax_id...
if del_row_number == row_number:
use_existing = True
table_element = table._tbl
row_element = row._tr
table_element.remove(row_element)
row_number -= 1
for line in lines:
line_model = line._name
i = 0
#row_cells = table.add_row().cells#add new lines
new_row = table.add_row()
row_cells = new_row.cells
new_lines.append(new_row._tr)
for column_name in column_names:
res_value = self.get_value_func(line,line_model, column_name)
if str(type(res_value)) == "<class '_io.BytesIO'>":
#add img in o2m table
image = Image.open(res_value).convert("RGBA")
file_image = os.path.join(tempfile.gettempdir(), 'out1.png')
image.save(file_image)
paragraph = row_cells[i].paragraphs[0]
run = paragraph.add_run()
#set size of img cell in o2m table
from docx.shared import Inches
row_cells[i].width = Inches(3)
row_cells[i].height = Inches(2)
###
#add img in cell
run.add_picture(file_image,width=Inches(1),height=Inches(1))
else:
if res_value:
row_cells[i].text = str(res_value)#add value of new line's cell
else:
row_cells[i].text = ''
i += 1
use_existing = False
#lines = False
#else:
row_number += 1
if last_added_rows:#add rows after o2m
for new_row in last_added_rows:
i = 0
row_cells = table.add_row().cells
#print("\n\n")
for tc in new_row.tc_lst:
cell = _Cell(tc, new_row.tc_lst)
#print("cell.text",cell.text)
res_value = self.get_value_func(rec,active_model, cell.text)
if str(type(res_value)) == "<class '_io.BytesIO'>":
#add img after o2m table
image = Image.open(res_value).convert("RGBA")
file_image = os.path.join(tempfile.gettempdir(), 'out1.png')
image.save(file_image)
paragraph = row_cells[i].paragraphs[0]
run = paragraph.add_run()
#set size of img cell in o2m table
from docx.shared import Inches
cell.width = Inches(3)
cell.height = Inches(2)
###
#add img in cell
run.add_picture(file_image,width=Inches(1.5),height=Inches(1.5))
else:
if res_value:
row_cells[i].text = str(res_value)
else:
row_cells[i].text = ''
i += 1
#fnsh Table code
keys = docx_get_keys(doc)#get all keys in doc ${payment_term_id}, syntx = ${}
#print("keys==>",keys)
my_dict = {}#make custom-dict with value
for k in keys:
key = '$'+str(k)
value = self.get_value_func(rec, active_model, key)
my_dict[str(k)] = value
docx_replace(doc, **my_dict)#default package
#self.docx_replace(doc, my_dict)#use custom b'cz of binary field
output_path = os.path.join(tempfile.gettempdir(), 'final.docx')
os.makedirs(os.path.dirname(output_path), exist_ok=True)
doc.save(output_path)
input_file = os.path.join(tempfile.gettempdir(), 'final.docx')
output_file = os.path.join(tempfile.gettempdir(), 'final.pdf')
os.makedirs(os.path.dirname(output_file), exist_ok=True) #create directory if it doesn't exist
#os.system(
# f"soffice --headless --convert-to pdf --outdir {os.path.dirname(os.path.realpath(output_file))} {input_file}") # save as pdf
os_name = platform.system()
try:
if os_name == 'Linux':
os.system(f"libreoffice --headless --convert-to pdf {input_file} --outdir /tmp")
else:
os.system(f"soffice --headless --convert-to pdf:writer_pdf_Export {output_file} --outdir /tmp")
except:
_logger.error("\n\n An Exception occured \n\n")
if docx_template_id.skip_wizard:
docx_value = {
'name': docx_template_id.name,
'print_type': docx_template_id.print_type,
}
docx_template_wiz = self.env['docx.template.wiz'].create(docx_value)
return docx_template_wiz.with_context(docx_template_id=docx_template_id.id).download_file()
else:
return {
'name': _('Download or Attach Report'),
'res_model': 'docx.template.wiz',
'view_mode': 'form',
'context': {
'default_name': docx_template_id.name,
'default_print_type': docx_template_id.print_type,
'docx_template_id': docx_template_id.id,
},
'target': 'new',
'type': 'ir.actions.act_window',
}
def get_value_func(self, rec, active_model, cell_value): # record,model_name, value
res_value = False
if '$' in str(cell_value):
split_vals = str(cell_value).split('$')
main_field = split_vals[1]
# check sub field name exist or not partner_id.name
sub_split_vals = ''
if '.' in split_vals[1]:
sub_split_vals = str(split_vals[1]).split('.')
main_field = sub_split_vals[0]
sub_split_vals.remove(main_field)
Model = self.env["ir.model"]
Fields = self.env["ir.model.fields"]
model_id = Model.search([('model', '=', active_model)])
get_field = Fields.search([('name', '=', str(main_field)), ('model_id', '=', model_id.id)])
if get_field:
if sub_split_vals:
parent_model = rec[get_field.name]
model_id = Model.search([('model', '=', parent_model._name)])
# for sub_split_val in sub_split_vals:
while len(sub_split_vals):
sub_split_val = sub_split_vals[0]
get_field = Fields.search([('name', '=', str(sub_split_val)), ('model_id', '=', model_id.id)])
sub_split_vals.remove(sub_split_val)
if get_field and not sub_split_vals:
if get_field.ttype == 'many2one':
if parent_model[get_field.name]:
res_value = parent_model[get_field.name].display_name
else:
res_value = ''
elif get_field.ttype == 'selection':
selection_id = get_field.selection_ids.filtered(
lambda r: r.value == parent_model[get_field.name])
res_value = selection_id.name
elif get_field.ttype == 'many2many':
res_value = ', '.join(map(lambda x: x.name, parent_model[get_field.name]))
elif get_field.ttype == 'boolean':
if parent_model[get_field.name]:
res_value = 'Yes'
else:
res_value = 'No'
elif get_field.ttype == 'binary':
res_value = parent_model[get_field.name]
if res_value:
res_value = io.BytesIO(base64.b64decode(res_value))
elif get_field.ttype == 'float':
res_value = parent_model[get_field.name]
elif get_field.ttype == 'integer':
res_value = parent_model[get_field.name]
elif get_field.ttype == 'text':
if parent_model[get_field.name]:
res_value = parent_model[get_field.name]
else:
res_value = ''
elif get_field.ttype == 'monetary':
if rec.currency_id.position == 'before':
res_value = str(rec.currency_id.symbol) + str(parent_model[get_field.name])
else:
res_value = str(parent_model[get_field.name]) + str(rec.currency_id.symbol)
elif get_field.ttype == 'html':
if parent_model[get_field.name]:
#res_value = text_from_html(parent_model[get_field.name])
res_value = html2text.html2text(parent_model[get_field.name])
else:
res_value = ''
else:
if parent_model[get_field.name]:
res_value = parent_model[get_field.name]
else:
res_value = ''
if get_field and sub_split_vals:
parent_model = parent_model[get_field.name]
model_id = Model.search([('model', '=', parent_model._name)])
else: # not sub field
# print("get_field.ttype==>>",get_field.ttype)
if get_field.ttype == 'many2one':
if rec[get_field.name]:
res_value = rec[get_field.name].display_name
else:
res_value = ''
elif get_field.ttype == 'selection':
selection_id = get_field.selection_ids.filtered(lambda r: r.value == rec[get_field.name])
res_value = selection_id.name
elif get_field.ttype == 'many2many':
res_value = ', '.join(map(lambda x: x.name, rec[get_field.name]))
elif get_field.ttype == 'boolean':
if rec[get_field.name]:
res_value = 'Yes'
else:
res_value = 'No'
elif get_field.ttype == 'binary':
res_value = rec[get_field.name]
if res_value:
res_value = io.BytesIO(base64.b64decode(res_value))
elif get_field.ttype == 'float':
res_value = rec[get_field.name]
elif get_field.ttype == 'integer':
res_value = rec[get_field.name]
elif get_field.ttype == 'text':
if rec[get_field.name]:
res_value = rec[get_field.name]
else:
res_value = ''
elif get_field.ttype == 'monetary':
if rec.currency_id.position == 'before':
res_value = str(rec.currency_id.symbol) + str(rec[get_field.name])
else:
res_value = str(rec[get_field.name]) + str(rec.currency_id.symbol)
elif get_field.ttype == 'html':
if rec[get_field.name]:
#res_value = text_from_html(rec[get_field.name])
res_value = html2text.html2text(rec[get_field.name])
#print("res_value===>>",res_value,type(res_value))
else:
res_value = ''
else:
if rec[get_field.name]:
res_value = rec[get_field.name]
else:
res_value = ''
else: # not found field
res_value = str(cell_value) + " " + "Wrong field"
else:
res_value = cell_value
return res_value
def copy_last_added_rows(self, table_row_list, new_lines, row_number):
for i in range(1,len(table_row_list)):
if table_row_list[row_number] in new_lines:
row_number -= 1
else:
return table_row_list[row_number]
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="module_category_dynamic_docx_report" model="ir.module.category">
<field name="name">Dynamic Docx Report</field>
</record>
<record id="group_dynamic_docx_report_user" model="res.groups">
<field name="name">User</field>
<field name="category_id" ref="dynamic_docx_pdf_reports_omax.module_category_dynamic_docx_report"/>
</record>
<record id="group_dynamic_docx_report_manager" model="res.groups">
<field name="name">Manager</field>
<field name="implied_ids" eval="[(4, ref('group_dynamic_docx_report_user'))]"/>
<field name="category_id" ref="dynamic_docx_pdf_reports_omax.module_category_dynamic_docx_report"/>
</record>
</odoo>

View File

@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_docx_template,access_docx_template,dynamic_docx_pdf_reports_omax.model_docx_template,base.group_user,1,1,1,1
access_docx_template_wiz,access_docx_template_wiz,dynamic_docx_pdf_reports_omax.model_docx_template_wiz,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_docx_template access_docx_template dynamic_docx_pdf_reports_omax.model_docx_template base.group_user 1 1 1 1
3 access_docx_template_wiz access_docx_template_wiz dynamic_docx_pdf_reports_omax.model_docx_template_wiz base.group_user 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,294 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="oe_styling_v8">
<br/>
<div style="background:#efefef; font-family:LatoOpen Sans !important; color:black;">
<section class="oe_container oe_dark">
<div style="border-top:#252E64 solid 10px;"></div>
<div class="oe_row oe_spaced">
<center>
<span class="btn btn-sm mb-2 mb-lg-0" style="font-size:14px; font-weight:500; background-color:#159bd7; color:#fff"> Supported for</span>
<span class="btn btn-sm mb-2 mb-lg-0" style="font-size:14px; font-weight:500; background-color:#252E64; color:#fff"><i class="fa fa-check"></i> Community</span>
<span class="btn btn-sm mb-2 mb-lg-0" style="font-size:14px; font-weight:500; background-color:#252E64; color:#fff"><i class="fa fa-check"></i> Enterprise</span>
<span class="btn btn-sm mb-2 mb-lg-0" style="font-size:14px; font-weight:500; background-color:#252E64; color:#fff"><i class="fa fa-check"></i> Odoo.sh</span>
</center>
<br/>
<h1 style="padding-top: 0%;font-weight: 1000;color: #252e64 !important;margin-bottom:18px;">
<center>Dynamic Docx Pdf Reports</center><br/>
</h1>
<center><div style="width: 50%; border-top:#252E64 solid 10px;"></div></center>
<div class="oe_slogan" style="margin:5px 0 !important;">
<a href="https://www.omaxinformatics.com" target="new">
<img src="omax.png" style="width: 190px; margin-bottom: 0px;" class="center-block">
<img src="odoo_learning_partner_rgb.png" style="width: 190px; margin-bottom: 0px;" class="center-block">
</a>
</div>
</div>
<div style="border-top:#252E64 solid 10px;"></div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="font-size:30px;"><b><u>Overview</u></b></h2>
<p style="font-size: 30px;">
This App allows to Download or Attachment <b>Docx/Pdf Report</b> of <b>any Model(standard and custom)</b>. User can design docx template and add fields by themselves so, they have option to add whichever fields they want and use default docx features to format the report template.
</p>
</div>
</section>
<section class="oe_container ">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="font-size:30px;"><b><u>Features</u></b></h2>
<div style="font-size: 25px;">
<ul class="list-unstyled mr32 ml32">
<li><i class="fa fa-check" style="color: #252E64;">Create new record to add new report for any model.</i></li>
<li><i class="fa fa-check" style="color: #252E64;">Print or Attach docx or pdf report for any model.</i></li>
<li><i class="fa fa-check" style="color: #252E64;">User can design template and add fields by them selves.</i></li>
<li><i class="fa fa-check" style="color: #252E64;">User can print or attach any report which is configured.</i></li>
<li><i class="fa fa-check" style="color: #252E64;">Manager has access to create new report and can also create/design docx template and use it.</i></li>
<li><i class="fa fa-check" style="color: #252E64;">Report option available only in form view.</i></li>
<i class="fa fa-check" style="color: #252E64;">Please check below instructions and <i class="fa-brands fa-youtube"><a href="https://youtu.be/gaY95WFdbL0">Video<a> for more Details</i></i></li>
</ul>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="font-size:30px;"><b><u>How It Works</u></b></h2>
<div class="oe_bg_img">
<p style="font-size:25px;text-align:center;color:#252E64;font-weight:bold;">Dynamic Docx Report Configuration.</p><br/>
<center>
<img src="1.png" style="width:100%;border:5px solid #252E64;">
<br/><br/>
</center>
<p style="font-size:25px;text-align:center;color:#252E64;font-weight:bold;">Docx Template Record.</p><br/>
<center>
<img src="2.png" style="width:100%;border:5px solid #252E64;">
</center>
<br/><br/>
<p style="font-size:25px;text-align:center;color:#252E64;font-weight:bold;">Help for create template in Record.</p><br/>
<center>
<img src="2_1.png" style="width:100%;border:5px solid #252E64;">
</center>
<br/><br/>
<!-- sale-->
<p style="font-size:25px;text-align:center;color:#252E64;font-weight:bold;">Sale order template.</p><br/>
<p style="font-size:22px;text-align:center;color:#252E64;font-weight:bold;">Custom uploaded docs template.</p><br/>
<center>
<img src="s1.png" style="width:100%;border:5px solid #252E64;">
</center>
<br/><br/>
<p style="font-size:22px;text-align:center;color:#252E64;font-weight:bold;">Report menu.</p><br/>
<center>
<img src="s2.png" style="width:100%;border:5px solid #252E64;">
</center>
<br/><br/>
<p style="font-size:22px;text-align:center;color:#252E64;font-weight:bold;">Download or Attach report popup if not enable skip print pop-up configuration else print report directly.</p><br/>
<p style="font-size:20px;text-align:center;color:#252E64;font-weight:bold;">Option to download report as a docx or pdf.</p><br/>
<center>
<img src="s3.png" style="width:100%;border:5px solid #252E64;">
</center>
<p style="font-size:22px;text-align:center;color:#252E64;font-weight:bold;">Download docs report.</p><br/>
<center>
<img src="s4.png" style="width:100%;border:5px solid #252E64;">
</center>
<br/><br/>
<p style="font-size:22px;text-align:center;color:#252E64;font-weight:bold;">Download pdf report.</p><br/>
<center>
<img src="s5.png" style="width:100%;border:5px solid #252E64;">
</center-->
<br/><br/>
<p style="font-size:20px;text-align:center;color:#252E64;font-weight:bold;">Option to attach report as a docx or pdf.</p><br/>
<center>
<img src="s6.png" style="width:100%;border:5px solid #252E64;">
</center><br/>
<p style="font-size:22px;text-align:center;color:#252E64;font-weight:bold;">Attach docs report.</p><br/>
<center>
<img src="s7.png" style="width:100%;border:5px solid #252E64;">
</center><br/>
<p style="font-size:22px;text-align:center;color:#252E64;font-weight:bold;">Attach pdf report.</p><br/>
<center>
<img src="s8.png" style="width:100%;border:5px solid #252E64;">
</center>
<!-- -->
<br/>
<!-- purchase-->
<p style="font-size:25px;text-align:center;color:#252E64;font-weight:bold;">Purchase order template.</p><br/>
<p style="font-size:22px;text-align:center;color:#252E64;font-weight:bold;">Custom uploaded docs template.</p><br/>
<center>
<img src="p1.png" style="width:100%;border:5px solid #252E64;">
</center>
<br/><br/>
<p style="font-size:22px;text-align:center;color:#252E64;font-weight:bold;">Download docs report.</p><br/>
<center>
<img src="p2.png" style="width:100%;border:5px solid #252E64;">
</center>
<br/><br/>
<p style="font-size:22px;text-align:center;color:#252E64;font-weight:bold;">Download pdf report.</p><br/>
<center>
<img src="p3.png" style="width:100%;border:5px solid #252E64;">
</center-->
<br/><br/>
<!-- -->
<br/>
<!-- Invoice-->
<p style="font-size:25px;text-align:center;color:#252E64;font-weight:bold;">Customer Invoice template.</p><br/>
<p style="font-size:22px;text-align:center;color:#252E64;font-weight:bold;">Custom uploaded docs template.</p><br/>
<center>
<img src="i1.png" style="width:100%;border:5px solid #252E64;">
</center>
<br/><br/>
<p style="font-size:22px;text-align:center;color:#252E64;font-weight:bold;">Download docs report.</p><br/>
<center>
<img src="i2.png" style="width:100%;border:5px solid #252E64;">
</center>
<br/><br/>
<p style="font-size:22px;text-align:center;color:#252E64;font-weight:bold;">Download pdf report.</p><br/>
<center>
<img src="i3.png" style="width:100%;border:5px solid #252E64;">
</center-->
<br/><br/>
</div>
<h4 class="oe_slogan" style="font-size:30px; color:#de0d0d;"><b><u> Notes </u></b></h4>
<!-- ::before ::after-->
<ul style="font-size: 16px;">
<li style="color: #de0d0d;font-size:20px;">Header and Footer contents will not support fields.</li>
<li style="color: #de0d0d;font-size:20px;">Formating in table will not work</li>
<li style="color: #de0d0d;font-size:20px;">Merge cell in table will not work</li>
<li style="color: #de0d0d;font-size:20px;">Fields Label and value must be in separate cell require(if using inside table) otherwise only value will be printed</li>
<li style="color: #de0d0d;font-size:20px;">Image field will work only in table</li>
<li style="color: #de0d0d;font-size:20px;">Font name and Font size will be used for the dynamic values of Table</li>
<li style="color: #de0d0d;font-size:20px;">If Font name and Font size is not set in docx template configuration then it will be used font and size which is configured in uploaded document(file)</li>
</ul>
</div>
</section>
<!-- -->
<section style="margin: 50px 0;background-color: transparent;">
<div class="container">
<div class="text-center">
<div class="text-center mb-3">
<h4 style="font-size:25px;text-align:center;color:#252E64;font-weight:bold;">Multi-Languages-Support</h4>
</div>
<div class="content" style="font-size: 25px;">
We have added translations for below languages in this module with the help of DeepL Translator and Google Translate,Please let us know if you want to change it or wanted to add translation for new languages on <a href="mailto:omaxinformatics@gmail.com.com">omaxinformatics@gmail.com</a>
<br/><br/>
</div>
</div>
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-12">
<div style="text-align: center;">
<img src="french.png" title="French / Français" style="margin: 5px 5px;border-radius: 0.50rem !important;" />
<img src="spanish.png" title="Spanish / Español" style="margin: 5px 5px;border-radius: 0.50rem !important;" />
<img src="german.png" title="German / Deutsch" style="margin: 5px 5px;border-radius: 0.50rem !important;" />
<img src="chinese.png" title="Chinese (Simplified) / 简体中文" style="margin: 5px 5px;border-radius: 0.50rem !important;" />
<img src="arabic.png" title="Arabic" style="margin: 5px 5px;border-radius: 0.50rem !important;" />
</div>
</div>
</div>
</div>
</section>
<!-- -->
<section class="oe_container ">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="font-size:30px;"><b><u>Free Support</u></b></h2>
<div style="font-size: 16px;">
<ul class="list-unstyled mr32 ml32">
<center>You will get <b>30 Days</b> free support incase any bugs or issue (Except data recovery).</center><br/>
</ul>
</div>
</div>
</section>
<section class="oe_container ">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="font-size:30px;"><b><u>Get In Touch</u></b></h2>
<div style="border-top:#252E64 solid 10px;"></div>
<div class="oe_slogan" style="margin-top:10px !important;">
<a href="https://www.omaxinformatics.com" target="new">
<img src="omax.png" style="width: 190px; margin-bottom: 20px;" class="center-block">
<img src="odoo_learning_partner_rgb.png" style="width: 190px; margin-bottom: 20px;" class="center-block">
</a>
</div>
<div class="oe_slogan" style="margin-top:10px !important;">
<a class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important; background-color: #252E64;"
target="new" href="https://www.youtube.com/@omaxinformatics7137/videos">
<i class="fa fa-check-square"></i> Video Tutorial
</a>
<a class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important; background-color: #252E64;"
target="new"
href="https://apps.odoo.com/apps/modules/browse?order=Best+Sellers&search=OMAX+Informatics">
<i class="fa fa-binoculars"></i> More Apps
</a>
</div>
<div class="table-responsive">
<table class="table" cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody>
<tr>
<td colspan="2" style="font-size:16px; font-weight:bold;" width="100%" align="center">
<span class="fa fa-certificate fa-1x"> Our Odoo Services</span>
</td>
</tr>
</tbody>
</table>
<table class="table" cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody>
<tr>
<td style="background-color: #252E64; color:white; border-radius: 15px; font-weight: bold;"><center><span class="fa fa-globe fa-1x"> Implementation</span></center></td>
<td style="background-color: #252E64; color:white; border-radius: 15px; font-weight: bold;"><center><span class="fa fa-globe fa-1x"> Development</span></center></td>
<td style="background-color: #252E64; color:white; border-radius: 15px; font-weight: bold;"><center><span class="fa fa-globe fa-1x"> Customization</span></center></td>
<td style="background-color: #252E64; color:white; border-radius: 15px; font-weight: bold;"><center><span class="fa fa-globe fa-1x"> Migration</span></center></td>
</tr>
<tr>
<td style="background-color: #252E64; color:white; border-radius: 15px; font-weight: bold;"><center><span class="fa fa-globe fa-1x"> Integration</span></center></td>
<td style="background-color: #252E64; color:white; border-radius: 15px; font-weight: bold;"><center><span class="fa fa-globe fa-1x"> Training</span></center></td>
<td style="background-color: #252E64; color:white; border-radius: 15px; font-weight: bold;"><center><span class="fa fa-globe fa-1x"> Support</span></center></td>
<td style="background-color: #252E64; color:white; border-radius: 15px; font-weight: bold;"><center><span class="fa fa-globe fa-1x"> Hire Developer</span></center></td>
</tr>
</tbody>
</table>
<br/>
<table class="table" cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody>
<tr>
<td colspan="2" style="font-size:16px; font-weight:bold;" width="100%" align="center">
<span class="fa fa-certificate fa-1x"> For support, query and question contact us.</span>
</td>
</tr>
</tbody>
</table>
<table class="table" cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody>
<tr>
<td style="background-color: #252E64; color:white; border-radius: 15px; font-weight: bold;"><center><span class="fa fa-envelope fa-1x"> contact@omaxinformatics.com</span></center></td>
<td style="background-color: #252E64; color:white; border-radius: 15px; font-weight: bold;"><center><span class="fa fa-globe fa-1x"> www.omaxinformatics.com</span></center></td>
</tr>
</tbody>
</table>
</div>
<br/>
<div style="border-top:#252E64 solid 10px;"></div>
</div>
</section>
<section class="oe_container ">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="font-size:30px; color:#252E64"><b>Thank you for visiting</b></h2>
</div>
</section>
</div>
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

View File

@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<!-- Wizard Form view -->
<record id="view_docx_template_form" model="ir.ui.view">
<field name="name">docx.template.form</field>
<field name="model">docx.template</field>
<field name="arch" type="xml">
<form string="Docx Template Detail">
<group>
<group>
<field name="model_id" />
<field name="docx_file" filename="file_name" />
<field name="name" />
<field name="font_name" />
<field name="font_size" />
<field name="ir_actions_server_id" invisible="1" />
<field name="new_docx_file" invisible="1" />
<field name="file_name" invisible="1" />
<field name="print_type" widget="radio" />
<field name="skip_wizard" />
</group>
</group>
<notebook>
<page string="Help" name="help">
<!--span
colspan="2"-->
<i class="fa fa-info fa-3x text-info float-start" role="img"
aria-label="Info" title="Info" />
<h3>When create docs template then please follow below instructions.</h3>
<!--/span-->
<div><!-- colspan="2" -->
<p> Detailed template: <ol>
<li>User needs value from the record then use
'$\{field_technical_name\}', Ex. $\{name\},
$\{payment_term_id\}, $\{company_id\}</li>
<li>If we need value in table then use '$' sign and then
field_technical_name. Ex $order_line.name, $partner_id</li>
</ol>
</p>
<img
src="/dynamic_docx_pdf_reports_omax/static/description/template_guide.png"
style="max-height:250pt;max-width:100%;" height="220%"
width="80%" alt="Table Example" />
</div>
</page>
<page string="Available Fields" name="available_fields">
<field name="field_ids" nolabel="1" colspan="2">
<list>
<field name="name" />
<field name="field_description" />
<field name="ttype" />
</list>
<form>
<group>
<group>
<field name="name" />
<field name="field_description" />
</group>
<group>
<field name="ttype" />
</group>
</group>
</form>
</field>
</page>
</notebook>
</form>
</field>
</record>
<record id="view_docx_template_tree" model="ir.ui.view">
<field name="name">docx.template.tree</field>
<field name="model">docx.template</field>
<field name="arch" type="xml">
<list string="Docx Template Detail">
<field name="name" />
<field name="model_id" />
</list>
</field>
</record>
<record id="action_docx_template" model="ir.actions.act_window">
<field name="name">Docx Template</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">docx.template</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="action_docx_template_main_menu_id" name="Docx Template" sequence="104"
groups="dynamic_docx_pdf_reports_omax.group_dynamic_docx_report_manager"
web_icon="dynamic_docx_pdf_reports_omax,static/description/icon.png" />
<menuitem id="action_docx_template_menu_id" name="Docx Template Detail"
action="action_docx_template"
parent="dynamic_docx_pdf_reports_omax.action_docx_template_main_menu_id" sequence="1" />
</data>
</odoo>

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="action_print_employee_contract" model="ir.actions.server">
<field name="name">Print Employee Contract</field>
<field name="model_id" ref="hr_contract.model_hr_contract"/>
<field name="state">code</field>
<field name="code">
action = env['docx.template'].with_context(menu_action_id=env['docx.template'].search([('model_id.model', '=', 'hr.contract')], limit=1).id).print_employee_contract_action(records)
</field>
</record>
<record id="view_hr_contract_form_dynamic_docx_pdf_reports" model="ir.ui.view">
<field name="name">hr.contract.form.dynamic.docx.print</field>
<field name="model">hr.contract</field>
<field name="inherit_id" ref="hr_contract.hr_contract_view_form"/>
<field name="arch" type="xml">
<header>
<button name="%(dynamic_docx_pdf_reports_omax.action_print_employee_contract)d"
type="action"
string="Print Contract"
class="oe_highlight"
icon="fa-print"/>
</header>
</field>
</record>
</odoo>

View File

@ -0,0 +1,6 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import docx_template_wiz
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,63 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models, _
import base64
import os
import tempfile
class DocxTemplateWiz(models.TransientModel):
_name= "docx.template.wiz"
_description= "docx.template.wiz"
print_type = fields.Selection(selection=[
('docx', 'DOCX'),
('pdf', 'PDF'),
], default='docx', required=True)
name = fields.Char("Report File Name", size=64, readonly=True)
attachment = fields.Boolean(string='Attachment', default=False)
def download_file(self):
docx_id = self.env.context.get('docx_template_id')
docx_template_id = self.env["docx.template"].browse(docx_id)
file = False
filename = False
mime_type = False
if self.print_type == 'pdf':
file_path_pdf = os.path.join(tempfile.gettempdir(), 'final.pdf')
file = open(file_path_pdf, "rb")
filename = str(docx_template_id.name)+'.pdf'
mime_type = 'application/pdf'
if self.print_type == 'docx':
file_path_docx = os.path.join(tempfile.gettempdir(), 'final.docx')
os.makedirs(os.path.dirname(file_path_docx), exist_ok=True)
file = open(file_path_docx, "rb")
filename = str(docx_template_id.name)+'.docx'
mime_type = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
if file and filename:
file_data = file.read()
out = base64.encodebytes(file_data)
docx_template_id.write({'new_docx_file':out})
if mime_type and self.attachment:
active_model = self._context.get('active_model')
active_id = self._context.get('active_id')
#active_id
attachment = self.env['ir.attachment'].sudo().create({
'name': filename,
'type': 'binary',
'datas': out,
'mimetype': mime_type,
'res_model':active_model,
'res_id':active_id,
})
return {'type': 'ir.actions.act_window_close'}
return {
'type': 'ir.actions.act_url',
'url': 'web/content/?model=docx.template&download=true&field=new_docx_file&id=%s&filename=%s' % (docx_template_id.id, filename),
#'target': 'self',
'target': 'new',
}
#vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="view_docx_template_wiz_form" model="ir.ui.view">
<field name="name">docx.template.wiz.form</field>
<field name="model">docx.template.wiz</field>
<field name="arch" type="xml">
<form string="Download or Attach Report">
<group>
<group>
<field name="print_type" string="Report type" widget="radio" invisible="attachment == True"/>
<field name="print_type" string="Attachment type" widget="radio" invisible="attachment == False"/>
<field name="attachment"/>
</group>
<group></group>
</group>
<footer>
<button string='Download' name="download_file" type="object" class="btn-primary" invisible="attachment == True"/>
<button string="Cancel" class="btn-default" special="cancel"/>
<button string='Attachment' name="download_file" type="object" class="btn-primary" invisible="attachment == False"/>
</footer>
</form>
</field>
</record>
</data>
</odoo>

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
# comment
"""The Odoo Exceptions module defines a few core exception types.
Those types are understood by the RPC layer.