diff --git a/donation/tests/test_donation.py b/donation/tests/test_donation.py index 3339e94da..0c67c8685 100644 --- a/donation/tests/test_donation.py +++ b/donation/tests/test_donation.py @@ -15,10 +15,18 @@ class TestDonation(TransactionCase): def setUp(self): super().setUp() + donation_debit_order_account = self.env["account.account"].create( + { + "code": "1013Don", + "name": "Account Receivable Don", + "account_type": "asset_receivable", + } + ) self.bank_journal = self.env["account.journal"].create( { "type": "bank", "name": "test bank journal", + "donation_debit_order_account_id": donation_debit_order_account.id, } ) self.payment_mode = self.env["account.payment.mode"].create( diff --git a/donation_certificate/README.rst b/donation_certificate/README.rst new file mode 100644 index 000000000..20588bcfb --- /dev/null +++ b/donation_certificate/README.rst @@ -0,0 +1,108 @@ +===================== +Donation Certificate +===================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:31c48232bdc364a467057018cc5756125fa1ed080631b75f3d8beed95f7a6994 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fdonation-lightgray.png?logo=github + :target: https://github.com/OCA/donation/tree/16.0/donation_direct_debit + :alt: OCA/donation +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/donation-16-0/donation-16-0-donation_direct_debit + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/donation&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +The Donation Certificate module provides users with the capability to customize certificates to be sent to donors. +These certificates are linked to fields within the "donation.donation" +model and are formatted as ODT files for easy editing. +Additionally, this module enables users to send certificates in bulk and print them. + +**Table of contents** + +.. contents:: + :local: + +Features +============= + +* **Customization**: Users can personalize certificates to be sent to donors, tailoring them to specific donation details. +* **Integration**: The module seamlessly integrates with the "donation.donation" model, ensuring accurate and relevant information on the certificates. +* **ODT Format**: Certificates are generated in the ODT format, facilitating easy editing using standard office software. +* **Mass Sending**: Users have the option to send certificates to multiple donors simultaneously, streamlining the process for efficiency. +* **Printing**: The module supports printing functionality, allowing users to produce physical copies of certificates as needed. + +Usage +===== + +Once installed, users can access the Donation Certificate functionality through the Odoo interface. Here's a brief overview of how to use the module: + +1. Navigate to the Donation Certificate section in the Odoo interface. +2. Customize the certificate template as desired, ensuring it reflects the necessary donation information. +3. Select the donors to whom the certificates should be sent. +4. Send the certificates individually or in bulk. +5. Optionally, print physical copies of the certificates for distribution. + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Akretion + +Contributors +~~~~~~~~~~~~ + +* Alexis de Lattre + +Maintainers +~~~~~~~~~~~ + +This module is maintained by brendajfa. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-brendajfa| image:: https://github.com/alexis-via.png?size=40px + :target: https://github.com/alexis-via + :alt: alexis-via + +Current `maintainer `__: + +|maintainer-brendajfa| + +This module is part of the `OCA/donation `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/donation_certificate/__init__.py b/donation_certificate/__init__.py new file mode 100644 index 000000000..082fa1746 --- /dev/null +++ b/donation_certificate/__init__.py @@ -0,0 +1,4 @@ +# Copyright +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from . import models +from . import wizard diff --git a/donation_certificate/__manifest__.py b/donation_certificate/__manifest__.py new file mode 100644 index 000000000..938af19b3 --- /dev/null +++ b/donation_certificate/__manifest__.py @@ -0,0 +1,28 @@ +# Copyright +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Donation Certificate", + "summary": "Donation Certificate", + "version": "16.0.1.0.0", + "category": "Custom", + "website": "https://github.com/OCA/donation", + "author": "Barroux Abbey, Akretion, Odoo Community Association (OCA)", + "maintainers": ["brendajfa"], + "license": "AGPL-3", + "application": True, + "installable": True, + "depends": ["report_py3o", "donation", "donation_base", "mail"], + "data": [ + "security/ir.model.access.csv", + "data/mail_template.xml", + "data/donation_sequence.xml", + "data/py3o_certificate_template.xml", + "views/donation_certificate_send_views.xml", + "views/tax_receipt_donation.xml", + "views/donation_send_cert_button.xml", + "views/py3o_certificate_report.xml", + "wizard/tax_receipt_annual_create_view.xml", + "wizard/tax_receipt_print_view.xml", + ], +} diff --git a/donation_certificate/data/donation_sequence.xml b/donation_certificate/data/donation_sequence.xml new file mode 100644 index 000000000..a890f273f --- /dev/null +++ b/donation_certificate/data/donation_sequence.xml @@ -0,0 +1,12 @@ + + + + + Donation + donation.donation + DON-%(range_year)s- + 4 + + + + diff --git a/donation_certificate/data/mail_template.xml b/donation_certificate/data/mail_template.xml new file mode 100644 index 000000000..389bd5b24 --- /dev/null +++ b/donation_certificate/data/mail_template.xml @@ -0,0 +1,45 @@ + + + + + Donation: Certificate + + + {{ object.company_id.email }} + {{ object.partner_id.email }} + Donation Certificate + Donation Certificate + +
+

+ Dear + Donor name, +
+
+ We want to express our sincere gratitude for your generous donation of + $ 143,750.00 + to our organization. This contribution is a testament to your commitment and trust in our work. +
+
+ With this collaboration you help us move forward with our mission. We sincerely appreciate your support. +
+
+ Cordially, +
+
+ + -- +
+ Association name +
+

+
+
+ + {{ object.partner_id.lang }} + Donation Certificate +
+
diff --git a/donation_certificate/data/py3o_certificate_template.xml b/donation_certificate/data/py3o_certificate_template.xml new file mode 100644 index 000000000..4fe9247a1 --- /dev/null +++ b/donation_certificate/data/py3o_certificate_template.xml @@ -0,0 +1,36 @@ + + + + + Donation Certificate ES + odt + report/PDA34_Certificat_de_donacions_ES.odt + + + + Donation Certificate CAT + odt + report/PDA34_Certificat_de_donacions_CAT.odt + + + + Donation Certificate FR + odt + report/PDA34_Certificat_de_donacions_FR.odt + + + + Donation Certificate EN + odt + report/PDA34_Certificat_de_donacions_EN.odt + + + diff --git a/donation_certificate/models/__init__.py b/donation_certificate/models/__init__.py new file mode 100644 index 000000000..bf2ad5dc1 --- /dev/null +++ b/donation_certificate/models/__init__.py @@ -0,0 +1,4 @@ +from . import py3o_report +from . import py3o_template +from . import donation +from . import donation_tax_receipt diff --git a/donation_certificate/models/donation.py b/donation_certificate/models/donation.py new file mode 100644 index 000000000..1ac88e337 --- /dev/null +++ b/donation_certificate/models/donation.py @@ -0,0 +1,77 @@ +from odoo import _, fields, models +from odoo.exceptions import ValidationError +from odoo.tools import get_lang + + +class Donation(models.Model): + _inherit = "donation.donation" + + is_certificate_send = fields.Boolean( + help="This field automatically becomes active when " + "the thanks letter has been send.", + ) + attachment_ids = fields.One2many( + "ir.attachment", + "res_id", + domain=[("res_model", "=", "donation.donation")], + string="Attachments", + ) + + def action_send_certificate(self): + self.ensure_one() + if not self.tax_receipt_id and self.tax_receipt_option == "annual": + raise ValidationError(_("Annual receipt has not been generated yet.")) + self.write({"is_certificate_send": True}) + template = self.env.ref(self._get_mail_template(), raise_if_not_found=False) + lang = False + if template: + lang = template._render_lang(self.ids)[self.id] + if not lang: + lang = get_lang(self.env).code + compose_form = self.env.ref( + "donation_certificate.donation_certificate_send_wizard_form", + raise_if_not_found=False, + ) + ctx = dict( + default_model="donation.tax.receipt", + default_res_id=self.tax_receipt_id.id, + default_res_model="donation.tax.receipt", + default_use_template=bool(template), + default_template_id=template and template.id or False, + default_composition_mode="comment", + mark_invoice_as_sent=True, + default_email_layout_xmlid=( + "mail.mail_notification_layout_with_responsible_signature" + ), + force_email=True, + active_ids=self.tax_receipt_id.ids, + ) + report_action = { + "name": _("Send Certificate"), + "type": "ir.actions.act_window", + "view_type": "form", + "view_mode": "form", + "res_model": "donation.certificate.send", + "views": [(compose_form.id, "form")], + "view_id": compose_form.id, + "target": "new", + "context": ctx, + } + return report_action + + def action_print_tax_receipt(self): + """Print the certificate and mark it as sent, so that we can see more + easily the next step of the workflow + """ + self.filtered(lambda r: not r.is_certificate_send).write( + {"is_certificate_send": True} + ) + return self.env.ref( + "donation_certificate.donation_certificate_report_py3o" + ).report_action(self) + + def _get_mail_template(self): + """ + :return: the correct mail template based on the current move type + """ + return "donation_certificate.email_template_donation_certificate" diff --git a/donation_certificate/models/donation_tax_receipt.py b/donation_certificate/models/donation_tax_receipt.py new file mode 100644 index 000000000..78ee2f26c --- /dev/null +++ b/donation_certificate/models/donation_tax_receipt.py @@ -0,0 +1,112 @@ +from odoo import _, api, fields, models +from odoo.tools import get_lang + + +class DonationTaxReceipt(models.Model): + _inherit = "donation.tax.receipt" + + is_certificate_send = fields.Boolean( + help="This field automatically becomes active when " + "the thanks letter has been send.", + ) + attachment_ids = fields.One2many( + "ir.attachment", + "res_id", + domain=[("res_model", "=", "donation.tax.receipt")], + string="Attachments", + ) + amount_donation = fields.Monetary(tracking=True, compute="_compute_amounts") + amount_donation_in_kind_consu = fields.Monetary( + tracking=True, compute="_compute_amounts" + ) + amount_donation_in_kind_service = fields.Monetary( + tracking=True, compute="_compute_amounts" + ) + + @api.depends("donation_ids") + def _compute_amounts(self): + for rec in self: + amount_donation = 0 + amount_donation_in_kind_consu = 0 + amount_donation_in_kind_service = 0 + for donation in rec.donation_ids: + for line in donation.line_ids: + if line.product_id.detailed_type == "donation": + amount_donation = amount_donation + line.amount + elif line.product_id.detailed_type == "donation_in_kind_consu": + amount_donation_in_kind_consu = ( + amount_donation_in_kind_consu + line.amount + ) + else: + amount_donation_in_kind_service = ( + amount_donation_in_kind_service + line.amount + ) + rec.amount_donation = round(amount_donation, 2) + rec.amount_donation_in_kind_consu = round(amount_donation_in_kind_consu, 2) + rec.amount_donation_in_kind_service = round( + amount_donation_in_kind_service, 2 + ) + + def action_send_tax_receipt(self): + self.write({"is_certificate_send": True}) + template = self.env.ref(self._get_mail_template(), raise_if_not_found=False) + compose_form = self.env.ref( + "donation_certificate.donation_certificate_send_wizard_form", + raise_if_not_found=False, + ) + ctx = dict( + default_model="donation.tax.receipt", + default_res_model="donation.tax.receipt", + default_use_template=bool(template), + default_template_id=template and template.id or False, + default_composition_mode="comment", + mark_invoice_as_sent=True, + default_email_layout_xmlid=( + "mail.mail_notification_layout_with_responsible_signature" + ), + force_email=True, + active_ids=self.ids, + ) + report_action = { + "name": _("Send Certificate"), + "type": "ir.actions.act_window", + "view_type": "form", + "view_mode": "form", + "res_model": "donation.certificate.send", + "views": [(compose_form.id, "form")], + "view_id": compose_form.id, + "target": "new", + "context": ctx, + } + return report_action + + def get_ref_report_name(self, lang): + report_names = { + "es_ES": "donation_certificate.donation_certificate_report_py3o_ES", + "ca_ES": "donation_certificate.donation_certificate_report_py3o_CAT", + "fr_FR": "donation_certificate.donation_certificate_report_py3o_FR", + "en_GB": "donation_certificate.donation_certificate_report_py3o_EN", + } + + return report_names.get( + lang, "donation_certificate.donation_certificate_report_py3o_EN" + ) + + def action_print_tax_receipt(self): + """Print the certificate and mark it as sent, so that we can see more + easily the next step of the workflow + """ + today = fields.Date.context_today(self) + self.write({"print_date": today}) + self.filtered(lambda inv: not inv.is_certificate_send).write( + {"is_certificate_send": True} + ) + lang = get_lang(self.env).code + report_action_py3o = self.get_ref_report_name(lang) + return self.env.ref(report_action_py3o).report_action(self) + + def _get_mail_template(self): + """ + :return: the correct mail template based on the current move type + """ + return "donation_certificate.email_template_donation_certificate" diff --git a/donation_certificate/models/py3o_report.py b/donation_certificate/models/py3o_report.py new file mode 100644 index 000000000..5af5a5a40 --- /dev/null +++ b/donation_certificate/models/py3o_report.py @@ -0,0 +1,18 @@ +# Copyright 2013 XCG Consulting (http://odoo.consulting) +# Copyright 2016 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) +from odoo import models + + +class Py3oReport(models.TransientModel): + _inherit = "py3o.report" + + def _merge_results(self, reports_path): + self.ensure_one() + filetype = self.ir_actions_report_id.py3o_filetype + if not reports_path: + return False, False + if len(reports_path) == 1: + return reports_path[0], filetype + else: + return self._zip_results(reports_path), "zip" diff --git a/donation_certificate/models/py3o_template.py b/donation_certificate/models/py3o_template.py new file mode 100644 index 000000000..087b6e091 --- /dev/null +++ b/donation_certificate/models/py3o_template.py @@ -0,0 +1,37 @@ +from base64 import b64encode + +# import sys +import pkg_resources + +from odoo import api, fields, models + +# import os + + +class Py3oTemplate(models.Model): + _inherit = "py3o.template" + + py3o_template_fallback = fields.Char( + "Fallback", + size=128, + help=( + "If the user does not provide a template this will be used " + "it should be a relative path to root of YOUR module " + "or an absolute path on your server." + ), + ) + + @api.model_create_multi + def create(self, vals_list): + module = "donation_certificate" + vals = vals_list[0] + if vals["py3o_template_fallback"]: + flbk_filename = pkg_resources.resource_filename( + "odoo.addons.%s" % module, vals["py3o_template_fallback"] + ) + with open(flbk_filename, "rb") as tmpl: + tmpl_data = b64encode(tmpl.read()) + vals["py3o_template_data"] = tmpl_data + # if not rec.py3o_template_data: + # rec.py3o_template_data = False + return super().create([vals]) diff --git a/donation_certificate/report/PDA34_Certificat_de_donacions.odt b/donation_certificate/report/PDA34_Certificat_de_donacions.odt new file mode 100644 index 000000000..a8f19eb27 Binary files /dev/null and b/donation_certificate/report/PDA34_Certificat_de_donacions.odt differ diff --git a/donation_certificate/report/PDA34_Certificat_de_donacions_CAT.odt b/donation_certificate/report/PDA34_Certificat_de_donacions_CAT.odt new file mode 100644 index 000000000..a8f19eb27 Binary files /dev/null and b/donation_certificate/report/PDA34_Certificat_de_donacions_CAT.odt differ diff --git a/donation_certificate/report/PDA34_Certificat_de_donacions_EN.odt b/donation_certificate/report/PDA34_Certificat_de_donacions_EN.odt new file mode 100644 index 000000000..90ae41029 Binary files /dev/null and b/donation_certificate/report/PDA34_Certificat_de_donacions_EN.odt differ diff --git a/donation_certificate/report/PDA34_Certificat_de_donacions_ES.odt b/donation_certificate/report/PDA34_Certificat_de_donacions_ES.odt new file mode 100644 index 000000000..2c99a2b1a Binary files /dev/null and b/donation_certificate/report/PDA34_Certificat_de_donacions_ES.odt differ diff --git a/donation_certificate/report/PDA34_Certificat_de_donacions_FR.odt b/donation_certificate/report/PDA34_Certificat_de_donacions_FR.odt new file mode 100644 index 000000000..0710ff783 Binary files /dev/null and b/donation_certificate/report/PDA34_Certificat_de_donacions_FR.odt differ diff --git a/donation_certificate/security/ir.model.access.csv b/donation_certificate/security/ir.model.access.csv new file mode 100644 index 000000000..7583f62bd --- /dev/null +++ b/donation_certificate/security/ir.model.access.csv @@ -0,0 +1,7 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_donation_certificate_send,donation.certificate.send,donation_certificate.model_donation_certificate_send,base.group_user,1,1,1,1 +access_donation_donation,donation.donation,donation.model_donation_donation,base.group_user,1,1,1,1 +access_donation_tax_receipt,donation.tax.receipt,model_donation_tax_receipt,base.group_user,1,1,1,1 +access_tax_receipt_annual_create,tax.receipt.annual.create,model_tax_receipt_annual_create,base.group_user,1,1,1,1 +access_py3o_template,py3o.template,report_py3o.model_py3o_template,base.group_user,1,1,1,1 +access_donation_tax_receipt_print,donation.tax.receipt.print,donation_base.model_donation_tax_receipt_print,base.group_user,1,1,1,1 diff --git a/donation_certificate/static/description/icon.png b/donation_certificate/static/description/icon.png new file mode 100644 index 000000000..e8f0fcf0f Binary files /dev/null and b/donation_certificate/static/description/icon.png differ diff --git a/donation_certificate/views/donation_certificate_send_views.xml b/donation_certificate/views/donation_certificate_send_views.xml new file mode 100644 index 000000000..9e1a5cf11 --- /dev/null +++ b/donation_certificate/views/donation_certificate_send_views.xml @@ -0,0 +1,141 @@ + + + + donation.certificate.send.form + donation.certificate.send + + +
+ + + + + +
+ + + +
+ Preview as a PDF +
+
+
+ + + +
+
+ +
+
+
+ + +
+ + + + + + + + +
+
+
+ +
+
+
diff --git a/donation_certificate/views/donation_send_cert_button.xml b/donation_certificate/views/donation_send_cert_button.xml new file mode 100644 index 000000000..6f274f805 --- /dev/null +++ b/donation_certificate/views/donation_send_cert_button.xml @@ -0,0 +1,51 @@ + + + + + donation.form.view.form.inherit + donation.donation + + + + + + + + + + + + + + Send Certificate + + + + code + + if records: + action = records.action_send_tax_receipt() + + + + + donation.donation.tree.inherited + donation.donation + + + + + + + + diff --git a/donation_certificate/views/py3o_certificate_report.xml b/donation_certificate/views/py3o_certificate_report.xml new file mode 100644 index 000000000..77021a706 --- /dev/null +++ b/donation_certificate/views/py3o_certificate_report.xml @@ -0,0 +1,74 @@ + + + + + Donation Tax Receipt ES + donation.tax.receipt + py3o_donation_certificate_ES + py3o + pdf + + 'Fiscal_receipt-'+(object.number or '').replace('/','') + + + + + + Donation Tax Receipt CAT + donation.tax.receipt + py3o_donation_certificate_CAT + py3o + pdf + + 'Fiscal_receipt-'+(object.number or '').replace('/','') + + + + + Donation Tax Receipt FR + donation.tax.receipt + py3o_donation_certificate_FR + py3o + pdf + + 'Fiscal_receipt-'+(object.number or '').replace('/','') + + + + + Donation Tax Receipt EN + donation.tax.receipt + py3o_donation_certificate_EN + py3o + pdf + + 'Fiscal_receipt-'+(object.number or '').replace('/','') + + + + py3o.template.view.form.inherit + py3o.template + + + + + + + + + + diff --git a/donation_certificate/views/tax_receipt_donation.xml b/donation_certificate/views/tax_receipt_donation.xml new file mode 100644 index 000000000..2981bfe85 --- /dev/null +++ b/donation_certificate/views/tax_receipt_donation.xml @@ -0,0 +1,34 @@ + + + + + donation.tax.receipt.view.form.inherit + donation.tax.receipt + + +
+
+
+
+ + + donation.tax.receipt.view.form.inherit + donation.tax.receipt + + + + 1 + + + +
diff --git a/donation_certificate/wizard/__init__.py b/donation_certificate/wizard/__init__.py new file mode 100644 index 000000000..9dae7f968 --- /dev/null +++ b/donation_certificate/wizard/__init__.py @@ -0,0 +1,3 @@ +from . import donation_certificate_send +from . import tax_receipt_annual_create +from . import tax_receipt_print diff --git a/donation_certificate/wizard/donation_certificate_send.py b/donation_certificate/wizard/donation_certificate_send.py new file mode 100644 index 000000000..7e3c6a6d6 --- /dev/null +++ b/donation_certificate/wizard/donation_certificate_send.py @@ -0,0 +1,215 @@ +from odoo import _, api, fields, models +from odoo.exceptions import UserError +from odoo.tools.misc import get_lang + +from odoo.addons.mail.wizard.mail_compose_message import _reopen + + +class DonationCertificateSend(models.TransientModel): + _name = "donation.certificate.send" + _inherits = {"mail.compose.message": "composer_id"} + _description = "Donation Certificate Send" + + is_email = fields.Boolean( + "Email", default=lambda self: self.env.company.invoice_is_email + ) + donation_without_email = fields.Text( + compute="_compute_donation_without_email", + string="Donation(s) that will not be sent", + ) + is_print = fields.Boolean( + "Print", default=lambda self: self.env.company.invoice_is_print + ) + printed = fields.Boolean("Is Printed", default=False) + tax_receipt_ids = fields.Many2many( + "donation.tax.receipt", + "donation_tax_receipt_donation_certificate_send_rel", + string="Donations Tax Receipt", + ) + composer_id = fields.Many2one( + "mail.compose.message", required=True, ondelete="cascade" + ) + template_id = fields.Many2one( + "mail.template", + "Use template", + domain="[('model', '=', 'donation.tax.receipt'), ]", + default=lambda self: self._get_report_template(), + ) + + def _get_report_template(self): + template = self.env.ref( + "donation_certificate.email_template_donation_certificate", + raise_if_not_found=False, + ) + return template.id or False + + @api.model + def default_get(self, fields): + res = super(DonationCertificateSend, self).default_get(fields) + res_ids = self._context.get("active_ids") + + tax_receipts = self.env["donation.tax.receipt"].browse(res_ids) + if not tax_receipts: + raise UserError(_("You can only send invoices.")) + + composer = self.env["mail.compose.message"].create( + { + "composition_mode": "comment" if len(res_ids) == 1 else "mass_mail", + } + ) + res.update( + { + "tax_receipt_ids": res_ids, + "composer_id": composer.id, + } + ) + return res + + @api.onchange("tax_receipt_ids") + def _compute_composition_mode(self): + for wizard in self: + wizard.composer_id.composition_mode = ( + "comment" if len(wizard.tax_receipt_ids) == 1 else "mass_mail" + ) + + def get_ref_report_name(self, wizard_template_id_lang): + lang = list(wizard_template_id_lang.values())[0] + report_names = { + "es_ES": "donation_certificate.donation_certificate_report_py3o_ES", + "ca_ES": "donation_certificate.donation_certificate_report_py3o_CAT", + "fr_FR": "donation_certificate.donation_certificate_report_py3o_FR", + "en_GB": "donation_certificate.donation_certificate_report_py3o_EN", + } + report_name = report_names.get( + lang, "donation_certificate.donation_certificate_report_py3o_EN" + ) + + return self.env.ref(report_name, raise_if_not_found=False).id + + @api.onchange("template_id") + def onchange_template_id(self): + for wizard in self: + if wizard.composer_id: + # Hay que mirar porque el archivo se llama igual que el ID + # Get different report depending on the lang + lang_object = wizard.template_id.lang + render_model = wizard.template_id.render_model + res_ids = wizard.tax_receipt_ids.ids + lang = wizard.template_id._render_template( + lang_object, render_model, res_ids + ) + + wizard.template_id.report_template = self.get_ref_report_name(lang) + wizard.composer_id.template_id = wizard.template_id.id + # Get different report depending on the lang + wizard.composer_id.template_id.report_template = ( + self.get_ref_report_name(lang) + ) + wizard._compute_composition_mode() + wizard.composer_id._onchange_template_id_wrapper() + + @api.onchange("is_email") + def onchange_is_email(self): + if self.is_email: + res_ids = self._context.get("active_ids") + data = { + "composition_mode": "comment" if len(res_ids) == 1 else "mass_mail", + "template_id": self.template_id.id, + } + if not self.composer_id: + self.composer_id = self.env["mail.compose.message"].create(data) + else: + self.composer_id.write(data) + self._compute_composition_mode() + self.composer_id._onchange_template_id_wrapper() + + @api.onchange("is_email") + def _compute_donation_without_email(self): + for wizard in self: + if wizard.is_email and len(wizard.tax_receipt_ids) > 1: + tax_receipts = self.env["donation.tax.receipt"].search( + [ + ("id", "in", self.env.context.get("active_ids")), + ("partner_id.email", "=", False), + ] + ) + if tax_receipts: + wizard.donation_without_email = "%s\n%s" % ( + _( + "The following donation(s) will not be sent by email, " + "because the customers don't have email address." + ), + "\n".join([i.number for i in tax_receipts]), + ) + else: + wizard.donation_without_email = False + else: + wizard.donation_without_email = False + + def _send_email(self): + if self.is_email: + self.composer_id.with_context( + no_new_invoice=True, + mail_notify_author=self.env.user.partner_id + in self.composer_id.partner_ids, + mailing_document_based=True, + )._action_send_mail() + for tax_receipt in self.tax_receipt_ids: + prioritary_attachments = tax_receipt.attachment_ids.filtered( + lambda x: x.mimetype.endswith("pdf") + ) + if prioritary_attachments: + tax_receipt.with_context(tracking_disable=True).sudo().write( + {"message_main_attachment_id": prioritary_attachments[0].id} + ) + + def _print_certificate_document(self): + """to override for each type of models that will use this composer.""" + self.ensure_one() + action = self.tax_receipt_ids.action_print_tax_receipt() + + action.update({"close_on_report_download": True}) + return action + + def send_and_print_action(self): + self.ensure_one() + # Send the mails in the correct language by splitting the ids per lang. + # This should ideally be fixed in mail_compose_message, so when a fix + # is made there this whole commit should be reverted. + # basically self.body (which could be manually edited) extracts self.template_id, + # which is then not translated for each customer. + if self.composition_mode == "mass_mail" and self.template_id: + active_ids = self.env.context.get("active_ids", self.res_id) + active_records = self.env[self.model].browse(active_ids) + langs = set(active_records.mapped("partner_id.lang")) + for lang in langs: + active_ids_lang = active_records.filtered( + lambda r: r.partner_id.lang == lang + ).ids + self_lang = self.with_context( + active_ids=active_ids_lang, lang=get_lang(self.env, lang).code + ) + self_lang.onchange_template_id() + self_lang._send_email() + else: + active_record = self.env[self.model].browse(self.res_id) + lang = get_lang(self.env, active_record.partner_id.lang).code + self.with_context(lang=lang)._send_email() + if self.is_print: + return self._print_document() + return {"type": "ir.actions.act_window_close"} + + def save_as_template(self): + self.ensure_one() + self.composer_id.action_save_as_template() + self.template_id = self.composer_id.template_id.id + action = _reopen(self, self.id, self.model, context=self._context) + action.update({"name": _("Send Certificate")}) + return action + + def _print_document(self): + """to override for each type of models that will use this composer.""" + self.ensure_one() + action = self.tax_receipt_ids.action_print_tax_receipt() + action.update({"close_on_report_download": True}) + return action diff --git a/donation_certificate/wizard/tax_receipt_annual_create.py b/donation_certificate/wizard/tax_receipt_annual_create.py new file mode 100644 index 000000000..c328811da --- /dev/null +++ b/donation_certificate/wizard/tax_receipt_annual_create.py @@ -0,0 +1,18 @@ +from odoo import models + + +class TaxReceiptAnnualCreate(models.TransientModel): + _inherit = "tax.receipt.annual.create" + """ + Clase creada para cuando se me pida cambiar la vista o funcionamiento de + 'Crear recibos anuales', de momento no hace nada. + """ + + # @api.model + # def _prepare_annual_tax_receipt(self, partner, partner_dict): + # # wdb.set_trace() + # super()._prepare_annual_tax_receipt(partner, partner_dict) + + # def generate_annual_receipts(self): + # # wdb.set_trace() + # super().generate_annual_receipts() diff --git a/donation_certificate/wizard/tax_receipt_annual_create_view.xml b/donation_certificate/wizard/tax_receipt_annual_create_view.xml new file mode 100644 index 000000000..3c2e04257 --- /dev/null +++ b/donation_certificate/wizard/tax_receipt_annual_create_view.xml @@ -0,0 +1,17 @@ + + + + + diff --git a/donation_certificate/wizard/tax_receipt_print.py b/donation_certificate/wizard/tax_receipt_print.py new file mode 100644 index 000000000..f2df9b3f6 --- /dev/null +++ b/donation_certificate/wizard/tax_receipt_print.py @@ -0,0 +1,52 @@ +# Copyright 2014-2021 Barroux Abbey (http://www.barroux.org) +# Copyright 2014-2021 Akretion France (http://www.akretion.com/) +# @author: Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, fields, models +from odoo.exceptions import UserError +from odoo.tools import get_lang + + +class DonationTaxReceiptPrint(models.TransientModel): + _inherit = "donation.tax.receipt.print" + _description = "Print Donation Tax Receipts" + + lang = fields.Selection( + [ + ("es_ES", "Spanish"), + ("ca_ES", "Catalan"), + ("fr_FR", "French"), + ("en_GB", "English"), + ], + # readonly=True, + # copy=False, + # default="draft", + # index=True, + # tracking=True, + ) + + def print_receipts(self): + self.ensure_one() + if not self.receipt_ids: + raise UserError(_("There are no tax receipts to print.")) + today = fields.Date.context_today(self) + self.receipt_ids.write({"print_date": today}) + if self.lang: + lang = self.lang + else: + lang = get_lang(self.env).code + report_action_py3o = self.get_ref_report_name(lang) + return self.env.ref(report_action_py3o).report_action(self.receipt_ids) + + def get_ref_report_name(self, lang): + report_names = { + "es_ES": "donation_certificate.donation_certificate_report_py3o_ES", + "ca_ES": "donation_certificate.donation_certificate_report_py3o_CAT", + "fr_FR": "donation_certificate.donation_certificate_report_py3o_FR", + "en_GB": "donation_certificate.donation_certificate_report_py3o_EN", + } + + return report_names.get( + lang, "donation_certificate.donation_certificate_report_py3o_EN" + ) diff --git a/donation_certificate/wizard/tax_receipt_print_view.xml b/donation_certificate/wizard/tax_receipt_print_view.xml new file mode 100644 index 000000000..c4cd64a00 --- /dev/null +++ b/donation_certificate/wizard/tax_receipt_print_view.xml @@ -0,0 +1,42 @@ + + + + + donation_tax_receipt_print.form.inherit + donation.tax.receipt.print + + + 1 + + + + + + + + + + + + + + + + + + + + diff --git a/donation_direct_debit/tests/test_direct_debit.py b/donation_direct_debit/tests/test_direct_debit.py index 1120d001b..9358644ce 100644 --- a/donation_direct_debit/tests/test_direct_debit.py +++ b/donation_direct_debit/tests/test_direct_debit.py @@ -11,10 +11,18 @@ def test_direct_debit(self): dd_payment_mode = self.env.ref( "account_banking_sepa_direct_debit.payment_mode_inbound_sepa_dd1" ) + donation_debit_order_account = self.env["account.account"].create( + { + "code": "1013NEW", + "name": "Account Receivable NEW", + "account_type": "asset_receivable", + } + ) bank_journal = self.env["account.journal"].create( { "type": "bank", "name": "Bank account test", + "donation_debit_order_account_id": donation_debit_order_account.id, } ) dd_payment_mode.write( diff --git a/donation_letter/README.rst b/donation_letter/README.rst new file mode 100644 index 000000000..060083f5e --- /dev/null +++ b/donation_letter/README.rst @@ -0,0 +1,105 @@ +======================= +Donation Thanks Letter +======================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:31c48232bdc364a467057018cc5756125fa1ed080631b75f3d8beed95f7a6994 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fdonation-lightgray.png?logo=github + :target: https://github.com/OCA/donation/tree/16.0/donation_direct_debit + :alt: OCA/donation +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/donation-16-0/donation-16-0-donation_direct_debit + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/donation&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +The Donation Letter module facilitates the generation and distribution of personalized thank-you letters to donors. +Users can send these letters in bulk and also have the option to print them for offline distribution. + +**Table of contents** + +.. contents:: + :local: + +Features +============= + +* **Customization Thank-You Letters**: Users can create personalized thank-you letters tailored to individual donors, expressing gratitude for their contributions. +* **Bulk Sending**: The module allows users to send thank-you letters to multiple donors simultaneously, saving time and effort. +* **Integration**: Seamless integration with donor information ensures accuracy and relevance in the generated letters. +* **Printing Support**: Users have the ability to print thank-you letters directly from the system, enabling offline distribution and archiving. + +Usage +===== + +Once installed, users can utilize the Donation Letter functionality within the Odoo interface. Here's a brief guide on how to use the module: + +1. Navigate to the Donation Letter section in the Odoo interface. +2. Customize the thank-you letter template to convey the desired message of appreciation. +3. Select the donors for whom the thank-you letters should be generated. +4. Send the letters individually or in bulk. +5. Optionally, print physical copies of the letters for offline distribution or archival purposes. + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Akretion + +Contributors +~~~~~~~~~~~~ + +* Alexis de Lattre + +Maintainers +~~~~~~~~~~~ + +This module is maintained by brendajfa. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-brendajfa| image:: https://github.com/alexis-via.png?size=40px + :target: https://github.com/alexis-via + :alt: alexis-via + +Current `maintainer `__: + +|maintainer-brendajfa| + +This module is part of the `OCA/donation `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/donation_letter/__init__.py b/donation_letter/__init__.py new file mode 100644 index 000000000..082fa1746 --- /dev/null +++ b/donation_letter/__init__.py @@ -0,0 +1,4 @@ +# Copyright +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from . import models +from . import wizard diff --git a/donation_letter/__manifest__.py b/donation_letter/__manifest__.py new file mode 100644 index 000000000..b3fb715ab --- /dev/null +++ b/donation_letter/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Donation Thanks Letter", + "summary": "Donation Thanks Letter", + "version": "16.0.1.0.0", + "category": "Custom", + "website": "https://github.com/OCA/donation", + "author": "Barroux Abbey, Akretion, Odoo Community Association (OCA)", + "maintainers": ["brendajfa"], + "license": "AGPL-3", + "installable": True, + "depends": ["donation", "account", "mail", "donation_base"], + "data": [ + "security/ir.model.access.csv", + "data/mail_template.xml", + "views/donation_letter_send_views.xml", + "views/donation_send_button.xml", + ], +} diff --git a/donation_letter/data/mail_template.xml b/donation_letter/data/mail_template.xml new file mode 100644 index 000000000..379d0aec5 --- /dev/null +++ b/donation_letter/data/mail_template.xml @@ -0,0 +1,52 @@ + + + + Donation: Thanks Letter by email + + + {{ object.company_id.email }} + {{ object.partner_id.email }} + Thank you for your donation + Letter of appreciation + +
+

+ Dear + + Brandon Freeman + ( + Azure Interior + ), + + + Donor name, + +
+
+ We want to express our sincere gratitude for your generous donation of + $ 143,750.00 + to our organization. This contribution is a testament to your commitment and trust in our work. +
+
+ With this collaboration you help us move forward with our mission. We sincerely appreciate your support. +
+
+ Cordially, +
+
+ + -- +
+ Association name +
+

+
+
+ {{ object.partner_id.lang }} +
+
diff --git a/donation_letter/models/__init__.py b/donation_letter/models/__init__.py new file mode 100644 index 000000000..b1847a5ab --- /dev/null +++ b/donation_letter/models/__init__.py @@ -0,0 +1 @@ +from . import donation diff --git a/donation_letter/models/donation.py b/donation_letter/models/donation.py new file mode 100644 index 000000000..f7f15e9cb --- /dev/null +++ b/donation_letter/models/donation.py @@ -0,0 +1,74 @@ +from odoo import _, fields, models +from odoo.tools import get_lang + + +class Donation(models.Model): + _inherit = "donation.donation" + + is_thanks_letter_send = fields.Boolean( + default=False, + help="This field automatically becomes active when " + "the thanks letter has been send.", + ) + attachment_ids = fields.One2many( + comodel_name="ir.attachment", + inverse_name="res_id", + domain=[("res_model", "=", "donation.donation")], + string="Attachments", + ) + + def action_send_thanks(self): + template = self.env.ref(self._get_mail_template(), raise_if_not_found=False) + lang = False + + if len(self) == 1: + lang = template._render_lang(self.ids)[self.id] + + if not lang: + lang = get_lang(self.env).code + + compose_form = self.env.ref( + "donation_letter.donation_letter_send_wizard_form", raise_if_not_found=False + ) + ctx = { + "default_model": "donation.donation", + "default_res_model": "donation.donation", + "default_use_template": bool(template), + "default_template_id": template and template.id or False, + "default_composition_mode": "comment", + "mark_invoice_as_sent": True, + "default_email_layout_xmlid": ( + "mail.mail_notification_layout_with_responsible_signature" + ), + "force_email": True, + "active_ids": self.ids, + } + + report_action = { + "name": _("Send Thanks Letter"), + "type": "ir.actions.act_window", + "view_type": "form", + "view_mode": "form", + "res_model": "donation.letter.send", + "views": [(compose_form.id, "form")], + "view_id": compose_form.id, + "target": "new", + "context": ctx, + } + + return report_action + + def action_donation_print(self): + """Print the donation and mark it as sent, so that we can see more + easily the next step of the workflow + """ + self.filtered(lambda inv: not inv.is_thanks_letter_send).write( + {"is_thanks_letter_send": True} + ) + return self.env.ref("donation.report_thanks").report_action(self) + + def _get_mail_template(self): + """ + :return: the correct mail template based on the current move type + """ + return "donation_letter.email_template_thanks_letter" diff --git a/donation_letter/security/ir.model.access.csv b/donation_letter/security/ir.model.access.csv new file mode 100644 index 000000000..c9a16cb5e --- /dev/null +++ b/donation_letter/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_donation_letter_send,donation.letter.send,donation_letter.model_donation_letter_send,base.group_user,1,1,1,1 +access_donation_donation,donation.donation,donation.model_donation_donation,base.group_user,1,1,1,1 diff --git a/donation_letter/static/description/icon.png b/donation_letter/static/description/icon.png new file mode 100644 index 000000000..e8f0fcf0f Binary files /dev/null and b/donation_letter/static/description/icon.png differ diff --git a/donation_letter/views/donation_letter_send_views.xml b/donation_letter/views/donation_letter_send_views.xml new file mode 100644 index 000000000..b49109ec0 --- /dev/null +++ b/donation_letter/views/donation_letter_send_views.xml @@ -0,0 +1,143 @@ + + + + donation.letter.send.form + donation.letter.send + + +
+ + + + + +
+ + + +
+ Preview as a PDF +
+
+
+ + + +
+
+ +
+
+
+ + + +
+ + + + + + + +
+
+
+ +
+
+
diff --git a/donation_letter/views/donation_send_button.xml b/donation_letter/views/donation_send_button.xml new file mode 100644 index 000000000..34753e6e1 --- /dev/null +++ b/donation_letter/views/donation_send_button.xml @@ -0,0 +1,39 @@ + + + + donation.form.view.form.inherit + donation.donation + + + + + + + + 1 + + + + + + Send Thanks Letter + + + code + + if records: + action = records.action_send_thanks() + + + diff --git a/donation_letter/wizard/__init__.py b/donation_letter/wizard/__init__.py new file mode 100644 index 000000000..434c36ddc --- /dev/null +++ b/donation_letter/wizard/__init__.py @@ -0,0 +1 @@ +from . import donation_letter_send diff --git a/donation_letter/wizard/donation_letter_send.py b/donation_letter/wizard/donation_letter_send.py new file mode 100644 index 000000000..6ac8f3f28 --- /dev/null +++ b/donation_letter/wizard/donation_letter_send.py @@ -0,0 +1,178 @@ +from odoo import _, api, fields, models +from odoo.exceptions import UserError +from odoo.tools.misc import get_lang + +from odoo.addons.mail.wizard.mail_compose_message import _reopen + + +class DonationLeterSend(models.TransientModel): + _name = "donation.letter.send" + _inherits = {"mail.compose.message": "composer_id"} + _description = "Donation Thanks Letter Send" + + is_email = fields.Boolean( + "Email", default=lambda self: self.env.company.invoice_is_email + ) + donation_without_email = fields.Text( + compute="_compute_donation_without_email", + string="donation(s) that will not be sent", + ) + is_print = fields.Boolean( + "Print", default=lambda self: self.env.company.invoice_is_print + ) + printed = fields.Boolean("Is Printed", default=False) + donation_ids = fields.Many2many( + "donation.donation", + "donation_donation_donation_letter_send_rel", + string="Donations", + ) + composer_id = fields.Many2one( + "mail.compose.message", string="Composer", required=True, ondelete="cascade" + ) + template_id = fields.Many2one( + "mail.template", "Use template", domain="[('model', '=', 'donation.donation')]" + ) + + @api.model + def default_get(self, fields): + res = super(DonationLeterSend, self).default_get(fields) + res_ids = self._context.get("active_ids") + + donations = self.env["donation.donation"].browse(res_ids) + if not donations: + raise UserError(_("You can only send invoices.")) + + composer = self.env["mail.compose.message"].create( + { + "composition_mode": "comment" if len(res_ids) == 1 else "mass_mail", + } + ) + res.update( + { + "donation_ids": res_ids, + "composer_id": composer.id, + } + ) + return res + + @api.onchange("donation_ids") + def _compute_composition_mode(self): + for wizard in self: + wizard.composer_id.composition_mode = ( + "comment" if len(wizard.donation_ids) == 1 else "mass_mail" + ) + + @api.onchange("template_id") + def onchange_template_id(self): + for wizard in self: + if wizard.composer_id: + wizard.composer_id.template_id = wizard.template_id.id + wizard._compute_composition_mode() + wizard.composer_id._onchange_template_id_wrapper() + + @api.onchange("is_email") + def onchange_is_email(self): + if self.is_email: + res_ids = self._context.get("active_ids") + if not self.composer_id: + self.composer_id = self.env["mail.compose.message"].create( + { + "composition_mode": "comment" + if len(res_ids) == 1 + else "mass_mail", + "template_id": self.template_id.id, + } + ) + else: + self.composer_id.composition_mode = ( + "comment" if len(res_ids) == 1 else "mass_mail" + ) + self.composer_id.template_id = self.template_id.id + self._compute_composition_mode() + self.composer_id._onchange_template_id_wrapper() + + @api.onchange("is_email") + def _compute_donation_without_email(self): + for wizard in self: + if wizard.is_email and len(wizard.donation_ids) > 1: + donations = self.env["donation.donation"].search( + [ + ("id", "in", self.env.context.get("active_ids")), + ("partner_id.email", "=", False), + ] + ) + if donations: + wizard.donation_without_email = "%s\n%s" % ( + _( + "The following donation(s) will not be sent by email, " + "because the customers don't have email address." + ), + "\n".join([i.name for i in donations]), + ) + else: + wizard.donation_without_email = False + else: + wizard.donation_without_email = False + + def _send_email(self): + if self.is_email: + # with_context : we don't want to reimport the file we just exported. + self.composer_id.with_context( + no_new_invoice=True, + mail_notify_author=self.env.user.partner_id + in self.composer_id.partner_ids, + mailing_document_based=True, + )._action_send_mail() + for donation in self.donation_ids: + prioritary_attachments = donation.attachment_ids.filtered( + lambda x: x.mimetype.endswith("pdf") + ) + if prioritary_attachments: + donation.with_context(tracking_disable=True).sudo().write( + {"message_main_attachment_id": prioritary_attachments[0].id} + ) + donation.sudo().write({"is_thanks_letter_send": True}) + + def _print_document(self): + """to override for each type of models that will use this composer.""" + self.ensure_one() + action = self.donation_ids.action_donation_print() + + action.update({"close_on_report_download": True}) + return action + + def send_and_print_action(self): + self.ensure_one() + # Send the mails in the correct language by splitting the ids per lang. + # This should ideally be fixed in mail_compose_message, so when a fix + # is made there this whole commit should be reverted. + # basically self.body (which could be manually edited) extracts self.template_id, + # which is then not translated for each customer. + if self.composition_mode == "mass_mail" and self.template_id: + active_ids = self.env.context.get("active_ids", self.res_id) + active_records = self.env[self.model].browse(active_ids) + langs = set(active_records.mapped("partner_id.lang")) + for lang in langs: + active_ids_lang = active_records.filtered( + lambda r: r.partner_id.lang == lang + ).ids + self_lang = self.with_context( + active_ids=active_ids_lang, lang=get_lang(self.env, lang).code + ) + self_lang.onchange_template_id() + self_lang._send_email() + else: + active_record = self.env[self.model].browse(self.res_id) + lang = get_lang(self.env, active_record.partner_id.lang).code + self.with_context(lang=lang)._send_email() + if self.is_print: + return self._print_document() + return {"type": "ir.actions.act_window_close"} + + def save_as_template(self): + self.ensure_one() + self.composer_id.action_save_as_template() + self.template_id = self.composer_id.template_id.id + action = _reopen(self, self.id, self.model, context=self._context) + action.update({"name": _("Send Thanks Letter")}) + return action diff --git a/donation_recurrency/README.rst b/donation_recurrency/README.rst new file mode 100644 index 000000000..2ecd2d73a --- /dev/null +++ b/donation_recurrency/README.rst @@ -0,0 +1,110 @@ +===================== +Donation Recurrency +===================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:31c48232bdc364a467057018cc5756125fa1ed080631b75f3d8beed95f7a6994 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fdonation-lightgray.png?logo=github + :target: https://github.com/OCA/donation/tree/16.0/donation_direct_debit + :alt: OCA/donation +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/donation-16-0/donation-16-0-donation_direct_debit + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/donation&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +The Donation Recurrency module enhances the functionality of donation recurrence management within the system. +It introduces a template for defining donation recurrence patterns, automating the execution of pending donations via a cron job. +Additionally, users have the option to execute pending donations in bulk. +All donations created through this module are initially set to the draft state. +Furthermore, there's a relationship established between donation recurrence and donations, +allowing users to easily query donations associated with a specific recurrence pattern. + +**Table of contents** + +.. contents:: + :local: + +Features +============= + +* **Recurrence Template**: Users can create recurrence templates specifying the frequency and other relevant details for recurring donations. +* **Automated Execution**: The module utilizes a cron job to automatically execute pending donations according to their recurrence patterns. +* **Bulk Execution**: Users have the ability to execute pending donations in bulk, streamlining the process for efficiency. +* **Draft State**: All donations created through the module are initially set to the draft state, allowing for review and modification before finalization. +* **Relationship Management**: The module establishes a relationship between donation recurrence and donations, enabling users to easily access donations linked to a specific recurrence pattern. + +Usage +===== + +Once installed, users can utilize the Donation Recurrency functionality within the Odoo interface. Here's a brief overview of how to use the module: + +1. Navigate to the Donation Recurrency section in the Odoo interface. +2. Create a new recurrence template, specifying the desired frequency and other relevant details. +3. Monitor the execution of pending donations, either automatically via the cron job or manually in bulk. +4. Review and modify draft donations as needed before finalizing them. +5. Utilize the relationship management feature to query donations associated with specific recurrence patterns. + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Akretion + +Contributors +~~~~~~~~~~~~ + +* Alexis de Lattre + +Maintainers +~~~~~~~~~~~ + +This module is maintained by brendajfa. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-brendajfa| image:: https://github.com/alexis-via.png?size=40px + :target: https://github.com/alexis-via + :alt: alexis-via + +Current `maintainer `__: + +|maintainer-brendajfa| + +This module is part of the `OCA/donation `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/donation_recurrency/__init__.py b/donation_recurrency/__init__.py new file mode 100644 index 000000000..18330dabd --- /dev/null +++ b/donation_recurrency/__init__.py @@ -0,0 +1,4 @@ +# Copyright +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from . import models +from . import wizards diff --git a/donation_recurrency/__manifest__.py b/donation_recurrency/__manifest__.py new file mode 100644 index 000000000..5ca999a09 --- /dev/null +++ b/donation_recurrency/__manifest__.py @@ -0,0 +1,23 @@ +# Copyright +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Donation Recurrency", + "summary": "Make recurring donations", + "version": "16.0.1.0.0", + "category": "Custom", + "website": "https://github.com/OCA/donation", + "author": "Barroux Abbey, Akretion, Odoo Community Association (OCA)", + "maintainers": ["brendajfa"], + "license": "AGPL-3", + "depends": ["base", "donation", "account_payment_mode", "donation_direct_debit"], + "data": [ + "security/ir.model.access.csv", + "data/donation_recurrency_sequence.xml", + "data/donation_cron.xml", + "views/donation_recurrency.xml", + "views/donation_terminate_reason.xml", + "views/donation.xml", + "wizards/donation_recurrency_terminate.xml", + ], +} diff --git a/donation_recurrency/data/donation_cron.xml b/donation_recurrency/data/donation_cron.xml new file mode 100644 index 000000000..412ecff37 --- /dev/null +++ b/donation_recurrency/data/donation_cron.xml @@ -0,0 +1,16 @@ + + + + Generate Recurring Donations from Donations-Recurrency + + code + model.cron_recurring_create_donation() + + 1 + days + -1 + + + diff --git a/donation_recurrency/data/donation_recurrency_sequence.xml b/donation_recurrency/data/donation_recurrency_sequence.xml new file mode 100644 index 000000000..171b7998e --- /dev/null +++ b/donation_recurrency/data/donation_recurrency_sequence.xml @@ -0,0 +1,28 @@ + + + + + + + Donation Recurrency + donation.recurrency + DON-REC-%(range_year)s- + 4 + + + + + + Donation + donation.donation + DON-%(range_year)s- + 4 + + + + + diff --git a/donation_recurrency/models/__init__.py b/donation_recurrency/models/__init__.py new file mode 100644 index 000000000..461d28b6d --- /dev/null +++ b/donation_recurrency/models/__init__.py @@ -0,0 +1,6 @@ +from . import donation_recurrency_mixin +from . import donation_terminate_reason +from . import donation_recurrency +from . import donation + +# from . import donation_line diff --git a/donation_recurrency/models/donation.py b/donation_recurrency/models/donation.py new file mode 100644 index 000000000..7c4e4034a --- /dev/null +++ b/donation_recurrency/models/donation.py @@ -0,0 +1,9 @@ +from odoo import fields, models + + +class DonationDonation(models.Model): + _inherit = "donation.donation" + + contract_id = fields.Many2one( + "donation.recurrency", string="Recurrency reference", index=True + ) diff --git a/donation_recurrency/models/donation_line.py b/donation_recurrency/models/donation_line.py new file mode 100644 index 000000000..b4e4740ed --- /dev/null +++ b/donation_recurrency/models/donation_line.py @@ -0,0 +1,49 @@ +# from datetime import timedelta + +# from dateutil.relativedelta import relativedelta + +from odoo import fields, models + +# from odoo.exceptions import ValidationError + +# from .contract_line_constraints import get_allowed + + +class DonationLine(models.Model): + _name = "donation.line" + _description = "Donation Line" + _inherit = [ + # "donation.abstract.recurrency.line", + "donation.recurrency.mixin", + # "analytic.mixin", + ] + _order = "sequence,id" + + sequence = fields.Integer() + donation_id = fields.Many2one( + comodel_name="donation.recurrency", + string="Donation", + required=True, + index=True, + auto_join=True, + ondelete="cascade", + ) + state = fields.Selection( + selection=[ + ("upcoming", "Upcoming"), + ("in-progress", "In-progress"), + ("to-renew", "To renew"), + ("upcoming-close", "Upcoming Close"), + ("closed", "Closed"), + ("canceled", "Canceled"), + ], + compute="_compute_state", + search="_search_state", + ) + currency_id = fields.Many2one(related="donation_id.currency_id") + date_start = fields.Date(required=True) + # date_end = fields.Date(compute="_compute_date_end", store=True, readonly=False) + + # @api.depends("donation_id.date_end", "donation_id.line_recurrence") + # def _compute_date_end(self): + # self._set_recurrence_field("date_end") diff --git a/donation_recurrency/models/donation_recurrency.py b/donation_recurrency/models/donation_recurrency.py new file mode 100644 index 000000000..4687dedb1 --- /dev/null +++ b/donation_recurrency/models/donation_recurrency.py @@ -0,0 +1,511 @@ +from odoo import _, api, fields, models + +# , Command +# from odoo.osv import expression +from odoo.exceptions import UserError + +# , ValidationError +# from lxml import etree + + +class DonationRecurrency(models.Model): + _name = "donation.recurrency" + _description = "Donation Recurrency" + # _order = "code, name asc" + _inherit = [ + "mail.thread", + "mail.activity.mixin", + "donation.recurrency.mixin", + # "donation.donation", + ] + + @api.model + def _get_view(self, view_id=None, view_type="form", **options): + + arch, view = super(DonationRecurrency, self)._get_view( + view_id, view_type, **options + ) + if view_type == "form" and not self.env.user.has_group( + "base.group_erp_manager" + ): + for node in arch.xpath("//field[@name='recurring_next_date']"): + node.set("readonly", "1") + # if view_type == 'form' and self.is_terminated: + # for node in arch.xpath("//button[@name='recurring_create_donations']"): + # node.set('invisible', '1') + + return arch, view + + name = fields.Char() + state = fields.Selection( + [("active", "Active"), ("suspended", "Suspended")], + # copy=False, + # index=True, + # tracking=True, + ) + active = fields.Boolean( + default=True, + ) + number = fields.Char( + required=True, + copy=False, + string="Recurrency - Donation Number", + index=True, + default=lambda self: _("New"), + readonly=True, + # states={"draft": [("readonly", False)]}, + ) + currency_id = fields.Many2one( + comodel_name="res.currency", + default=lambda self: self.env.company.currency_id, + ) + partner_id = fields.Many2one( + "res.partner", + string="Donor", + required=True, + index=True, + # states={"done": [("readonly", True)]}, + tracking=True, + ondelete="restrict", + ) + company_id = fields.Many2one( + "res.company", + required=True, + default=lambda self: self.env.company, + ) + line_ids = fields.One2many( + "donation.recurrency.line", + "donation_id", + required=True, + string="Donation Lines", + ) + + payment_mode_id = fields.Many2one( + "account.payment.mode", + domain="[('company_id', '=', company_id), ('donation', '=', True)]", + check_company=True, + required=True, + # default=partner_id.customer_payment_mode_id + default=lambda self: self.env.user.context_donation_payment_mode_id, + ) + campaign_id = fields.Many2one( + "donation.campaign", + string="Donation Campaign", + # tracking=True, + check_company=True, + ondelete="restrict", + default=lambda self: self.env.user.context_donation_campaign_id, + ) + tax_receipt_option = fields.Selection( + [ + ("none", "None"), + ("each", "For Each Donation"), + ("annual", "Annual Tax Receipt"), + ], + compute="_compute_tax_receipt_option", + # index=True, + # tracking=True, + # precompute=True, + # store=True, + # readonly=False, + ) + thanks_template_id = fields.Many2one( + "donation.thanks.template", + ondelete="restrict", + # copy=False, + ) + donation_date = fields.Date( + # required=True, + # states={"done": [("readonly", True)]}, + # index=True, + # tracking=True, + ) + note = fields.Text(string="Notes") + is_terminated = fields.Boolean(string="Terminated", readonly=True, copy=False) + terminate_reason_id = fields.Many2one( + comodel_name="donation.terminate.reason", + string="Termination Reason", + ondelete="restrict", + readonly=True, + copy=False, + tracking=True, + ) + terminate_comment = fields.Text( + string="Termination Comment", + readonly=True, + copy=False, + tracking=True, + ) + terminate_date = fields.Date( + string="Termination Date", + readonly=True, + copy=False, + tracking=True, + ) + + is_canceled = fields.Boolean(string="Canceled", default=False) + last_date_donated = fields.Date() + + donation_count = fields.Integer( + compute="_compute_donation_count", string="# of Donations" + ) + + _sql_constraints = [ + ( + "no_delete", + "CHECK(active = TRUE)", + "No se permite eliminar registros, solo archivarlos.", + ) + ] + + def _prepare_value_for_stop(self, date_end): + self.ensure_one() + return { + "date_end": date_end, + "recurring_next_date": self.get_next_donation_date( + self.next_period_date_start, + self.recurring_donation_type, + self.recurring_donation_offset, + self.recurring_rule_type, + self.recurring_interval, + max_date_end=date_end, + ), + } + + @api.onchange("partner_id") + def _payment_mode_id(self): + self.payment_mode_id = self.partner_id.customer_payment_mode_id + + def stop(self, date_end, manual_renew_needed=False, post_message=True): + """ + Put date_end on contract line + We don't consider contract lines that end's before the new end date + :param date_end: new date end for contract line + :return: True + """ + for rec in self: + if date_end < rec.date_start: + rec.cancel() + else: + if not rec.date_end or rec.date_end > date_end: + old_date_end = rec.date_end + rec.write(rec._prepare_value_for_stop(date_end)) + if post_message: + msg = ( + _( + """Recurrency stopped:
+ - End: %(old_end)s -- %(new_end)s + """ + ) + % { + "old_end": old_date_end, + "new_end": rec.date_end, + } + ) + rec.message_post(body=msg) + else: + rec.write( + { + "is_auto_renew": False, + "manual_renew_needed": manual_renew_needed, + } + ) + return True + + def _terminate_contract( + self, terminate_reason_id, terminate_comment, terminate_date + ): + self.ensure_one() + self.stop(terminate_date) + self.write( + { + "is_terminated": True, + "terminate_reason_id": terminate_reason_id.id, + "terminate_comment": terminate_comment, + "terminate_date": terminate_date, + } + ) + return True + + @api.depends("line_ids.donation_id") + def _compute_donation_count(self): + rg_res = self.env["donation.donation"].read_group( + [("contract_id", "in", self.ids), ("state", "=", "done")], + ["contract_id"], + ["contract_id"], + ) + mapped_data = {x["contract_id"][0]: x["contract_id_count"] for x in rg_res} + for rec in self: + rec.donation_count = mapped_data.get(rec.id, 0) + + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + if "company_id" in vals: + self = self.with_company(vals["company_id"]) + if vals.get("number", _("New")) == _("New"): + vals["number"] = self.env["ir.sequence"].next_by_code( + "donation.recurrency", sequence_date=vals.get("date_start") + ) or _("New") + vals["name"] = vals["number"] + return super().create(vals_list) + + def action_terminate_recurrency(self): + self.ensure_one() + context = {"default_contract_id": self.id} + return { + "type": "ir.actions.act_window", + "name": _("Terminate Recurrency"), + "res_model": "donation.recurrency.terminate", + "view_mode": "form", + "target": "new", + "context": context, + } + + @api.depends("partner_id") + def _compute_country_id(self): + for donation in self: + donation.country_id = donation.partner_id.country_id + + def _get_lines_to_donation(self, date_ref): + """ + This method fetches and returns the lines to invoice on the contract + (self), based on the given date. + :param date_ref: date used as reference date to find lines to invoice + :return: contract lines (contract.line recordset) + """ + self.ensure_one() + + lines_donations = [] + if not self.line_ids: + raise UserError( + _("Cannot create recurrence %s because it doesn't " "have any lines!") + % self.display_name + ) + for line in self.line_ids: + vals = { + "product_id": line.product_id.id, + "quantity": line.quantity, + "unit_price": round(line.unit_price, 2), + "currency_id": self.env.company.currency_id.id, + } + lines_donations.append(self.env["donation.line"].sudo().create(vals).id) + return sorted(lines_donations) + + def _prepare_donation(self, date_donation): + """Prepare the values for the generated donation record. + + :return: A vals dictionary + """ + self.ensure_one() + + vals = { + "partner_id": self.partner_id.id, + "payment_mode_id": self.payment_mode_id.id, + "company_id": self.company_id.id, + "campaign_id": self.campaign_id.id, + "tax_receipt_option": "annual", + "thanks_template_id": self.thanks_template_id.id, + "line_ids": [], + "donation_date": date_donation, + "contract_id": self.id, + } + + return vals + + def _update_recurring_next_date(self): + for rec in self: + last_date_donated = rec.next_period_date_end + rec.write( + { + "last_date_donated": last_date_donated, + } + ) + + def _prepare_recurring_donations_values(self, date_ref_don=False): + """ + This method builds the list of invoices values to create, based on + the lines to invoice of the contracts in self. + !!! The date of next invoice (recurring_next_date) is updated here !!! + :return: list of dictionaries (invoices values) + """ + donations_values = [] + for contract in self: + if not date_ref_don: + date_ref = contract.recurring_next_date + else: + date_ref = date_ref_don + if not date_ref: + continue + donation_lines = contract._get_lines_to_donation(date_ref) + if not donation_lines: + continue + donation_vals = contract._prepare_donation(date_ref) + donation_vals["line_ids"] = [(6, 0, donation_lines)] + donations_values.append(donation_vals) + contract._update_recurring_next_date() + return donations_values + + def recurring_create_donation(self): + """ + This method triggers the creation of the next invoices of the contracts + even if their next invoicing date is in the future. + """ + today = fields.Date.context_today(self) + recurrency = self.filtered(lambda rec: rec.recurring_next_date <= today) + donations = recurrency._recurring_create_donation() + return donations + + def _get_related_donations(self): + self.ensure_one() + donations = self.env["donation.donation"].search( + [ + ( + "contract_id", + "in", + self.ids, + ) + ] + ) + return donations + + @api.model + def _add_donation_origin(self, donations): + for item in self: + for don in donations & item._get_related_donations(): + don.message_post( + body=_( + "%(msg)s by recurrency." + "%(rec_name)s" + "" + ) + % { + "msg": don._creation_message(), + "model_name": item._name, + "rec_id": item.id, + "rec_name": item.display_name, + } + ) + + def _recurring_create_donation(self, date_ref=False): + donations_values = self._prepare_recurring_donations_values(date_ref) + donations = self.env["donation.donation"].sudo().create(donations_values) + self._add_donation_origin(donations) + self._compute_recurring_next_date() + return donations + + @api.model + def _get_recurring_create_func(self, create_type="donation"): + """ + Allows to retrieve the recurring create function depending + on generate_type attribute + """ + if create_type == "donation": + return self.__class__._recurring_create_donation + + @api.model + def _get_contracts_to_donation_domain(self, date_ref=None): + """ + This method builds the domain to use to find all + contracts (contract.contract) to invoice. + :param date_ref: optional reference date to use instead of today + :return: list (domain) usable on contract.contract + """ + domain = [] + if not date_ref: + date_ref = fields.Date.context_today(self) + domain.extend([("recurring_next_date", "<=", date_ref)]) + return domain + + @api.model + def _cron_recurring_create(self, date_ref=False, create_type="donation"): + """ + The cron function in order to create recurrent documents + from contracts. + """ + _recurring_create_func = self._get_recurring_create_func( + create_type=create_type + ) + if not date_ref: + date_ref = fields.Date.context_today(self) + domain = self._get_contracts_to_donation_domain(date_ref) + while self.search(domain): + contracts = self.search(domain) + companies = set(contracts.mapped("company_id")) + for company in companies: + contracts_to_donation = contracts.filtered( + lambda c: c.company_id == company + and (not c.date_end or c.recurring_next_date <= c.date_end) + ).with_company(company) + _recurring_create_func(contracts_to_donation, date_ref=False) + return True + + @api.model + def cron_recurring_create_donation(self, date_ref=None): + return self._cron_recurring_create(date_ref, create_type="donation") + + def recurring_create_donations(self): + for rec in self: + continue_while = True + while ( + rec.recurring_next_date + and (not rec.date_end or rec.recurring_next_date <= rec.date_end) + and continue_while + ): + continue_while = rec.recurring_create_donation() + # if rec.date_end and rec.recurring_next_date: + # continue_while = rec.recurring_next_date <= rec.date_end + # elif not rec.recurring_next_date: + # continue_while = False + # else: + # continue_while = True + # continue_while = rec.recurring_next_date and + # (not rec.date_end or rec.recurring_next_date <= rec.date_end) and res + + +class DonationRecurrencyLine(models.Model): + _name = "donation.recurrency.line" + _description = "Donation REC Lines" + _rec_name = "product_id" + _inherit = [ + "donation.line", + "donation.recurrency.mixin", + ] + _description = "Donation Recurrency Lines" + + donation_id = fields.Many2one( + "donation.recurrency", + string="Donation Recurrency", + ) + + currency_id = fields.Many2one( + related="donation_id.currency_id", + ) + + @api.depends( + "unit_price", + "quantity", + "product_id", + "donation_id.currency_id", + "donation_id.company_id", + ) + def _compute_amount(self): + for line in self: + amount = line.quantity * line.unit_price + line.amount = amount + donation_currency = line.donation_id.currency_id + date = fields.Date.context_today(self) + amount_company_currency = donation_currency._convert( + amount, + line.donation_id.company_id.currency_id, + line.donation_id.company_id, + date, + ) + tax_receipt_amount_cc = 0.0 + if line.product_id.tax_receipt_ok: + tax_receipt_amount_cc = amount_company_currency + line.amount_company_currency = amount_company_currency + line.tax_receipt_amount = tax_receipt_amount_cc diff --git a/donation_recurrency/models/donation_recurrency_mixin.py b/donation_recurrency/models/donation_recurrency_mixin.py new file mode 100644 index 000000000..993357cf5 --- /dev/null +++ b/donation_recurrency/models/donation_recurrency_mixin.py @@ -0,0 +1,250 @@ +# Copyright 2018 ACSONE SA/NV. +# Copyright 2020 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from dateutil.relativedelta import relativedelta + +from odoo import api, fields, models + + +class DonationRecurrencyBasicMixin(models.AbstractModel): + _name = "donation.recurrency.basic.mixin" + _description = "Basic recurrency mixin for abstract donation models" + + recurring_rule_type = fields.Selection( + [ + ("daily", "Day(s)"), + ("weekly", "Week(s)"), + ("monthly", "Month(s)"), + ("monthlylastday", "Month(s) last day"), + ("quarterly", "Quarter(s)"), + ("semesterly", "Semester(s)"), + ("yearly", "Year(s)"), + ], + default="monthly", + string="Recurrence", + help="Specify Interval for automatic donation generation.", + ) + recurring_donation_type = fields.Selection( + [("pre-paid", "Pre-paid"), ("post-paid", "Post-paid")], + default="pre-paid", + string="Donation type", + help=( + "Specify if the donation must be generated at the beginning " + "(pre-paid) or end (post-paid) of the period." + ), + ) + recurring_donation_offset = fields.Integer( + compute="_compute_recurring_donation_offset", + string="Donation offset", + help=( + "Number of days to offset the donation from the period end " + "date (in post-paid mode) or start date (in pre-paid mode)." + ), + ) + recurring_interval = fields.Integer( + default=1, + string="Donation Every", + help="Donation every (Days/Week/Month/Year)", + ) + date_start = fields.Date() + recurring_next_date = fields.Date(string="Date of Next Donation", readonly=True) + + @api.depends("recurring_donation_type", "recurring_rule_type") + def _compute_recurring_donation_offset(self): + for rec in self: + method = self._get_default_recurring_donation_offset + rec.recurring_donation_offset = method( + rec.recurring_donation_type, rec.recurring_rule_type + ) + + @api.model + def _get_default_recurring_donation_offset( + self, recurring_donation_type, recurring_rule_type + ): + if ( + recurring_donation_type == "pre-paid" + or recurring_rule_type == "monthlylastday" + ): + return 0 + else: + return 1 + + +class DonationRecurrencyMixin(models.AbstractModel): + _inherit = "donation.recurrency.basic.mixin" + _name = "donation.recurrency.mixin" + _description = "Recurrency mixin for donation models" + + date_start = fields.Date(default=lambda self: fields.Date.context_today(self)) + recurring_next_date = fields.Date( + compute="_compute_recurring_next_date", store=True, readonly=False, copy=True + ) + date_end = fields.Date(index=True) + next_period_date_start = fields.Date( + string="Next Period Start", + compute="_compute_next_period_date_start", + ) + next_period_date_end = fields.Date( + string="Next Period End", + compute="_compute_next_period_date_end", + ) + # termination_notice_date = fields.Date( + # compute="_compute_termination_notice_date", + # store=True, + # copy=False, + # ) + last_date_donated = fields.Date(readonly=True, copy=False) + manual_renew_needed = fields.Boolean( + default=False, + help="This flag is used to make a difference between a definitive stop" + "and temporary one for which a user is not able to plan a" + "successor in advance", + ) + + @api.depends("next_period_date_start") + def _compute_recurring_next_date(self): + for rec in self: + rec.recurring_next_date = self.get_next_donation_date( + rec.next_period_date_start, + rec.recurring_donation_type, + rec.recurring_donation_offset, + rec.recurring_rule_type, + rec.recurring_interval, + max_date_end=rec.date_end, + ) + + @api.depends("last_date_donated", "date_start", "date_end") + def _compute_next_period_date_start(self): + for rec in self: + if rec.last_date_donated: + next_period_date_start = rec.last_date_donated + relativedelta(days=1) + else: + next_period_date_start = rec.date_start + if ( + rec.date_end + and next_period_date_start + and next_period_date_start > rec.date_end + ): + next_period_date_start = False + rec.next_period_date_start = next_period_date_start + + @api.depends( + "next_period_date_start", + "recurring_donation_type", + "recurring_donation_offset", + "recurring_rule_type", + "recurring_interval", + "date_end", + "recurring_next_date", + ) + def _compute_next_period_date_end(self): + for rec in self: + rec.next_period_date_end = self.get_next_period_date_end( + rec.next_period_date_start, + rec.recurring_rule_type, + rec.recurring_interval, + max_date_end=rec.date_end, + next_donation_date=rec.recurring_next_date, + recurring_donation_type=rec.recurring_donation_type, + recurring_donation_offset=rec.recurring_donation_offset, + ) + + @api.model + def get_relative_delta(self, recurring_rule_type, interval): + """Return a relativedelta for one period. + + When added to the first day of the period, + it gives the first day of the next period. + """ + if recurring_rule_type == "daily": + return relativedelta(days=interval) + elif recurring_rule_type == "weekly": + return relativedelta(weeks=interval) + elif recurring_rule_type == "monthly": + return relativedelta(months=interval) + elif recurring_rule_type == "monthlylastday": + return relativedelta(months=interval, day=1) + elif recurring_rule_type == "quarterly": + return relativedelta(months=3 * interval) + elif recurring_rule_type == "semesterly": + return relativedelta(months=6 * interval) + else: + return relativedelta(years=interval) + + @api.model + def get_next_period_date_end( + self, + next_period_date_start, + recurring_rule_type, + recurring_interval, + max_date_end, + next_donation_date=False, + recurring_donation_type=False, + recurring_donation_offset=False, + ): + """Compute the end date for the next period. + + The next period normally depends on recurrence options only. + It is however possible to provide it a next donation date, in + which case this method can adjust the next period based on that + too. In that scenario it required the donation type and offset + arguments. + """ + if not next_period_date_start: + return False + if max_date_end and next_period_date_start > max_date_end: + # start is past max date end: there is no next period + return False + if not next_donation_date: + # regular algorithm + next_period_date_end = ( + next_period_date_start + + self.get_relative_delta(recurring_rule_type, recurring_interval) + - relativedelta(days=1) + ) + else: + # special algorithm when the next donation date is forced + if recurring_donation_type == "pre-paid": + next_period_date_end = ( + next_donation_date + - relativedelta(days=recurring_donation_offset) + + self.get_relative_delta(recurring_rule_type, recurring_interval) + - relativedelta(days=1) + ) + else: # post-paid + next_period_date_end = next_donation_date - relativedelta( + days=recurring_donation_offset + ) + if max_date_end and next_period_date_end > max_date_end: + # end date is past max_date_end: trim it + next_period_date_end = max_date_end + return next_period_date_end + + @api.model + def get_next_donation_date( + self, + next_period_date_start, + recurring_donation_type, + recurring_donation_offset, + recurring_rule_type, + recurring_interval, + max_date_end, + ): + next_period_date_end = self.get_next_period_date_end( + next_period_date_start, + recurring_rule_type, + recurring_interval, + max_date_end=max_date_end, + ) + if not next_period_date_end: + return False + if recurring_donation_type == "pre-paid": + recurring_next_date = next_period_date_start + relativedelta( + days=recurring_donation_offset + ) + else: # post-paid + recurring_next_date = next_period_date_end + relativedelta( + days=recurring_donation_offset + ) + return recurring_next_date diff --git a/donation_recurrency/models/donation_terminate_reason.py b/donation_recurrency/models/donation_terminate_reason.py new file mode 100644 index 000000000..fc54a97ff --- /dev/null +++ b/donation_recurrency/models/donation_terminate_reason.py @@ -0,0 +1,15 @@ +# Copyright 2020 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class DonationTerminateReason(models.Model): + + _name = "donation.terminate.reason" + _description = "Donation Termination Reason" + + name = fields.Char(required=True) + terminate_comment_required = fields.Boolean( + string="Require a termination comment", default=True + ) diff --git a/donation_recurrency/security/ir.model.access.csv b/donation_recurrency/security/ir.model.access.csv new file mode 100644 index 000000000..1160fd191 --- /dev/null +++ b/donation_recurrency/security/ir.model.access.csv @@ -0,0 +1,6 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_donation_recurrency,donation.recurrency,model_donation_recurrency,base.group_user,1,1,1,1 +access_donation_recurrency_line,donation.recurrency.line,model_donation_recurrency_line,base.group_user,1,1,1,1 +access_donation_donation_rec,donation.donation,donation.model_donation_donation,base.group_user,1,1,1,1 +access_donation_terminate_reason,donation.terminate.reason,model_donation_terminate_reason,base.group_user,1,1,1,1 +access_donation_recurrency_terminate,donation.recurrency.terminate,model_donation_recurrency_terminate,base.group_user,1,1,1,1 diff --git a/donation_recurrency/static/description/icon.png b/donation_recurrency/static/description/icon.png new file mode 100644 index 000000000..e8f0fcf0f Binary files /dev/null and b/donation_recurrency/static/description/icon.png differ diff --git a/donation_recurrency/views/donation.xml b/donation_recurrency/views/donation.xml new file mode 100644 index 000000000..ec0986613 --- /dev/null +++ b/donation_recurrency/views/donation.xml @@ -0,0 +1,15 @@ + + + + + donation.donation.search + donation.donation + + + + + + + + + diff --git a/donation_recurrency/views/donation_line.xml b/donation_recurrency/views/donation_line.xml new file mode 100644 index 000000000..4dd49c400 --- /dev/null +++ b/donation_recurrency/views/donation_line.xml @@ -0,0 +1,191 @@ + + + + + donation.line form view (in contract) + donation.line + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
diff --git a/donation_recurrency/views/donation_recurrency.xml b/donation_recurrency/views/donation_recurrency.xml new file mode 100644 index 000000000..cb180e129 --- /dev/null +++ b/donation_recurrency/views/donation_recurrency.xml @@ -0,0 +1,238 @@ + + + + + Donations + donation.donation + tree,form,graph + {'search_default_contract_id': active_id} + + + donation.recurrency.form + donation.recurrency + +
+ + +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ +
+
+ + + donation.recurrency.line.tree + donation.recurrency.line + + + + + + + + + + + + + + + + + + + + + Donations Rec Lines + donation.recurrency.line + tree,form + + + + donation.recurrency.tree + donation.recurrency + + +
+
+ + + + + + + + + + +
+
+
+ + + + + Recurring Donations new module + donation.recurrency + tree,form,pivot,graph + +

+ Click to create a new donation recurrency. +

+
+
+ + + + +
diff --git a/donation_recurrency/views/donation_terminate_reason.xml b/donation_recurrency/views/donation_terminate_reason.xml new file mode 100644 index 000000000..45783141a --- /dev/null +++ b/donation_recurrency/views/donation_terminate_reason.xml @@ -0,0 +1,46 @@ + + + + + donation.terminate.reason + +
+ + + + + + +
+
+
+ + donation.terminate.reason + + + + + + + + + Recurrency Termination Reason + donation.terminate.reason + tree,form + + + + +
diff --git a/donation_recurrency/wizards/__init__.py b/donation_recurrency/wizards/__init__.py new file mode 100644 index 000000000..f90c03d59 --- /dev/null +++ b/donation_recurrency/wizards/__init__.py @@ -0,0 +1 @@ +from . import donation_recurrency_terminate diff --git a/donation_recurrency/wizards/donation_recurrency_terminate.py b/donation_recurrency/wizards/donation_recurrency_terminate.py new file mode 100644 index 000000000..b6b3a956b --- /dev/null +++ b/donation_recurrency/wizards/donation_recurrency_terminate.py @@ -0,0 +1,37 @@ +# Copyright 2020 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class DonationRecurrencyTerminate(models.TransientModel): + + _name = "donation.recurrency.terminate" + _description = "Terminate Recurrency Wizard" + + contract_id = fields.Many2one( + comodel_name="donation.recurrency", + string="Contract", + required=True, + ondelete="cascade", + ) + terminate_reason_id = fields.Many2one( + comodel_name="donation.terminate.reason", + string="Termination Reason", + required=True, + ondelete="cascade", + ) + terminate_comment = fields.Text(string="Termination Comment") + terminate_date = fields.Date(string="Termination Date", required=True) + terminate_comment_required = fields.Boolean( + related="terminate_reason_id.terminate_comment_required" + ) + + def terminate_contract(self): + for wizard in self: + wizard.contract_id._terminate_contract( + wizard.terminate_reason_id, + wizard.terminate_comment, + wizard.terminate_date, + ) + return True diff --git a/donation_recurrency/wizards/donation_recurrency_terminate.xml b/donation_recurrency/wizards/donation_recurrency_terminate.xml new file mode 100644 index 000000000..7f8fa58eb --- /dev/null +++ b/donation_recurrency/wizards/donation_recurrency_terminate.xml @@ -0,0 +1,32 @@ + + + + + donation.recurrency.terminate + +
+ + + + + + + +
+
+
+
+
+
diff --git a/donation_recurring/tests/test_recurring_donations.py b/donation_recurring/tests/test_recurring_donations.py index beb2c6743..147ae9854 100644 --- a/donation_recurring/tests/test_recurring_donations.py +++ b/donation_recurring/tests/test_recurring_donations.py @@ -15,10 +15,18 @@ class TestDonationRecurring(TransactionCase): def setUp(self): super().setUp() + donation_debit_order_account = self.env["account.account"].create( + { + "code": "10130Rec", + "name": "Account Receivable Rec", + "account_type": "asset_receivable", + } + ) self.bank_journal = self.env["account.journal"].create( { "type": "bank", "name": "test bank journal", + "donation_debit_order_account_id": donation_debit_order_account.id, } ) self.payment_mode = self.env["account.payment.mode"].create( diff --git a/donation_summary/README.rst b/donation_summary/README.rst new file mode 100644 index 000000000..24e9115b8 --- /dev/null +++ b/donation_summary/README.rst @@ -0,0 +1,107 @@ +===================== +Donation Summary +===================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:31c48232bdc364a467057018cc5756125fa1ed080631b75f3d8beed95f7a6994 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fdonation-lightgray.png?logo=github + :target: https://github.com/OCA/donation/tree/16.0/donation_direct_debit + :alt: OCA/donation +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/donation-16-0/donation-16-0-donation_direct_debit + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/donation&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +The Donation Summary module empowers users to generate comprehensive summaries of donations made by donors within a specified date range. +Users can select two dates to define the interval of the search and choose whether to generate a summary for a single donor or multiple donors. +Additionally, the module provides functionality to send these summaries via email upon request. + +**Table of contents** + +.. contents:: + :local: + +Features +============= + +* **Summary Generation**: Users can generate detailed summaries of donations made by donors, capturing key information within a specified date range. +* **Date Range Selection**: The module allows users to define the interval for the search by selecting two dates, ensuring flexibility and accuracy in summary generation. +* **Single or Multiple Donor Options**: Users have the flexibility to generate summaries for individual donors or multiple donors at once, depending on their requirements. +* **Email Sending**: Upon request, users can send the generated summaries via email directly from the system, streamlining communication with donors. + + +Usage +===== + +Once installed, users can access the Donation Summary functionality within the Odoo interface. Here's a quick guide on how to utilize the module: + +1. Navigate to the Donation Summary section in the Odoo interface. +2. Select the desired date range for the summary search. +3. Choose whether to generate a summary for a single donor or multiple donors. +4. Generate the summary. +5. Optionally, send the generated summaries via email to relevant recipients upon request. + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Akretion + +Contributors +~~~~~~~~~~~~ + +* Alexis de Lattre + +Maintainers +~~~~~~~~~~~ + +This module is maintained by brendajfa. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-brendajfa| image:: https://github.com/alexis-via.png?size=40px + :target: https://github.com/alexis-via + :alt: alexis-via + +Current `maintainer `__: + +|maintainer-brendajfa| + +This module is part of the `OCA/donation `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/donation_summary/__init__.py b/donation_summary/__init__.py new file mode 100644 index 000000000..082fa1746 --- /dev/null +++ b/donation_summary/__init__.py @@ -0,0 +1,4 @@ +# Copyright +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from . import models +from . import wizard diff --git a/donation_summary/__manifest__.py b/donation_summary/__manifest__.py new file mode 100644 index 000000000..22ee5488a --- /dev/null +++ b/donation_summary/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Donation Summary", + "summary": "Make summary donations", + "version": "16.0.1.0.0", + "category": "Custom", + "website": "https://github.com/OCA/donation", + "author": "Barroux Abbey, Akretion, Odoo Community Association (OCA)", + "maintainers": ["brendajfa"], + "license": "AGPL-3", + "depends": ["donation", "donation_base", "mail", "donation_certificate"], + "data": [ + "report/donation_summary.xml", + "report/donation_summary_templates.xml", + "views/donation_summary_views.xml", + "views/donation_summary_send_views.xml", + "data/mail_template.xml", + ], +} diff --git a/donation_summary/data/mail_template.xml b/donation_summary/data/mail_template.xml new file mode 100644 index 000000000..d240737e7 --- /dev/null +++ b/donation_summary/data/mail_template.xml @@ -0,0 +1,49 @@ + + + + Donation: Send Summary + + + {{ object.company_id.email }} + {{ object.partner_id.email }} + Summary of Your Donations + Donation Summary + +
+

Dear + Brandon Freeman,
+
We want to express our sincere gratitude for your suport and generosity towards our mission.
We are pleased to inform you that attached you will find a detailed summary of all + the donations you have made from 01/01/2023 + to 31/12/2023. +
+
This summary includes the date and amount of each contribution, allowing you to have a + clear overview of your impact on our organization. +
+
The total amount of your donations during this period add up to $ + 143,750.00. +
+
+
If you would like more details or have any questions about your donation history, + please fell free to contact us.
+
Cordially,
+
+ + Association name +

+
+
+ {{ object.partner_id.lang }} + + RDS_{{ (object.name or '') }} +
+
diff --git a/donation_summary/models/__init__.py b/donation_summary/models/__init__.py new file mode 100644 index 000000000..c450dab14 --- /dev/null +++ b/donation_summary/models/__init__.py @@ -0,0 +1,2 @@ +from . import donation +from . import donation_summary diff --git a/donation_summary/models/donation.py b/donation_summary/models/donation.py new file mode 100644 index 000000000..ab40f82cf --- /dev/null +++ b/donation_summary/models/donation.py @@ -0,0 +1,9 @@ +from odoo import fields, models + + +class Donation(models.Model): + _inherit = "donation.donation" + + donation_summary_id = fields.Many2one( + string="Donation Summary", comodel_name="donation.summary" + ) diff --git a/donation_summary/models/donation_summary.py b/donation_summary/models/donation_summary.py new file mode 100644 index 000000000..0d292e9ca --- /dev/null +++ b/donation_summary/models/donation_summary.py @@ -0,0 +1,254 @@ +import datetime + +from odoo import _, api, fields, models +from odoo.exceptions import UserError +from odoo.tools.misc import get_lang + + +class DonationSummary(models.Model): + _name = "donation.summary" + _inherit = ["mail.thread", "mail.activity.mixin"] + + @api.model + def _default_end_date(self): + return datetime.date(fields.Date.context_today(self).year - 1, 12, 31) + + @api.model + def _default_start_date(self): + return datetime.date(fields.Date.context_today(self).year - 1, 1, 1) + + name = fields.Char(compute="_compute_name") + + is_summary_send = fields.Boolean( + help="This field automatically becomes active when " + "the summary has been send.", + ) + partner_id = fields.Many2one( + "res.partner", + string="Donor", + index=True, + states={"sent": [("readonly", True)]}, + tracking=True, + ondelete="restrict", + domain="[('donation_ids', '!=', False)]", + ) + start_date = fields.Date( + required=True, + default=lambda self: self._default_start_date(), + states={"sent": [("readonly", True)]}, + ) + end_date = fields.Date( + required=True, + default=lambda self: self._default_end_date(), + states={"sent": [("readonly", True)]}, + ) + + donation_ids = fields.One2many( + "donation.donation", + "donation_summary_id", + string="Related Donations", + compute="_compute_donation_ids", + required=True, + states={"sent": [("readonly", True)]}, + ) + + state = fields.Selection( + [("draft", "Draft"), ("sent", "Sent")], + readonly=True, + copy=False, + default="draft", + index=True, + tracking=True, + ) + company_id = fields.Many2one( + "res.company", + string="Company", + ondelete="cascade", + default=lambda self: self.env.company, + ) + amount_total = fields.Monetary( + tracking=True, + compute="_compute_amounts", + states={"sent": [("readonly", True)]}, + ) + currency_id = fields.Many2one( + "res.currency", + required=True, + states={"sent": [("readonly", True)]}, + tracking=True, + ondelete="restrict", + default=lambda self: self.env.company.currency_id, + ) + attachment_ids = fields.One2many( + "ir.attachment", + "res_id", + domain=[("res_model", "=", "donation.summary")], + string="Attachments", + ) + + def _compute_name(self): + for rec in self: + rec.name = ( + (rec.partner_id.name).replace(" ", "") + + "_" + + str(rec.start_date).replace("-", "") + + "_" + + str(rec.end_date).replace("-", "") + if rec.partner_id + else "" + ) + + def _prepare_donation_summary(self, existing_donation_ids): + vals = { + "partner_id": existing_donation_ids.partner_id.id, + "start_date": self.start_date, + "end_date": self.end_date, + "state": "draft", + "is_summary_send": False, + } + return vals + + def massive_creation(self): + d_sum = self.env["donation.summary"] + donation_summary_ids = [] + for partner in self.donation_ids.partner_id.ids: + donations = self.donation_ids.filtered( + lambda donation: donation.partner_id.id == partner + ) + values = self._prepare_donation_summary(donations) + donation_summary_ids.append(values) + if not len(donation_summary_ids): + raise UserError(_("No annual tax receipt to generate")) + + self.unlink() + + for new_summary_vals in donation_summary_ids: + d_sum.create(new_summary_vals) + + # Redireccionar a la vista tree + return { + "name": _("Donations Summary"), + "type": "ir.actions.act_window", + "res_model": "donation.summary", + "view_type": "tree", + "view_mode": "tree,form", + "target": "main", + "context": self.env.context, + } + + @api.depends("donation_ids") + def _compute_amounts(self): + for rec in self: + amount = 0 + for don in rec.donation_ids: + amount += don.amount_total_company_currency + rec.amount_total = amount + + @api.depends("partner_id", "start_date", "end_date") + def _compute_donation_ids(self): + for rec in self: + domain = [("state", "=", "done"), ("donation_summary_id", "=", False)] + if rec.partner_id: + domain += [("partner_id", "=", rec.partner_id.id)] + if rec.start_date and rec.end_date: + domain += [ + ("donation_date", ">=", rec.start_date), + ("donation_date", "<=", rec.end_date), + ] + donations = self.env["donation.donation"].search(domain) + if not donations: + raise UserError( + _("There must be at least one donation in the summary.") + ) + rec.donation_ids = donations + + def massive_send_summary(self): + template = self.env.ref(self._get_mail_template(), raise_if_not_found=False) + compose_form = self.env.ref( + "donation_summary.donation_summary_send_wizard_form", + raise_if_not_found=False, + ) + ctx = dict( + default_model="donation.summary", + # For the sake of consistency we need a default_res_model if + # default_res_id is set. Not renaming default_model as it can + # create many side-effects. + default_res_model="donation.summary", + default_use_template=bool(template), + default_template_id=template and template.id or False, + default_composition_mode="comment", + mark_invoice_as_sent=True, + default_email_layout_xmlid=( + "mail.mail_notification_layout_with_responsible_signature" + ), + force_email=True, + active_ids=self.ids, + ) + report_action = { + "name": _("Send Donation Summary"), + "type": "ir.actions.act_window", + "view_type": "form", + "view_mode": "form", + "res_model": "donation.summary.send", + "views": [(compose_form.id, "form")], + "view_id": compose_form.id, + "target": "new", + "context": ctx, + } + return report_action + + def send_summary(self): + template = self.env.ref(self._get_mail_template(), raise_if_not_found=False) + lang = False + if template: + lang = template._render_lang(self.ids)[self.id] + if not lang: + lang = get_lang(self.env).code + compose_form = self.env.ref( + "donation_summary.donation_summary_send_wizard_form", + raise_if_not_found=False, + ) + ctx = dict( + default_model="donation.summary", + default_res_id=self.id, + default_res_model="donation.summary", + default_use_template=bool(template), + default_template_id=template and template.id or False, + default_composition_mode="comment", + mark_invoice_as_sent=True, + default_email_layout_xmlid=( + "mail.mail_notification_layout_with_responsible_signature" + ), + force_email=True, + active_ids=self.ids, + ) + report_action = { + "name": _("Send Donation Summary"), + "type": "ir.actions.act_window", + "view_type": "form", + "view_mode": "form", + "res_model": "donation.summary.send", + "views": [(compose_form.id, "form")], + "view_id": compose_form.id, + "target": "new", + "context": ctx, + } + + return report_action + + def _get_mail_template(self): + """ + :return: the correct mail template based on the current move type + """ + return "donation_summary.email_template_donation_summary" + + def action_print_donation_summary(self): + """Print the certificate and mark it as sent, so that we can see more + easily the next step of the workflow + """ + self.filtered(lambda sum: not sum.is_summary_send).write( + {"is_summary_send": True} + ) + return self.env.ref("donation_summary.report_donation_summary").report_action( + self + ) diff --git a/donation_summary/report/donation_summary.xml b/donation_summary/report/donation_summary.xml new file mode 100644 index 000000000..51c25ffc3 --- /dev/null +++ b/donation_summary/report/donation_summary.xml @@ -0,0 +1,15 @@ + + + + Request for Donation Summary + donation.summary + qweb-pdf + donation_summary.report_donationsummary + donation_summary.report_donationsummary + 'Request for Donation Summary - %s' %(object.partner_id.name) + + report + + diff --git a/donation_summary/report/donation_summary_templates.xml b/donation_summary/report/donation_summary_templates.xml new file mode 100644 index 000000000..fa1101f8a --- /dev/null +++ b/donation_summary/report/donation_summary_templates.xml @@ -0,0 +1,89 @@ + + + + + + diff --git a/donation_summary/security/ir.model.access.csv b/donation_summary/security/ir.model.access.csv new file mode 100644 index 000000000..0b00e2926 --- /dev/null +++ b/donation_summary/security/ir.model.access.csv @@ -0,0 +1,4 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_donation_summary,donation.summary,donation_summary.model_donation_summary,base.group_user,1,1,1,1 +access_donation_donation,donation.donation,donation.model_donation_donation,base.group_user,1,1,1,1 +access_donation_summary_send,donation.summary.send,donation_summary.model_donation_summary_send,base.group_user,1,1,1,1 diff --git a/donation_summary/static/description/icon.png b/donation_summary/static/description/icon.png new file mode 100644 index 000000000..e8f0fcf0f Binary files /dev/null and b/donation_summary/static/description/icon.png differ diff --git a/donation_summary/views/donation_summary_send_views.xml b/donation_summary/views/donation_summary_send_views.xml new file mode 100644 index 000000000..7ba5dd539 --- /dev/null +++ b/donation_summary/views/donation_summary_send_views.xml @@ -0,0 +1,140 @@ + + + + donation.summary.send.form + donation.summary.send + + +
+ + + + + +
+ + + +
+ Preview as a PDF +
+
+
+ + + +
+
+ +
+
+
+ + +
+ + + + + + + +
+
+
+ +
+
+
diff --git a/donation_summary/views/donation_summary_views.xml b/donation_summary/views/donation_summary_views.xml new file mode 100644 index 000000000..8064df4f3 --- /dev/null +++ b/donation_summary/views/donation_summary_views.xml @@ -0,0 +1,122 @@ + + + + Donations Summary + donation.summary + tree,form + +

+ Create a new custom field in your donation summary record +

+

+ Odoo helps you easily track all custom fields related to a donation summary. +

+
+
+ + + donation.summary.view.tree + donation.summary + + + + + + + + + + + + + + + donation.summary.view.form + donation.summary + +
+
+
+ + + + + + + + + + +
+ + + +
+
+
+
+ + + donation.summary.view.tree.inherit + donation.summary + + + +
+
+
+
+
+ + donation.summary.view..search + donation.summary + + + + + + + + +
diff --git a/donation_summary/wizard/__init__.py b/donation_summary/wizard/__init__.py new file mode 100644 index 000000000..e3da7d70a --- /dev/null +++ b/donation_summary/wizard/__init__.py @@ -0,0 +1 @@ +from . import donation_summary_send diff --git a/donation_summary/wizard/donation_summary_send.py b/donation_summary/wizard/donation_summary_send.py new file mode 100644 index 000000000..dc4db102b --- /dev/null +++ b/donation_summary/wizard/donation_summary_send.py @@ -0,0 +1,217 @@ +from odoo import _, api, fields, models +from odoo.exceptions import UserError +from odoo.tools.misc import get_lang + +from odoo.addons.mail.wizard.mail_compose_message import _reopen + + +class DonationSummarySend(models.TransientModel): + _name = "donation.summary.send" + _inherits = {"mail.compose.message": "composer_id"} + _description = "Donation Summary Send" + + is_email = fields.Boolean( + "Email", default=lambda self: self.env.company.invoice_is_email + ) + summary_without_email = fields.Text( + compute="_compute_donation_without_email", + string="Summary(s) that will not be sent", + ) + is_print = fields.Boolean( + "Print", default=lambda self: self.env.company.invoice_is_print + ) + printed = fields.Boolean("Is Printed", default=False) + donation_summary_ids = fields.Many2many( + "donation.summary", + "donation_summary_donation_summary_send_rel", + string="Donations Summary", + ) + composer_id = fields.Many2one( + "mail.compose.message", required=True, ondelete="cascade" + ) + template_id = fields.Many2one( + "mail.template", + "Use template", + default=lambda self: self._get_report_template(), + ) + # template_id = fields.Many2one('mail.template', 'Use template', + # domain="[('model', '=', 'donation.summary'), ]", + # default=lambda self: self._get_report_template()) + + def _get_report_template(self): + template = self.env.ref( + "donation_summary.email_template_donation_summary", raise_if_not_found=False + ) + return template.id or False + + @api.model + def default_get(self, fields): + res = super(DonationSummarySend, self).default_get(fields) + res_ids = self._context.get("active_ids") + + donation_summary = self.env["donation.summary"].browse(res_ids) + if not donation_summary: + raise UserError(_("You can only send invoices.")) + + composer = self.env["mail.compose.message"].create( + { + "composition_mode": "comment" if len(res_ids) == 1 else "mass_mail", + } + ) + res.update( + { + "donation_summary_ids": res_ids, + "composer_id": composer.id, + } + ) + return res + + @api.onchange("donation_summary_ids") + def _compute_composition_mode(self): + for wizard in self: + wizard.composer_id.composition_mode = ( + "comment" if len(wizard.donation_summary_ids) == 1 else "mass_mail" + ) + + def get_ref_report_name(self, wizard_template_id_lang): + lang = ( + list(wizard_template_id_lang.values())[0] + if wizard_template_id_lang + else "XX" + ) + report_names = { + "es_ES": "donation_certificate.donation_certificate_report_py3o_ES", + "ca_ES": "donation_certificate.donation_certificate_report_py3o_CAT", + "fr_FR": "donation_certificate.donation_certificate_report_py3o_FR", + "en_GB": "donation_certificate.donation_certificate_report_py3o_EN", + } + report_name = report_names.get( + lang, "donation_certificate.donation_certificate_report_py3o_EN" + ) + + return self.env.ref(report_name, raise_if_not_found=False).id + + @api.onchange("template_id") + def onchange_template_id(self): + for wizard in self: + if wizard.composer_id: + # Hay que mirar porque el archivo se llama igual que el ID + # Get different report depending on the lang + # lang_object = wizard.template_id.lang + # render_model = wizard.template_id.render_model + # res_ids = wizard.donation_summary_ids.ids + # lang = wizard.template_id._render_template(lang_object, render_model, res_ids) + # wizard.template_id.report_template = self.get_ref_report_name(lang) + wizard.composer_id.template_id = wizard.template_id.id + # Get different report depending on the lang + # wizard.composer_id.template_id.report_template + # = self.get_ref_report_name(lang) + wizard._compute_composition_mode() + wizard.composer_id._onchange_template_id_wrapper() + + @api.onchange("is_email") + def onchange_is_email(self): + if self.is_email: + res_ids = self._context.get("active_ids") + data = { + "composition_mode": "comment" if len(res_ids) == 1 else "mass_mail", + "template_id": self.template_id.id, + } + if not self.composer_id: + self.composer_id = self.env["mail.compose.message"].create(data) + else: + self.composer_id.write(data) + self._compute_composition_mode() + self.composer_id._onchange_template_id_wrapper() + + @api.onchange("is_email") + def _compute_donation_without_email(self): + for wizard in self: + if wizard.is_email and len(wizard.donation_summary_ids) > 1: + don_summary = self.env["donation.summary"].search( + [ + ("id", "in", self.env.context.get("active_ids")), + ("partner_id.email", "=", False), + ] + ) + if don_summary: + wizard.summary_without_email = "%s\n%s" % ( + _( + "The following donation(s) will not be sent by email, " + "because the customers don't have email address." + ), + "\n".join([i.name for i in don_summary]), + ) + else: + wizard.summary_without_email = False + else: + wizard.summary_without_email = False + + def _send_email(self): + if self.is_email: + self.composer_id.with_context( + no_new_invoice=True, + mail_notify_author=self.env.user.partner_id + in self.composer_id.partner_ids, + mailing_document_based=True, + )._action_send_mail() + for don_summary in self.donation_summary_ids: + prioritary_attachments = don_summary.attachment_ids.filtered( + lambda x: x.mimetype.endswith("pdf") + ) + if prioritary_attachments: + don_summary.with_context(tracking_disable=True).sudo().write( + {"message_main_attachment_id": prioritary_attachments[0].id} + ) + + # def _print_certificate_document(self): + # """ to override for each type of models that will use this composer.""" + # self.ensure_one() + # action = self.donation_summary_ids.action_print_tax_receipt() + + # action.update({'close_on_report_download': True}) + # return action + + def send_and_print_action(self): + self.ensure_one() + # Send the mails in the correct language by splitting the ids per lang. + # This should ideally be fixed in mail_compose_message, + # so when a fix is made there this whole commit should be reverted. + # basically self.body (which could be manually edited) extracts self.template_id, + # which is then not translated for each customer. + if self.composition_mode == "mass_mail" and self.template_id: + active_ids = self.env.context.get("active_ids", self.res_id) + active_records = self.env[self.model].browse(active_ids) + langs = set(active_records.mapped("partner_id.lang")) + for lang in langs: + active_ids_lang = active_records.filtered( + lambda r: r.partner_id.lang == lang + ).ids + self_lang = self.with_context( + active_ids=active_ids_lang, lang=get_lang(self.env, lang).code + ) + self_lang.onchange_template_id() + self_lang._send_email() + else: + active_record = self.env[self.model].browse(self.res_id) + lang = get_lang(self.env, active_record.partner_id.lang).code + self.with_context(lang=lang)._send_email() + if self.is_print: + return self._print_document() + self.donation_summary_ids.write({"state": "sent"}) + return {"type": "ir.actions.act_window_close"} + + def save_as_template(self): + self.ensure_one() + self.composer_id.action_save_as_template() + self.template_id = self.composer_id.template_id.id + action = _reopen(self, self.id, self.model, context=self._context) + action.update({"name": _("Send Summary")}) + return action + + def _print_document(self): + """to override for each type of models that will use this composer.""" + self.ensure_one() + action = self.donation_summary_ids.action_print_donation_summary() + action.update({"close_on_report_download": True}) + return action diff --git a/setup/_metapackage/setup.py b/setup/_metapackage/setup.py index bbf78a578..0a964c95b 100644 --- a/setup/_metapackage/setup.py +++ b/setup/_metapackage/setup.py @@ -13,6 +13,7 @@ 'odoo-addon-donation_base>=16.0dev,<16.1dev', 'odoo-addon-donation_direct_debit>=16.0dev,<16.1dev', 'odoo-addon-donation_recurring>=16.0dev,<16.1dev', + 'odoo-addon-report_py3o>=16.0dev,<16.1dev', ], classifiers=[ 'Programming Language :: Python', diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/README.rst b/setup/donation_certificate/odoo/addons/donation_certificate/README.rst new file mode 100644 index 000000000..20588bcfb --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/README.rst @@ -0,0 +1,108 @@ +===================== +Donation Certificate +===================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:31c48232bdc364a467057018cc5756125fa1ed080631b75f3d8beed95f7a6994 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fdonation-lightgray.png?logo=github + :target: https://github.com/OCA/donation/tree/16.0/donation_direct_debit + :alt: OCA/donation +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/donation-16-0/donation-16-0-donation_direct_debit + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/donation&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +The Donation Certificate module provides users with the capability to customize certificates to be sent to donors. +These certificates are linked to fields within the "donation.donation" +model and are formatted as ODT files for easy editing. +Additionally, this module enables users to send certificates in bulk and print them. + +**Table of contents** + +.. contents:: + :local: + +Features +============= + +* **Customization**: Users can personalize certificates to be sent to donors, tailoring them to specific donation details. +* **Integration**: The module seamlessly integrates with the "donation.donation" model, ensuring accurate and relevant information on the certificates. +* **ODT Format**: Certificates are generated in the ODT format, facilitating easy editing using standard office software. +* **Mass Sending**: Users have the option to send certificates to multiple donors simultaneously, streamlining the process for efficiency. +* **Printing**: The module supports printing functionality, allowing users to produce physical copies of certificates as needed. + +Usage +===== + +Once installed, users can access the Donation Certificate functionality through the Odoo interface. Here's a brief overview of how to use the module: + +1. Navigate to the Donation Certificate section in the Odoo interface. +2. Customize the certificate template as desired, ensuring it reflects the necessary donation information. +3. Select the donors to whom the certificates should be sent. +4. Send the certificates individually or in bulk. +5. Optionally, print physical copies of the certificates for distribution. + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Akretion + +Contributors +~~~~~~~~~~~~ + +* Alexis de Lattre + +Maintainers +~~~~~~~~~~~ + +This module is maintained by brendajfa. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-brendajfa| image:: https://github.com/alexis-via.png?size=40px + :target: https://github.com/alexis-via + :alt: alexis-via + +Current `maintainer `__: + +|maintainer-brendajfa| + +This module is part of the `OCA/donation `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/__init__.py b/setup/donation_certificate/odoo/addons/donation_certificate/__init__.py new file mode 100644 index 000000000..082fa1746 --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/__init__.py @@ -0,0 +1,4 @@ +# Copyright +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from . import models +from . import wizard diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/__manifest__.py b/setup/donation_certificate/odoo/addons/donation_certificate/__manifest__.py new file mode 100644 index 000000000..938af19b3 --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/__manifest__.py @@ -0,0 +1,28 @@ +# Copyright +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Donation Certificate", + "summary": "Donation Certificate", + "version": "16.0.1.0.0", + "category": "Custom", + "website": "https://github.com/OCA/donation", + "author": "Barroux Abbey, Akretion, Odoo Community Association (OCA)", + "maintainers": ["brendajfa"], + "license": "AGPL-3", + "application": True, + "installable": True, + "depends": ["report_py3o", "donation", "donation_base", "mail"], + "data": [ + "security/ir.model.access.csv", + "data/mail_template.xml", + "data/donation_sequence.xml", + "data/py3o_certificate_template.xml", + "views/donation_certificate_send_views.xml", + "views/tax_receipt_donation.xml", + "views/donation_send_cert_button.xml", + "views/py3o_certificate_report.xml", + "wizard/tax_receipt_annual_create_view.xml", + "wizard/tax_receipt_print_view.xml", + ], +} diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/data/donation_sequence.xml b/setup/donation_certificate/odoo/addons/donation_certificate/data/donation_sequence.xml new file mode 100644 index 000000000..a890f273f --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/data/donation_sequence.xml @@ -0,0 +1,12 @@ + + + + + Donation + donation.donation + DON-%(range_year)s- + 4 + + + + diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/data/mail_template.xml b/setup/donation_certificate/odoo/addons/donation_certificate/data/mail_template.xml new file mode 100644 index 000000000..389bd5b24 --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/data/mail_template.xml @@ -0,0 +1,45 @@ + + + + + Donation: Certificate + + + {{ object.company_id.email }} + {{ object.partner_id.email }} + Donation Certificate + Donation Certificate + +
+

+ Dear + Donor name, +
+
+ We want to express our sincere gratitude for your generous donation of + $ 143,750.00 + to our organization. This contribution is a testament to your commitment and trust in our work. +
+
+ With this collaboration you help us move forward with our mission. We sincerely appreciate your support. +
+
+ Cordially, +
+
+ + -- +
+ Association name +
+

+
+
+ + {{ object.partner_id.lang }} + Donation Certificate +
+
diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/data/py3o_certificate_template.xml b/setup/donation_certificate/odoo/addons/donation_certificate/data/py3o_certificate_template.xml new file mode 100644 index 000000000..4fe9247a1 --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/data/py3o_certificate_template.xml @@ -0,0 +1,36 @@ + + + + + Donation Certificate ES + odt + report/PDA34_Certificat_de_donacions_ES.odt + + + + Donation Certificate CAT + odt + report/PDA34_Certificat_de_donacions_CAT.odt + + + + Donation Certificate FR + odt + report/PDA34_Certificat_de_donacions_FR.odt + + + + Donation Certificate EN + odt + report/PDA34_Certificat_de_donacions_EN.odt + + + diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/models/__init__.py b/setup/donation_certificate/odoo/addons/donation_certificate/models/__init__.py new file mode 100644 index 000000000..bf2ad5dc1 --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/models/__init__.py @@ -0,0 +1,4 @@ +from . import py3o_report +from . import py3o_template +from . import donation +from . import donation_tax_receipt diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/models/donation.py b/setup/donation_certificate/odoo/addons/donation_certificate/models/donation.py new file mode 100644 index 000000000..1ac88e337 --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/models/donation.py @@ -0,0 +1,77 @@ +from odoo import _, fields, models +from odoo.exceptions import ValidationError +from odoo.tools import get_lang + + +class Donation(models.Model): + _inherit = "donation.donation" + + is_certificate_send = fields.Boolean( + help="This field automatically becomes active when " + "the thanks letter has been send.", + ) + attachment_ids = fields.One2many( + "ir.attachment", + "res_id", + domain=[("res_model", "=", "donation.donation")], + string="Attachments", + ) + + def action_send_certificate(self): + self.ensure_one() + if not self.tax_receipt_id and self.tax_receipt_option == "annual": + raise ValidationError(_("Annual receipt has not been generated yet.")) + self.write({"is_certificate_send": True}) + template = self.env.ref(self._get_mail_template(), raise_if_not_found=False) + lang = False + if template: + lang = template._render_lang(self.ids)[self.id] + if not lang: + lang = get_lang(self.env).code + compose_form = self.env.ref( + "donation_certificate.donation_certificate_send_wizard_form", + raise_if_not_found=False, + ) + ctx = dict( + default_model="donation.tax.receipt", + default_res_id=self.tax_receipt_id.id, + default_res_model="donation.tax.receipt", + default_use_template=bool(template), + default_template_id=template and template.id or False, + default_composition_mode="comment", + mark_invoice_as_sent=True, + default_email_layout_xmlid=( + "mail.mail_notification_layout_with_responsible_signature" + ), + force_email=True, + active_ids=self.tax_receipt_id.ids, + ) + report_action = { + "name": _("Send Certificate"), + "type": "ir.actions.act_window", + "view_type": "form", + "view_mode": "form", + "res_model": "donation.certificate.send", + "views": [(compose_form.id, "form")], + "view_id": compose_form.id, + "target": "new", + "context": ctx, + } + return report_action + + def action_print_tax_receipt(self): + """Print the certificate and mark it as sent, so that we can see more + easily the next step of the workflow + """ + self.filtered(lambda r: not r.is_certificate_send).write( + {"is_certificate_send": True} + ) + return self.env.ref( + "donation_certificate.donation_certificate_report_py3o" + ).report_action(self) + + def _get_mail_template(self): + """ + :return: the correct mail template based on the current move type + """ + return "donation_certificate.email_template_donation_certificate" diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/models/donation_tax_receipt.py b/setup/donation_certificate/odoo/addons/donation_certificate/models/donation_tax_receipt.py new file mode 100644 index 000000000..78ee2f26c --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/models/donation_tax_receipt.py @@ -0,0 +1,112 @@ +from odoo import _, api, fields, models +from odoo.tools import get_lang + + +class DonationTaxReceipt(models.Model): + _inherit = "donation.tax.receipt" + + is_certificate_send = fields.Boolean( + help="This field automatically becomes active when " + "the thanks letter has been send.", + ) + attachment_ids = fields.One2many( + "ir.attachment", + "res_id", + domain=[("res_model", "=", "donation.tax.receipt")], + string="Attachments", + ) + amount_donation = fields.Monetary(tracking=True, compute="_compute_amounts") + amount_donation_in_kind_consu = fields.Monetary( + tracking=True, compute="_compute_amounts" + ) + amount_donation_in_kind_service = fields.Monetary( + tracking=True, compute="_compute_amounts" + ) + + @api.depends("donation_ids") + def _compute_amounts(self): + for rec in self: + amount_donation = 0 + amount_donation_in_kind_consu = 0 + amount_donation_in_kind_service = 0 + for donation in rec.donation_ids: + for line in donation.line_ids: + if line.product_id.detailed_type == "donation": + amount_donation = amount_donation + line.amount + elif line.product_id.detailed_type == "donation_in_kind_consu": + amount_donation_in_kind_consu = ( + amount_donation_in_kind_consu + line.amount + ) + else: + amount_donation_in_kind_service = ( + amount_donation_in_kind_service + line.amount + ) + rec.amount_donation = round(amount_donation, 2) + rec.amount_donation_in_kind_consu = round(amount_donation_in_kind_consu, 2) + rec.amount_donation_in_kind_service = round( + amount_donation_in_kind_service, 2 + ) + + def action_send_tax_receipt(self): + self.write({"is_certificate_send": True}) + template = self.env.ref(self._get_mail_template(), raise_if_not_found=False) + compose_form = self.env.ref( + "donation_certificate.donation_certificate_send_wizard_form", + raise_if_not_found=False, + ) + ctx = dict( + default_model="donation.tax.receipt", + default_res_model="donation.tax.receipt", + default_use_template=bool(template), + default_template_id=template and template.id or False, + default_composition_mode="comment", + mark_invoice_as_sent=True, + default_email_layout_xmlid=( + "mail.mail_notification_layout_with_responsible_signature" + ), + force_email=True, + active_ids=self.ids, + ) + report_action = { + "name": _("Send Certificate"), + "type": "ir.actions.act_window", + "view_type": "form", + "view_mode": "form", + "res_model": "donation.certificate.send", + "views": [(compose_form.id, "form")], + "view_id": compose_form.id, + "target": "new", + "context": ctx, + } + return report_action + + def get_ref_report_name(self, lang): + report_names = { + "es_ES": "donation_certificate.donation_certificate_report_py3o_ES", + "ca_ES": "donation_certificate.donation_certificate_report_py3o_CAT", + "fr_FR": "donation_certificate.donation_certificate_report_py3o_FR", + "en_GB": "donation_certificate.donation_certificate_report_py3o_EN", + } + + return report_names.get( + lang, "donation_certificate.donation_certificate_report_py3o_EN" + ) + + def action_print_tax_receipt(self): + """Print the certificate and mark it as sent, so that we can see more + easily the next step of the workflow + """ + today = fields.Date.context_today(self) + self.write({"print_date": today}) + self.filtered(lambda inv: not inv.is_certificate_send).write( + {"is_certificate_send": True} + ) + lang = get_lang(self.env).code + report_action_py3o = self.get_ref_report_name(lang) + return self.env.ref(report_action_py3o).report_action(self) + + def _get_mail_template(self): + """ + :return: the correct mail template based on the current move type + """ + return "donation_certificate.email_template_donation_certificate" diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/models/py3o_report.py b/setup/donation_certificate/odoo/addons/donation_certificate/models/py3o_report.py new file mode 100644 index 000000000..5af5a5a40 --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/models/py3o_report.py @@ -0,0 +1,18 @@ +# Copyright 2013 XCG Consulting (http://odoo.consulting) +# Copyright 2016 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) +from odoo import models + + +class Py3oReport(models.TransientModel): + _inherit = "py3o.report" + + def _merge_results(self, reports_path): + self.ensure_one() + filetype = self.ir_actions_report_id.py3o_filetype + if not reports_path: + return False, False + if len(reports_path) == 1: + return reports_path[0], filetype + else: + return self._zip_results(reports_path), "zip" diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/models/py3o_template.py b/setup/donation_certificate/odoo/addons/donation_certificate/models/py3o_template.py new file mode 100644 index 000000000..087b6e091 --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/models/py3o_template.py @@ -0,0 +1,37 @@ +from base64 import b64encode + +# import sys +import pkg_resources + +from odoo import api, fields, models + +# import os + + +class Py3oTemplate(models.Model): + _inherit = "py3o.template" + + py3o_template_fallback = fields.Char( + "Fallback", + size=128, + help=( + "If the user does not provide a template this will be used " + "it should be a relative path to root of YOUR module " + "or an absolute path on your server." + ), + ) + + @api.model_create_multi + def create(self, vals_list): + module = "donation_certificate" + vals = vals_list[0] + if vals["py3o_template_fallback"]: + flbk_filename = pkg_resources.resource_filename( + "odoo.addons.%s" % module, vals["py3o_template_fallback"] + ) + with open(flbk_filename, "rb") as tmpl: + tmpl_data = b64encode(tmpl.read()) + vals["py3o_template_data"] = tmpl_data + # if not rec.py3o_template_data: + # rec.py3o_template_data = False + return super().create([vals]) diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/report/PDA34_Certificat_de_donacions.odt b/setup/donation_certificate/odoo/addons/donation_certificate/report/PDA34_Certificat_de_donacions.odt new file mode 100644 index 000000000..a8f19eb27 Binary files /dev/null and b/setup/donation_certificate/odoo/addons/donation_certificate/report/PDA34_Certificat_de_donacions.odt differ diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/report/PDA34_Certificat_de_donacions_CAT.odt b/setup/donation_certificate/odoo/addons/donation_certificate/report/PDA34_Certificat_de_donacions_CAT.odt new file mode 100644 index 000000000..a8f19eb27 Binary files /dev/null and b/setup/donation_certificate/odoo/addons/donation_certificate/report/PDA34_Certificat_de_donacions_CAT.odt differ diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/report/PDA34_Certificat_de_donacions_EN.odt b/setup/donation_certificate/odoo/addons/donation_certificate/report/PDA34_Certificat_de_donacions_EN.odt new file mode 100644 index 000000000..90ae41029 Binary files /dev/null and b/setup/donation_certificate/odoo/addons/donation_certificate/report/PDA34_Certificat_de_donacions_EN.odt differ diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/report/PDA34_Certificat_de_donacions_ES.odt b/setup/donation_certificate/odoo/addons/donation_certificate/report/PDA34_Certificat_de_donacions_ES.odt new file mode 100644 index 000000000..2c99a2b1a Binary files /dev/null and b/setup/donation_certificate/odoo/addons/donation_certificate/report/PDA34_Certificat_de_donacions_ES.odt differ diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/report/PDA34_Certificat_de_donacions_FR.odt b/setup/donation_certificate/odoo/addons/donation_certificate/report/PDA34_Certificat_de_donacions_FR.odt new file mode 100644 index 000000000..0710ff783 Binary files /dev/null and b/setup/donation_certificate/odoo/addons/donation_certificate/report/PDA34_Certificat_de_donacions_FR.odt differ diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/security/ir.model.access.csv b/setup/donation_certificate/odoo/addons/donation_certificate/security/ir.model.access.csv new file mode 100644 index 000000000..7583f62bd --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/security/ir.model.access.csv @@ -0,0 +1,7 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_donation_certificate_send,donation.certificate.send,donation_certificate.model_donation_certificate_send,base.group_user,1,1,1,1 +access_donation_donation,donation.donation,donation.model_donation_donation,base.group_user,1,1,1,1 +access_donation_tax_receipt,donation.tax.receipt,model_donation_tax_receipt,base.group_user,1,1,1,1 +access_tax_receipt_annual_create,tax.receipt.annual.create,model_tax_receipt_annual_create,base.group_user,1,1,1,1 +access_py3o_template,py3o.template,report_py3o.model_py3o_template,base.group_user,1,1,1,1 +access_donation_tax_receipt_print,donation.tax.receipt.print,donation_base.model_donation_tax_receipt_print,base.group_user,1,1,1,1 diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/static/description/icon.png b/setup/donation_certificate/odoo/addons/donation_certificate/static/description/icon.png new file mode 100644 index 000000000..e8f0fcf0f Binary files /dev/null and b/setup/donation_certificate/odoo/addons/donation_certificate/static/description/icon.png differ diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/views/donation_certificate_send_views.xml b/setup/donation_certificate/odoo/addons/donation_certificate/views/donation_certificate_send_views.xml new file mode 100644 index 000000000..9e1a5cf11 --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/views/donation_certificate_send_views.xml @@ -0,0 +1,141 @@ + + + + donation.certificate.send.form + donation.certificate.send + + +
+ + + + + +
+ + + +
+ Preview as a PDF +
+
+
+ + + +
+
+ +
+
+
+ + +
+ + + + + + + + +
+
+
+ +
+
+
diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/views/donation_send_cert_button.xml b/setup/donation_certificate/odoo/addons/donation_certificate/views/donation_send_cert_button.xml new file mode 100644 index 000000000..6f274f805 --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/views/donation_send_cert_button.xml @@ -0,0 +1,51 @@ + + + + + donation.form.view.form.inherit + donation.donation + + + + + + + + + + + + + + Send Certificate + + + + code + + if records: + action = records.action_send_tax_receipt() + + + + + donation.donation.tree.inherited + donation.donation + + + + + + + + diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/views/py3o_certificate_report.xml b/setup/donation_certificate/odoo/addons/donation_certificate/views/py3o_certificate_report.xml new file mode 100644 index 000000000..77021a706 --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/views/py3o_certificate_report.xml @@ -0,0 +1,74 @@ + + + + + Donation Tax Receipt ES + donation.tax.receipt + py3o_donation_certificate_ES + py3o + pdf + + 'Fiscal_receipt-'+(object.number or '').replace('/','') + + + + + + Donation Tax Receipt CAT + donation.tax.receipt + py3o_donation_certificate_CAT + py3o + pdf + + 'Fiscal_receipt-'+(object.number or '').replace('/','') + + + + + Donation Tax Receipt FR + donation.tax.receipt + py3o_donation_certificate_FR + py3o + pdf + + 'Fiscal_receipt-'+(object.number or '').replace('/','') + + + + + Donation Tax Receipt EN + donation.tax.receipt + py3o_donation_certificate_EN + py3o + pdf + + 'Fiscal_receipt-'+(object.number or '').replace('/','') + + + + py3o.template.view.form.inherit + py3o.template + + + + + + + + + + diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/views/tax_receipt_donation.xml b/setup/donation_certificate/odoo/addons/donation_certificate/views/tax_receipt_donation.xml new file mode 100644 index 000000000..2981bfe85 --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/views/tax_receipt_donation.xml @@ -0,0 +1,34 @@ + + + + + donation.tax.receipt.view.form.inherit + donation.tax.receipt + + +
+
+
+
+ + + donation.tax.receipt.view.form.inherit + donation.tax.receipt + + + + 1 + + + +
diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/wizard/__init__.py b/setup/donation_certificate/odoo/addons/donation_certificate/wizard/__init__.py new file mode 100644 index 000000000..9dae7f968 --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/wizard/__init__.py @@ -0,0 +1,3 @@ +from . import donation_certificate_send +from . import tax_receipt_annual_create +from . import tax_receipt_print diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/wizard/donation_certificate_send.py b/setup/donation_certificate/odoo/addons/donation_certificate/wizard/donation_certificate_send.py new file mode 100644 index 000000000..7e3c6a6d6 --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/wizard/donation_certificate_send.py @@ -0,0 +1,215 @@ +from odoo import _, api, fields, models +from odoo.exceptions import UserError +from odoo.tools.misc import get_lang + +from odoo.addons.mail.wizard.mail_compose_message import _reopen + + +class DonationCertificateSend(models.TransientModel): + _name = "donation.certificate.send" + _inherits = {"mail.compose.message": "composer_id"} + _description = "Donation Certificate Send" + + is_email = fields.Boolean( + "Email", default=lambda self: self.env.company.invoice_is_email + ) + donation_without_email = fields.Text( + compute="_compute_donation_without_email", + string="Donation(s) that will not be sent", + ) + is_print = fields.Boolean( + "Print", default=lambda self: self.env.company.invoice_is_print + ) + printed = fields.Boolean("Is Printed", default=False) + tax_receipt_ids = fields.Many2many( + "donation.tax.receipt", + "donation_tax_receipt_donation_certificate_send_rel", + string="Donations Tax Receipt", + ) + composer_id = fields.Many2one( + "mail.compose.message", required=True, ondelete="cascade" + ) + template_id = fields.Many2one( + "mail.template", + "Use template", + domain="[('model', '=', 'donation.tax.receipt'), ]", + default=lambda self: self._get_report_template(), + ) + + def _get_report_template(self): + template = self.env.ref( + "donation_certificate.email_template_donation_certificate", + raise_if_not_found=False, + ) + return template.id or False + + @api.model + def default_get(self, fields): + res = super(DonationCertificateSend, self).default_get(fields) + res_ids = self._context.get("active_ids") + + tax_receipts = self.env["donation.tax.receipt"].browse(res_ids) + if not tax_receipts: + raise UserError(_("You can only send invoices.")) + + composer = self.env["mail.compose.message"].create( + { + "composition_mode": "comment" if len(res_ids) == 1 else "mass_mail", + } + ) + res.update( + { + "tax_receipt_ids": res_ids, + "composer_id": composer.id, + } + ) + return res + + @api.onchange("tax_receipt_ids") + def _compute_composition_mode(self): + for wizard in self: + wizard.composer_id.composition_mode = ( + "comment" if len(wizard.tax_receipt_ids) == 1 else "mass_mail" + ) + + def get_ref_report_name(self, wizard_template_id_lang): + lang = list(wizard_template_id_lang.values())[0] + report_names = { + "es_ES": "donation_certificate.donation_certificate_report_py3o_ES", + "ca_ES": "donation_certificate.donation_certificate_report_py3o_CAT", + "fr_FR": "donation_certificate.donation_certificate_report_py3o_FR", + "en_GB": "donation_certificate.donation_certificate_report_py3o_EN", + } + report_name = report_names.get( + lang, "donation_certificate.donation_certificate_report_py3o_EN" + ) + + return self.env.ref(report_name, raise_if_not_found=False).id + + @api.onchange("template_id") + def onchange_template_id(self): + for wizard in self: + if wizard.composer_id: + # Hay que mirar porque el archivo se llama igual que el ID + # Get different report depending on the lang + lang_object = wizard.template_id.lang + render_model = wizard.template_id.render_model + res_ids = wizard.tax_receipt_ids.ids + lang = wizard.template_id._render_template( + lang_object, render_model, res_ids + ) + + wizard.template_id.report_template = self.get_ref_report_name(lang) + wizard.composer_id.template_id = wizard.template_id.id + # Get different report depending on the lang + wizard.composer_id.template_id.report_template = ( + self.get_ref_report_name(lang) + ) + wizard._compute_composition_mode() + wizard.composer_id._onchange_template_id_wrapper() + + @api.onchange("is_email") + def onchange_is_email(self): + if self.is_email: + res_ids = self._context.get("active_ids") + data = { + "composition_mode": "comment" if len(res_ids) == 1 else "mass_mail", + "template_id": self.template_id.id, + } + if not self.composer_id: + self.composer_id = self.env["mail.compose.message"].create(data) + else: + self.composer_id.write(data) + self._compute_composition_mode() + self.composer_id._onchange_template_id_wrapper() + + @api.onchange("is_email") + def _compute_donation_without_email(self): + for wizard in self: + if wizard.is_email and len(wizard.tax_receipt_ids) > 1: + tax_receipts = self.env["donation.tax.receipt"].search( + [ + ("id", "in", self.env.context.get("active_ids")), + ("partner_id.email", "=", False), + ] + ) + if tax_receipts: + wizard.donation_without_email = "%s\n%s" % ( + _( + "The following donation(s) will not be sent by email, " + "because the customers don't have email address." + ), + "\n".join([i.number for i in tax_receipts]), + ) + else: + wizard.donation_without_email = False + else: + wizard.donation_without_email = False + + def _send_email(self): + if self.is_email: + self.composer_id.with_context( + no_new_invoice=True, + mail_notify_author=self.env.user.partner_id + in self.composer_id.partner_ids, + mailing_document_based=True, + )._action_send_mail() + for tax_receipt in self.tax_receipt_ids: + prioritary_attachments = tax_receipt.attachment_ids.filtered( + lambda x: x.mimetype.endswith("pdf") + ) + if prioritary_attachments: + tax_receipt.with_context(tracking_disable=True).sudo().write( + {"message_main_attachment_id": prioritary_attachments[0].id} + ) + + def _print_certificate_document(self): + """to override for each type of models that will use this composer.""" + self.ensure_one() + action = self.tax_receipt_ids.action_print_tax_receipt() + + action.update({"close_on_report_download": True}) + return action + + def send_and_print_action(self): + self.ensure_one() + # Send the mails in the correct language by splitting the ids per lang. + # This should ideally be fixed in mail_compose_message, so when a fix + # is made there this whole commit should be reverted. + # basically self.body (which could be manually edited) extracts self.template_id, + # which is then not translated for each customer. + if self.composition_mode == "mass_mail" and self.template_id: + active_ids = self.env.context.get("active_ids", self.res_id) + active_records = self.env[self.model].browse(active_ids) + langs = set(active_records.mapped("partner_id.lang")) + for lang in langs: + active_ids_lang = active_records.filtered( + lambda r: r.partner_id.lang == lang + ).ids + self_lang = self.with_context( + active_ids=active_ids_lang, lang=get_lang(self.env, lang).code + ) + self_lang.onchange_template_id() + self_lang._send_email() + else: + active_record = self.env[self.model].browse(self.res_id) + lang = get_lang(self.env, active_record.partner_id.lang).code + self.with_context(lang=lang)._send_email() + if self.is_print: + return self._print_document() + return {"type": "ir.actions.act_window_close"} + + def save_as_template(self): + self.ensure_one() + self.composer_id.action_save_as_template() + self.template_id = self.composer_id.template_id.id + action = _reopen(self, self.id, self.model, context=self._context) + action.update({"name": _("Send Certificate")}) + return action + + def _print_document(self): + """to override for each type of models that will use this composer.""" + self.ensure_one() + action = self.tax_receipt_ids.action_print_tax_receipt() + action.update({"close_on_report_download": True}) + return action diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/wizard/tax_receipt_annual_create.py b/setup/donation_certificate/odoo/addons/donation_certificate/wizard/tax_receipt_annual_create.py new file mode 100644 index 000000000..c328811da --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/wizard/tax_receipt_annual_create.py @@ -0,0 +1,18 @@ +from odoo import models + + +class TaxReceiptAnnualCreate(models.TransientModel): + _inherit = "tax.receipt.annual.create" + """ + Clase creada para cuando se me pida cambiar la vista o funcionamiento de + 'Crear recibos anuales', de momento no hace nada. + """ + + # @api.model + # def _prepare_annual_tax_receipt(self, partner, partner_dict): + # # wdb.set_trace() + # super()._prepare_annual_tax_receipt(partner, partner_dict) + + # def generate_annual_receipts(self): + # # wdb.set_trace() + # super().generate_annual_receipts() diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/wizard/tax_receipt_annual_create_view.xml b/setup/donation_certificate/odoo/addons/donation_certificate/wizard/tax_receipt_annual_create_view.xml new file mode 100644 index 000000000..3c2e04257 --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/wizard/tax_receipt_annual_create_view.xml @@ -0,0 +1,17 @@ + + + + + diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/wizard/tax_receipt_print.py b/setup/donation_certificate/odoo/addons/donation_certificate/wizard/tax_receipt_print.py new file mode 100644 index 000000000..f2df9b3f6 --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/wizard/tax_receipt_print.py @@ -0,0 +1,52 @@ +# Copyright 2014-2021 Barroux Abbey (http://www.barroux.org) +# Copyright 2014-2021 Akretion France (http://www.akretion.com/) +# @author: Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, fields, models +from odoo.exceptions import UserError +from odoo.tools import get_lang + + +class DonationTaxReceiptPrint(models.TransientModel): + _inherit = "donation.tax.receipt.print" + _description = "Print Donation Tax Receipts" + + lang = fields.Selection( + [ + ("es_ES", "Spanish"), + ("ca_ES", "Catalan"), + ("fr_FR", "French"), + ("en_GB", "English"), + ], + # readonly=True, + # copy=False, + # default="draft", + # index=True, + # tracking=True, + ) + + def print_receipts(self): + self.ensure_one() + if not self.receipt_ids: + raise UserError(_("There are no tax receipts to print.")) + today = fields.Date.context_today(self) + self.receipt_ids.write({"print_date": today}) + if self.lang: + lang = self.lang + else: + lang = get_lang(self.env).code + report_action_py3o = self.get_ref_report_name(lang) + return self.env.ref(report_action_py3o).report_action(self.receipt_ids) + + def get_ref_report_name(self, lang): + report_names = { + "es_ES": "donation_certificate.donation_certificate_report_py3o_ES", + "ca_ES": "donation_certificate.donation_certificate_report_py3o_CAT", + "fr_FR": "donation_certificate.donation_certificate_report_py3o_FR", + "en_GB": "donation_certificate.donation_certificate_report_py3o_EN", + } + + return report_names.get( + lang, "donation_certificate.donation_certificate_report_py3o_EN" + ) diff --git a/setup/donation_certificate/odoo/addons/donation_certificate/wizard/tax_receipt_print_view.xml b/setup/donation_certificate/odoo/addons/donation_certificate/wizard/tax_receipt_print_view.xml new file mode 100644 index 000000000..c4cd64a00 --- /dev/null +++ b/setup/donation_certificate/odoo/addons/donation_certificate/wizard/tax_receipt_print_view.xml @@ -0,0 +1,42 @@ + + + + + donation_tax_receipt_print.form.inherit + donation.tax.receipt.print + + + 1 + + + + + + + + + + + + + + + + + + + + diff --git a/setup/donation_certificate/setup.py b/setup/donation_certificate/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/donation_certificate/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/donation_letter/odoo/addons/donation_letter/README.rst b/setup/donation_letter/odoo/addons/donation_letter/README.rst new file mode 100644 index 000000000..060083f5e --- /dev/null +++ b/setup/donation_letter/odoo/addons/donation_letter/README.rst @@ -0,0 +1,105 @@ +======================= +Donation Thanks Letter +======================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:31c48232bdc364a467057018cc5756125fa1ed080631b75f3d8beed95f7a6994 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fdonation-lightgray.png?logo=github + :target: https://github.com/OCA/donation/tree/16.0/donation_direct_debit + :alt: OCA/donation +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/donation-16-0/donation-16-0-donation_direct_debit + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/donation&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +The Donation Letter module facilitates the generation and distribution of personalized thank-you letters to donors. +Users can send these letters in bulk and also have the option to print them for offline distribution. + +**Table of contents** + +.. contents:: + :local: + +Features +============= + +* **Customization Thank-You Letters**: Users can create personalized thank-you letters tailored to individual donors, expressing gratitude for their contributions. +* **Bulk Sending**: The module allows users to send thank-you letters to multiple donors simultaneously, saving time and effort. +* **Integration**: Seamless integration with donor information ensures accuracy and relevance in the generated letters. +* **Printing Support**: Users have the ability to print thank-you letters directly from the system, enabling offline distribution and archiving. + +Usage +===== + +Once installed, users can utilize the Donation Letter functionality within the Odoo interface. Here's a brief guide on how to use the module: + +1. Navigate to the Donation Letter section in the Odoo interface. +2. Customize the thank-you letter template to convey the desired message of appreciation. +3. Select the donors for whom the thank-you letters should be generated. +4. Send the letters individually or in bulk. +5. Optionally, print physical copies of the letters for offline distribution or archival purposes. + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Akretion + +Contributors +~~~~~~~~~~~~ + +* Alexis de Lattre + +Maintainers +~~~~~~~~~~~ + +This module is maintained by brendajfa. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-brendajfa| image:: https://github.com/alexis-via.png?size=40px + :target: https://github.com/alexis-via + :alt: alexis-via + +Current `maintainer `__: + +|maintainer-brendajfa| + +This module is part of the `OCA/donation `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/setup/donation_letter/odoo/addons/donation_letter/__init__.py b/setup/donation_letter/odoo/addons/donation_letter/__init__.py new file mode 100644 index 000000000..082fa1746 --- /dev/null +++ b/setup/donation_letter/odoo/addons/donation_letter/__init__.py @@ -0,0 +1,4 @@ +# Copyright +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from . import models +from . import wizard diff --git a/setup/donation_letter/odoo/addons/donation_letter/__manifest__.py b/setup/donation_letter/odoo/addons/donation_letter/__manifest__.py new file mode 100644 index 000000000..b3fb715ab --- /dev/null +++ b/setup/donation_letter/odoo/addons/donation_letter/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Donation Thanks Letter", + "summary": "Donation Thanks Letter", + "version": "16.0.1.0.0", + "category": "Custom", + "website": "https://github.com/OCA/donation", + "author": "Barroux Abbey, Akretion, Odoo Community Association (OCA)", + "maintainers": ["brendajfa"], + "license": "AGPL-3", + "installable": True, + "depends": ["donation", "account", "mail", "donation_base"], + "data": [ + "security/ir.model.access.csv", + "data/mail_template.xml", + "views/donation_letter_send_views.xml", + "views/donation_send_button.xml", + ], +} diff --git a/setup/donation_letter/odoo/addons/donation_letter/data/mail_template.xml b/setup/donation_letter/odoo/addons/donation_letter/data/mail_template.xml new file mode 100644 index 000000000..379d0aec5 --- /dev/null +++ b/setup/donation_letter/odoo/addons/donation_letter/data/mail_template.xml @@ -0,0 +1,52 @@ + + + + Donation: Thanks Letter by email + + + {{ object.company_id.email }} + {{ object.partner_id.email }} + Thank you for your donation + Letter of appreciation + +
+

+ Dear + + Brandon Freeman + ( + Azure Interior + ), + + + Donor name, + +
+
+ We want to express our sincere gratitude for your generous donation of + $ 143,750.00 + to our organization. This contribution is a testament to your commitment and trust in our work. +
+
+ With this collaboration you help us move forward with our mission. We sincerely appreciate your support. +
+
+ Cordially, +
+
+ + -- +
+ Association name +
+

+
+
+ {{ object.partner_id.lang }} +
+
diff --git a/setup/donation_letter/odoo/addons/donation_letter/models/__init__.py b/setup/donation_letter/odoo/addons/donation_letter/models/__init__.py new file mode 100644 index 000000000..b1847a5ab --- /dev/null +++ b/setup/donation_letter/odoo/addons/donation_letter/models/__init__.py @@ -0,0 +1 @@ +from . import donation diff --git a/setup/donation_letter/odoo/addons/donation_letter/models/donation.py b/setup/donation_letter/odoo/addons/donation_letter/models/donation.py new file mode 100644 index 000000000..f7f15e9cb --- /dev/null +++ b/setup/donation_letter/odoo/addons/donation_letter/models/donation.py @@ -0,0 +1,74 @@ +from odoo import _, fields, models +from odoo.tools import get_lang + + +class Donation(models.Model): + _inherit = "donation.donation" + + is_thanks_letter_send = fields.Boolean( + default=False, + help="This field automatically becomes active when " + "the thanks letter has been send.", + ) + attachment_ids = fields.One2many( + comodel_name="ir.attachment", + inverse_name="res_id", + domain=[("res_model", "=", "donation.donation")], + string="Attachments", + ) + + def action_send_thanks(self): + template = self.env.ref(self._get_mail_template(), raise_if_not_found=False) + lang = False + + if len(self) == 1: + lang = template._render_lang(self.ids)[self.id] + + if not lang: + lang = get_lang(self.env).code + + compose_form = self.env.ref( + "donation_letter.donation_letter_send_wizard_form", raise_if_not_found=False + ) + ctx = { + "default_model": "donation.donation", + "default_res_model": "donation.donation", + "default_use_template": bool(template), + "default_template_id": template and template.id or False, + "default_composition_mode": "comment", + "mark_invoice_as_sent": True, + "default_email_layout_xmlid": ( + "mail.mail_notification_layout_with_responsible_signature" + ), + "force_email": True, + "active_ids": self.ids, + } + + report_action = { + "name": _("Send Thanks Letter"), + "type": "ir.actions.act_window", + "view_type": "form", + "view_mode": "form", + "res_model": "donation.letter.send", + "views": [(compose_form.id, "form")], + "view_id": compose_form.id, + "target": "new", + "context": ctx, + } + + return report_action + + def action_donation_print(self): + """Print the donation and mark it as sent, so that we can see more + easily the next step of the workflow + """ + self.filtered(lambda inv: not inv.is_thanks_letter_send).write( + {"is_thanks_letter_send": True} + ) + return self.env.ref("donation.report_thanks").report_action(self) + + def _get_mail_template(self): + """ + :return: the correct mail template based on the current move type + """ + return "donation_letter.email_template_thanks_letter" diff --git a/setup/donation_letter/odoo/addons/donation_letter/security/ir.model.access.csv b/setup/donation_letter/odoo/addons/donation_letter/security/ir.model.access.csv new file mode 100644 index 000000000..c9a16cb5e --- /dev/null +++ b/setup/donation_letter/odoo/addons/donation_letter/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_donation_letter_send,donation.letter.send,donation_letter.model_donation_letter_send,base.group_user,1,1,1,1 +access_donation_donation,donation.donation,donation.model_donation_donation,base.group_user,1,1,1,1 diff --git a/setup/donation_letter/odoo/addons/donation_letter/static/description/icon.png b/setup/donation_letter/odoo/addons/donation_letter/static/description/icon.png new file mode 100644 index 000000000..e8f0fcf0f Binary files /dev/null and b/setup/donation_letter/odoo/addons/donation_letter/static/description/icon.png differ diff --git a/setup/donation_letter/odoo/addons/donation_letter/views/donation_letter_send_views.xml b/setup/donation_letter/odoo/addons/donation_letter/views/donation_letter_send_views.xml new file mode 100644 index 000000000..b49109ec0 --- /dev/null +++ b/setup/donation_letter/odoo/addons/donation_letter/views/donation_letter_send_views.xml @@ -0,0 +1,143 @@ + + + + donation.letter.send.form + donation.letter.send + + +
+ + + + + +
+ + + +
+ Preview as a PDF +
+
+
+ + + +
+
+ +
+
+
+ + + +
+ + + + + + + +
+
+
+ +
+
+
diff --git a/setup/donation_letter/odoo/addons/donation_letter/views/donation_send_button.xml b/setup/donation_letter/odoo/addons/donation_letter/views/donation_send_button.xml new file mode 100644 index 000000000..34753e6e1 --- /dev/null +++ b/setup/donation_letter/odoo/addons/donation_letter/views/donation_send_button.xml @@ -0,0 +1,39 @@ + + + + donation.form.view.form.inherit + donation.donation + + + + + + + + 1 + + + + + + Send Thanks Letter + + + code + + if records: + action = records.action_send_thanks() + + + diff --git a/setup/donation_letter/odoo/addons/donation_letter/wizard/__init__.py b/setup/donation_letter/odoo/addons/donation_letter/wizard/__init__.py new file mode 100644 index 000000000..434c36ddc --- /dev/null +++ b/setup/donation_letter/odoo/addons/donation_letter/wizard/__init__.py @@ -0,0 +1 @@ +from . import donation_letter_send diff --git a/setup/donation_letter/odoo/addons/donation_letter/wizard/donation_letter_send.py b/setup/donation_letter/odoo/addons/donation_letter/wizard/donation_letter_send.py new file mode 100644 index 000000000..6ac8f3f28 --- /dev/null +++ b/setup/donation_letter/odoo/addons/donation_letter/wizard/donation_letter_send.py @@ -0,0 +1,178 @@ +from odoo import _, api, fields, models +from odoo.exceptions import UserError +from odoo.tools.misc import get_lang + +from odoo.addons.mail.wizard.mail_compose_message import _reopen + + +class DonationLeterSend(models.TransientModel): + _name = "donation.letter.send" + _inherits = {"mail.compose.message": "composer_id"} + _description = "Donation Thanks Letter Send" + + is_email = fields.Boolean( + "Email", default=lambda self: self.env.company.invoice_is_email + ) + donation_without_email = fields.Text( + compute="_compute_donation_without_email", + string="donation(s) that will not be sent", + ) + is_print = fields.Boolean( + "Print", default=lambda self: self.env.company.invoice_is_print + ) + printed = fields.Boolean("Is Printed", default=False) + donation_ids = fields.Many2many( + "donation.donation", + "donation_donation_donation_letter_send_rel", + string="Donations", + ) + composer_id = fields.Many2one( + "mail.compose.message", string="Composer", required=True, ondelete="cascade" + ) + template_id = fields.Many2one( + "mail.template", "Use template", domain="[('model', '=', 'donation.donation')]" + ) + + @api.model + def default_get(self, fields): + res = super(DonationLeterSend, self).default_get(fields) + res_ids = self._context.get("active_ids") + + donations = self.env["donation.donation"].browse(res_ids) + if not donations: + raise UserError(_("You can only send invoices.")) + + composer = self.env["mail.compose.message"].create( + { + "composition_mode": "comment" if len(res_ids) == 1 else "mass_mail", + } + ) + res.update( + { + "donation_ids": res_ids, + "composer_id": composer.id, + } + ) + return res + + @api.onchange("donation_ids") + def _compute_composition_mode(self): + for wizard in self: + wizard.composer_id.composition_mode = ( + "comment" if len(wizard.donation_ids) == 1 else "mass_mail" + ) + + @api.onchange("template_id") + def onchange_template_id(self): + for wizard in self: + if wizard.composer_id: + wizard.composer_id.template_id = wizard.template_id.id + wizard._compute_composition_mode() + wizard.composer_id._onchange_template_id_wrapper() + + @api.onchange("is_email") + def onchange_is_email(self): + if self.is_email: + res_ids = self._context.get("active_ids") + if not self.composer_id: + self.composer_id = self.env["mail.compose.message"].create( + { + "composition_mode": "comment" + if len(res_ids) == 1 + else "mass_mail", + "template_id": self.template_id.id, + } + ) + else: + self.composer_id.composition_mode = ( + "comment" if len(res_ids) == 1 else "mass_mail" + ) + self.composer_id.template_id = self.template_id.id + self._compute_composition_mode() + self.composer_id._onchange_template_id_wrapper() + + @api.onchange("is_email") + def _compute_donation_without_email(self): + for wizard in self: + if wizard.is_email and len(wizard.donation_ids) > 1: + donations = self.env["donation.donation"].search( + [ + ("id", "in", self.env.context.get("active_ids")), + ("partner_id.email", "=", False), + ] + ) + if donations: + wizard.donation_without_email = "%s\n%s" % ( + _( + "The following donation(s) will not be sent by email, " + "because the customers don't have email address." + ), + "\n".join([i.name for i in donations]), + ) + else: + wizard.donation_without_email = False + else: + wizard.donation_without_email = False + + def _send_email(self): + if self.is_email: + # with_context : we don't want to reimport the file we just exported. + self.composer_id.with_context( + no_new_invoice=True, + mail_notify_author=self.env.user.partner_id + in self.composer_id.partner_ids, + mailing_document_based=True, + )._action_send_mail() + for donation in self.donation_ids: + prioritary_attachments = donation.attachment_ids.filtered( + lambda x: x.mimetype.endswith("pdf") + ) + if prioritary_attachments: + donation.with_context(tracking_disable=True).sudo().write( + {"message_main_attachment_id": prioritary_attachments[0].id} + ) + donation.sudo().write({"is_thanks_letter_send": True}) + + def _print_document(self): + """to override for each type of models that will use this composer.""" + self.ensure_one() + action = self.donation_ids.action_donation_print() + + action.update({"close_on_report_download": True}) + return action + + def send_and_print_action(self): + self.ensure_one() + # Send the mails in the correct language by splitting the ids per lang. + # This should ideally be fixed in mail_compose_message, so when a fix + # is made there this whole commit should be reverted. + # basically self.body (which could be manually edited) extracts self.template_id, + # which is then not translated for each customer. + if self.composition_mode == "mass_mail" and self.template_id: + active_ids = self.env.context.get("active_ids", self.res_id) + active_records = self.env[self.model].browse(active_ids) + langs = set(active_records.mapped("partner_id.lang")) + for lang in langs: + active_ids_lang = active_records.filtered( + lambda r: r.partner_id.lang == lang + ).ids + self_lang = self.with_context( + active_ids=active_ids_lang, lang=get_lang(self.env, lang).code + ) + self_lang.onchange_template_id() + self_lang._send_email() + else: + active_record = self.env[self.model].browse(self.res_id) + lang = get_lang(self.env, active_record.partner_id.lang).code + self.with_context(lang=lang)._send_email() + if self.is_print: + return self._print_document() + return {"type": "ir.actions.act_window_close"} + + def save_as_template(self): + self.ensure_one() + self.composer_id.action_save_as_template() + self.template_id = self.composer_id.template_id.id + action = _reopen(self, self.id, self.model, context=self._context) + action.update({"name": _("Send Thanks Letter")}) + return action diff --git a/setup/donation_letter/setup.py b/setup/donation_letter/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/donation_letter/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/README.rst b/setup/donation_recurrency/odoo/addons/donation_recurrency/README.rst new file mode 100644 index 000000000..2ecd2d73a --- /dev/null +++ b/setup/donation_recurrency/odoo/addons/donation_recurrency/README.rst @@ -0,0 +1,110 @@ +===================== +Donation Recurrency +===================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:31c48232bdc364a467057018cc5756125fa1ed080631b75f3d8beed95f7a6994 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fdonation-lightgray.png?logo=github + :target: https://github.com/OCA/donation/tree/16.0/donation_direct_debit + :alt: OCA/donation +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/donation-16-0/donation-16-0-donation_direct_debit + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/donation&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +The Donation Recurrency module enhances the functionality of donation recurrence management within the system. +It introduces a template for defining donation recurrence patterns, automating the execution of pending donations via a cron job. +Additionally, users have the option to execute pending donations in bulk. +All donations created through this module are initially set to the draft state. +Furthermore, there's a relationship established between donation recurrence and donations, +allowing users to easily query donations associated with a specific recurrence pattern. + +**Table of contents** + +.. contents:: + :local: + +Features +============= + +* **Recurrence Template**: Users can create recurrence templates specifying the frequency and other relevant details for recurring donations. +* **Automated Execution**: The module utilizes a cron job to automatically execute pending donations according to their recurrence patterns. +* **Bulk Execution**: Users have the ability to execute pending donations in bulk, streamlining the process for efficiency. +* **Draft State**: All donations created through the module are initially set to the draft state, allowing for review and modification before finalization. +* **Relationship Management**: The module establishes a relationship between donation recurrence and donations, enabling users to easily access donations linked to a specific recurrence pattern. + +Usage +===== + +Once installed, users can utilize the Donation Recurrency functionality within the Odoo interface. Here's a brief overview of how to use the module: + +1. Navigate to the Donation Recurrency section in the Odoo interface. +2. Create a new recurrence template, specifying the desired frequency and other relevant details. +3. Monitor the execution of pending donations, either automatically via the cron job or manually in bulk. +4. Review and modify draft donations as needed before finalizing them. +5. Utilize the relationship management feature to query donations associated with specific recurrence patterns. + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Akretion + +Contributors +~~~~~~~~~~~~ + +* Alexis de Lattre + +Maintainers +~~~~~~~~~~~ + +This module is maintained by brendajfa. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-brendajfa| image:: https://github.com/alexis-via.png?size=40px + :target: https://github.com/alexis-via + :alt: alexis-via + +Current `maintainer `__: + +|maintainer-brendajfa| + +This module is part of the `OCA/donation `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/__init__.py b/setup/donation_recurrency/odoo/addons/donation_recurrency/__init__.py new file mode 100644 index 000000000..18330dabd --- /dev/null +++ b/setup/donation_recurrency/odoo/addons/donation_recurrency/__init__.py @@ -0,0 +1,4 @@ +# Copyright +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from . import models +from . import wizards diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/__manifest__.py b/setup/donation_recurrency/odoo/addons/donation_recurrency/__manifest__.py new file mode 100644 index 000000000..5ca999a09 --- /dev/null +++ b/setup/donation_recurrency/odoo/addons/donation_recurrency/__manifest__.py @@ -0,0 +1,23 @@ +# Copyright +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Donation Recurrency", + "summary": "Make recurring donations", + "version": "16.0.1.0.0", + "category": "Custom", + "website": "https://github.com/OCA/donation", + "author": "Barroux Abbey, Akretion, Odoo Community Association (OCA)", + "maintainers": ["brendajfa"], + "license": "AGPL-3", + "depends": ["base", "donation", "account_payment_mode", "donation_direct_debit"], + "data": [ + "security/ir.model.access.csv", + "data/donation_recurrency_sequence.xml", + "data/donation_cron.xml", + "views/donation_recurrency.xml", + "views/donation_terminate_reason.xml", + "views/donation.xml", + "wizards/donation_recurrency_terminate.xml", + ], +} diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/data/donation_cron.xml b/setup/donation_recurrency/odoo/addons/donation_recurrency/data/donation_cron.xml new file mode 100644 index 000000000..412ecff37 --- /dev/null +++ b/setup/donation_recurrency/odoo/addons/donation_recurrency/data/donation_cron.xml @@ -0,0 +1,16 @@ + + + + Generate Recurring Donations from Donations-Recurrency + + code + model.cron_recurring_create_donation() + + 1 + days + -1 + + + diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/data/donation_recurrency_sequence.xml b/setup/donation_recurrency/odoo/addons/donation_recurrency/data/donation_recurrency_sequence.xml new file mode 100644 index 000000000..171b7998e --- /dev/null +++ b/setup/donation_recurrency/odoo/addons/donation_recurrency/data/donation_recurrency_sequence.xml @@ -0,0 +1,28 @@ + + + + + + + Donation Recurrency + donation.recurrency + DON-REC-%(range_year)s- + 4 + + + + + + Donation + donation.donation + DON-%(range_year)s- + 4 + + + + + diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/models/__init__.py b/setup/donation_recurrency/odoo/addons/donation_recurrency/models/__init__.py new file mode 100644 index 000000000..461d28b6d --- /dev/null +++ b/setup/donation_recurrency/odoo/addons/donation_recurrency/models/__init__.py @@ -0,0 +1,6 @@ +from . import donation_recurrency_mixin +from . import donation_terminate_reason +from . import donation_recurrency +from . import donation + +# from . import donation_line diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/models/donation.py b/setup/donation_recurrency/odoo/addons/donation_recurrency/models/donation.py new file mode 100644 index 000000000..7c4e4034a --- /dev/null +++ b/setup/donation_recurrency/odoo/addons/donation_recurrency/models/donation.py @@ -0,0 +1,9 @@ +from odoo import fields, models + + +class DonationDonation(models.Model): + _inherit = "donation.donation" + + contract_id = fields.Many2one( + "donation.recurrency", string="Recurrency reference", index=True + ) diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/models/donation_line.py b/setup/donation_recurrency/odoo/addons/donation_recurrency/models/donation_line.py new file mode 100644 index 000000000..b4e4740ed --- /dev/null +++ b/setup/donation_recurrency/odoo/addons/donation_recurrency/models/donation_line.py @@ -0,0 +1,49 @@ +# from datetime import timedelta + +# from dateutil.relativedelta import relativedelta + +from odoo import fields, models + +# from odoo.exceptions import ValidationError + +# from .contract_line_constraints import get_allowed + + +class DonationLine(models.Model): + _name = "donation.line" + _description = "Donation Line" + _inherit = [ + # "donation.abstract.recurrency.line", + "donation.recurrency.mixin", + # "analytic.mixin", + ] + _order = "sequence,id" + + sequence = fields.Integer() + donation_id = fields.Many2one( + comodel_name="donation.recurrency", + string="Donation", + required=True, + index=True, + auto_join=True, + ondelete="cascade", + ) + state = fields.Selection( + selection=[ + ("upcoming", "Upcoming"), + ("in-progress", "In-progress"), + ("to-renew", "To renew"), + ("upcoming-close", "Upcoming Close"), + ("closed", "Closed"), + ("canceled", "Canceled"), + ], + compute="_compute_state", + search="_search_state", + ) + currency_id = fields.Many2one(related="donation_id.currency_id") + date_start = fields.Date(required=True) + # date_end = fields.Date(compute="_compute_date_end", store=True, readonly=False) + + # @api.depends("donation_id.date_end", "donation_id.line_recurrence") + # def _compute_date_end(self): + # self._set_recurrence_field("date_end") diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/models/donation_recurrency.py b/setup/donation_recurrency/odoo/addons/donation_recurrency/models/donation_recurrency.py new file mode 100644 index 000000000..4687dedb1 --- /dev/null +++ b/setup/donation_recurrency/odoo/addons/donation_recurrency/models/donation_recurrency.py @@ -0,0 +1,511 @@ +from odoo import _, api, fields, models + +# , Command +# from odoo.osv import expression +from odoo.exceptions import UserError + +# , ValidationError +# from lxml import etree + + +class DonationRecurrency(models.Model): + _name = "donation.recurrency" + _description = "Donation Recurrency" + # _order = "code, name asc" + _inherit = [ + "mail.thread", + "mail.activity.mixin", + "donation.recurrency.mixin", + # "donation.donation", + ] + + @api.model + def _get_view(self, view_id=None, view_type="form", **options): + + arch, view = super(DonationRecurrency, self)._get_view( + view_id, view_type, **options + ) + if view_type == "form" and not self.env.user.has_group( + "base.group_erp_manager" + ): + for node in arch.xpath("//field[@name='recurring_next_date']"): + node.set("readonly", "1") + # if view_type == 'form' and self.is_terminated: + # for node in arch.xpath("//button[@name='recurring_create_donations']"): + # node.set('invisible', '1') + + return arch, view + + name = fields.Char() + state = fields.Selection( + [("active", "Active"), ("suspended", "Suspended")], + # copy=False, + # index=True, + # tracking=True, + ) + active = fields.Boolean( + default=True, + ) + number = fields.Char( + required=True, + copy=False, + string="Recurrency - Donation Number", + index=True, + default=lambda self: _("New"), + readonly=True, + # states={"draft": [("readonly", False)]}, + ) + currency_id = fields.Many2one( + comodel_name="res.currency", + default=lambda self: self.env.company.currency_id, + ) + partner_id = fields.Many2one( + "res.partner", + string="Donor", + required=True, + index=True, + # states={"done": [("readonly", True)]}, + tracking=True, + ondelete="restrict", + ) + company_id = fields.Many2one( + "res.company", + required=True, + default=lambda self: self.env.company, + ) + line_ids = fields.One2many( + "donation.recurrency.line", + "donation_id", + required=True, + string="Donation Lines", + ) + + payment_mode_id = fields.Many2one( + "account.payment.mode", + domain="[('company_id', '=', company_id), ('donation', '=', True)]", + check_company=True, + required=True, + # default=partner_id.customer_payment_mode_id + default=lambda self: self.env.user.context_donation_payment_mode_id, + ) + campaign_id = fields.Many2one( + "donation.campaign", + string="Donation Campaign", + # tracking=True, + check_company=True, + ondelete="restrict", + default=lambda self: self.env.user.context_donation_campaign_id, + ) + tax_receipt_option = fields.Selection( + [ + ("none", "None"), + ("each", "For Each Donation"), + ("annual", "Annual Tax Receipt"), + ], + compute="_compute_tax_receipt_option", + # index=True, + # tracking=True, + # precompute=True, + # store=True, + # readonly=False, + ) + thanks_template_id = fields.Many2one( + "donation.thanks.template", + ondelete="restrict", + # copy=False, + ) + donation_date = fields.Date( + # required=True, + # states={"done": [("readonly", True)]}, + # index=True, + # tracking=True, + ) + note = fields.Text(string="Notes") + is_terminated = fields.Boolean(string="Terminated", readonly=True, copy=False) + terminate_reason_id = fields.Many2one( + comodel_name="donation.terminate.reason", + string="Termination Reason", + ondelete="restrict", + readonly=True, + copy=False, + tracking=True, + ) + terminate_comment = fields.Text( + string="Termination Comment", + readonly=True, + copy=False, + tracking=True, + ) + terminate_date = fields.Date( + string="Termination Date", + readonly=True, + copy=False, + tracking=True, + ) + + is_canceled = fields.Boolean(string="Canceled", default=False) + last_date_donated = fields.Date() + + donation_count = fields.Integer( + compute="_compute_donation_count", string="# of Donations" + ) + + _sql_constraints = [ + ( + "no_delete", + "CHECK(active = TRUE)", + "No se permite eliminar registros, solo archivarlos.", + ) + ] + + def _prepare_value_for_stop(self, date_end): + self.ensure_one() + return { + "date_end": date_end, + "recurring_next_date": self.get_next_donation_date( + self.next_period_date_start, + self.recurring_donation_type, + self.recurring_donation_offset, + self.recurring_rule_type, + self.recurring_interval, + max_date_end=date_end, + ), + } + + @api.onchange("partner_id") + def _payment_mode_id(self): + self.payment_mode_id = self.partner_id.customer_payment_mode_id + + def stop(self, date_end, manual_renew_needed=False, post_message=True): + """ + Put date_end on contract line + We don't consider contract lines that end's before the new end date + :param date_end: new date end for contract line + :return: True + """ + for rec in self: + if date_end < rec.date_start: + rec.cancel() + else: + if not rec.date_end or rec.date_end > date_end: + old_date_end = rec.date_end + rec.write(rec._prepare_value_for_stop(date_end)) + if post_message: + msg = ( + _( + """Recurrency stopped:
+ - End: %(old_end)s -- %(new_end)s + """ + ) + % { + "old_end": old_date_end, + "new_end": rec.date_end, + } + ) + rec.message_post(body=msg) + else: + rec.write( + { + "is_auto_renew": False, + "manual_renew_needed": manual_renew_needed, + } + ) + return True + + def _terminate_contract( + self, terminate_reason_id, terminate_comment, terminate_date + ): + self.ensure_one() + self.stop(terminate_date) + self.write( + { + "is_terminated": True, + "terminate_reason_id": terminate_reason_id.id, + "terminate_comment": terminate_comment, + "terminate_date": terminate_date, + } + ) + return True + + @api.depends("line_ids.donation_id") + def _compute_donation_count(self): + rg_res = self.env["donation.donation"].read_group( + [("contract_id", "in", self.ids), ("state", "=", "done")], + ["contract_id"], + ["contract_id"], + ) + mapped_data = {x["contract_id"][0]: x["contract_id_count"] for x in rg_res} + for rec in self: + rec.donation_count = mapped_data.get(rec.id, 0) + + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + if "company_id" in vals: + self = self.with_company(vals["company_id"]) + if vals.get("number", _("New")) == _("New"): + vals["number"] = self.env["ir.sequence"].next_by_code( + "donation.recurrency", sequence_date=vals.get("date_start") + ) or _("New") + vals["name"] = vals["number"] + return super().create(vals_list) + + def action_terminate_recurrency(self): + self.ensure_one() + context = {"default_contract_id": self.id} + return { + "type": "ir.actions.act_window", + "name": _("Terminate Recurrency"), + "res_model": "donation.recurrency.terminate", + "view_mode": "form", + "target": "new", + "context": context, + } + + @api.depends("partner_id") + def _compute_country_id(self): + for donation in self: + donation.country_id = donation.partner_id.country_id + + def _get_lines_to_donation(self, date_ref): + """ + This method fetches and returns the lines to invoice on the contract + (self), based on the given date. + :param date_ref: date used as reference date to find lines to invoice + :return: contract lines (contract.line recordset) + """ + self.ensure_one() + + lines_donations = [] + if not self.line_ids: + raise UserError( + _("Cannot create recurrence %s because it doesn't " "have any lines!") + % self.display_name + ) + for line in self.line_ids: + vals = { + "product_id": line.product_id.id, + "quantity": line.quantity, + "unit_price": round(line.unit_price, 2), + "currency_id": self.env.company.currency_id.id, + } + lines_donations.append(self.env["donation.line"].sudo().create(vals).id) + return sorted(lines_donations) + + def _prepare_donation(self, date_donation): + """Prepare the values for the generated donation record. + + :return: A vals dictionary + """ + self.ensure_one() + + vals = { + "partner_id": self.partner_id.id, + "payment_mode_id": self.payment_mode_id.id, + "company_id": self.company_id.id, + "campaign_id": self.campaign_id.id, + "tax_receipt_option": "annual", + "thanks_template_id": self.thanks_template_id.id, + "line_ids": [], + "donation_date": date_donation, + "contract_id": self.id, + } + + return vals + + def _update_recurring_next_date(self): + for rec in self: + last_date_donated = rec.next_period_date_end + rec.write( + { + "last_date_donated": last_date_donated, + } + ) + + def _prepare_recurring_donations_values(self, date_ref_don=False): + """ + This method builds the list of invoices values to create, based on + the lines to invoice of the contracts in self. + !!! The date of next invoice (recurring_next_date) is updated here !!! + :return: list of dictionaries (invoices values) + """ + donations_values = [] + for contract in self: + if not date_ref_don: + date_ref = contract.recurring_next_date + else: + date_ref = date_ref_don + if not date_ref: + continue + donation_lines = contract._get_lines_to_donation(date_ref) + if not donation_lines: + continue + donation_vals = contract._prepare_donation(date_ref) + donation_vals["line_ids"] = [(6, 0, donation_lines)] + donations_values.append(donation_vals) + contract._update_recurring_next_date() + return donations_values + + def recurring_create_donation(self): + """ + This method triggers the creation of the next invoices of the contracts + even if their next invoicing date is in the future. + """ + today = fields.Date.context_today(self) + recurrency = self.filtered(lambda rec: rec.recurring_next_date <= today) + donations = recurrency._recurring_create_donation() + return donations + + def _get_related_donations(self): + self.ensure_one() + donations = self.env["donation.donation"].search( + [ + ( + "contract_id", + "in", + self.ids, + ) + ] + ) + return donations + + @api.model + def _add_donation_origin(self, donations): + for item in self: + for don in donations & item._get_related_donations(): + don.message_post( + body=_( + "%(msg)s by recurrency." + "%(rec_name)s" + "" + ) + % { + "msg": don._creation_message(), + "model_name": item._name, + "rec_id": item.id, + "rec_name": item.display_name, + } + ) + + def _recurring_create_donation(self, date_ref=False): + donations_values = self._prepare_recurring_donations_values(date_ref) + donations = self.env["donation.donation"].sudo().create(donations_values) + self._add_donation_origin(donations) + self._compute_recurring_next_date() + return donations + + @api.model + def _get_recurring_create_func(self, create_type="donation"): + """ + Allows to retrieve the recurring create function depending + on generate_type attribute + """ + if create_type == "donation": + return self.__class__._recurring_create_donation + + @api.model + def _get_contracts_to_donation_domain(self, date_ref=None): + """ + This method builds the domain to use to find all + contracts (contract.contract) to invoice. + :param date_ref: optional reference date to use instead of today + :return: list (domain) usable on contract.contract + """ + domain = [] + if not date_ref: + date_ref = fields.Date.context_today(self) + domain.extend([("recurring_next_date", "<=", date_ref)]) + return domain + + @api.model + def _cron_recurring_create(self, date_ref=False, create_type="donation"): + """ + The cron function in order to create recurrent documents + from contracts. + """ + _recurring_create_func = self._get_recurring_create_func( + create_type=create_type + ) + if not date_ref: + date_ref = fields.Date.context_today(self) + domain = self._get_contracts_to_donation_domain(date_ref) + while self.search(domain): + contracts = self.search(domain) + companies = set(contracts.mapped("company_id")) + for company in companies: + contracts_to_donation = contracts.filtered( + lambda c: c.company_id == company + and (not c.date_end or c.recurring_next_date <= c.date_end) + ).with_company(company) + _recurring_create_func(contracts_to_donation, date_ref=False) + return True + + @api.model + def cron_recurring_create_donation(self, date_ref=None): + return self._cron_recurring_create(date_ref, create_type="donation") + + def recurring_create_donations(self): + for rec in self: + continue_while = True + while ( + rec.recurring_next_date + and (not rec.date_end or rec.recurring_next_date <= rec.date_end) + and continue_while + ): + continue_while = rec.recurring_create_donation() + # if rec.date_end and rec.recurring_next_date: + # continue_while = rec.recurring_next_date <= rec.date_end + # elif not rec.recurring_next_date: + # continue_while = False + # else: + # continue_while = True + # continue_while = rec.recurring_next_date and + # (not rec.date_end or rec.recurring_next_date <= rec.date_end) and res + + +class DonationRecurrencyLine(models.Model): + _name = "donation.recurrency.line" + _description = "Donation REC Lines" + _rec_name = "product_id" + _inherit = [ + "donation.line", + "donation.recurrency.mixin", + ] + _description = "Donation Recurrency Lines" + + donation_id = fields.Many2one( + "donation.recurrency", + string="Donation Recurrency", + ) + + currency_id = fields.Many2one( + related="donation_id.currency_id", + ) + + @api.depends( + "unit_price", + "quantity", + "product_id", + "donation_id.currency_id", + "donation_id.company_id", + ) + def _compute_amount(self): + for line in self: + amount = line.quantity * line.unit_price + line.amount = amount + donation_currency = line.donation_id.currency_id + date = fields.Date.context_today(self) + amount_company_currency = donation_currency._convert( + amount, + line.donation_id.company_id.currency_id, + line.donation_id.company_id, + date, + ) + tax_receipt_amount_cc = 0.0 + if line.product_id.tax_receipt_ok: + tax_receipt_amount_cc = amount_company_currency + line.amount_company_currency = amount_company_currency + line.tax_receipt_amount = tax_receipt_amount_cc diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/models/donation_recurrency_mixin.py b/setup/donation_recurrency/odoo/addons/donation_recurrency/models/donation_recurrency_mixin.py new file mode 100644 index 000000000..993357cf5 --- /dev/null +++ b/setup/donation_recurrency/odoo/addons/donation_recurrency/models/donation_recurrency_mixin.py @@ -0,0 +1,250 @@ +# Copyright 2018 ACSONE SA/NV. +# Copyright 2020 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from dateutil.relativedelta import relativedelta + +from odoo import api, fields, models + + +class DonationRecurrencyBasicMixin(models.AbstractModel): + _name = "donation.recurrency.basic.mixin" + _description = "Basic recurrency mixin for abstract donation models" + + recurring_rule_type = fields.Selection( + [ + ("daily", "Day(s)"), + ("weekly", "Week(s)"), + ("monthly", "Month(s)"), + ("monthlylastday", "Month(s) last day"), + ("quarterly", "Quarter(s)"), + ("semesterly", "Semester(s)"), + ("yearly", "Year(s)"), + ], + default="monthly", + string="Recurrence", + help="Specify Interval for automatic donation generation.", + ) + recurring_donation_type = fields.Selection( + [("pre-paid", "Pre-paid"), ("post-paid", "Post-paid")], + default="pre-paid", + string="Donation type", + help=( + "Specify if the donation must be generated at the beginning " + "(pre-paid) or end (post-paid) of the period." + ), + ) + recurring_donation_offset = fields.Integer( + compute="_compute_recurring_donation_offset", + string="Donation offset", + help=( + "Number of days to offset the donation from the period end " + "date (in post-paid mode) or start date (in pre-paid mode)." + ), + ) + recurring_interval = fields.Integer( + default=1, + string="Donation Every", + help="Donation every (Days/Week/Month/Year)", + ) + date_start = fields.Date() + recurring_next_date = fields.Date(string="Date of Next Donation", readonly=True) + + @api.depends("recurring_donation_type", "recurring_rule_type") + def _compute_recurring_donation_offset(self): + for rec in self: + method = self._get_default_recurring_donation_offset + rec.recurring_donation_offset = method( + rec.recurring_donation_type, rec.recurring_rule_type + ) + + @api.model + def _get_default_recurring_donation_offset( + self, recurring_donation_type, recurring_rule_type + ): + if ( + recurring_donation_type == "pre-paid" + or recurring_rule_type == "monthlylastday" + ): + return 0 + else: + return 1 + + +class DonationRecurrencyMixin(models.AbstractModel): + _inherit = "donation.recurrency.basic.mixin" + _name = "donation.recurrency.mixin" + _description = "Recurrency mixin for donation models" + + date_start = fields.Date(default=lambda self: fields.Date.context_today(self)) + recurring_next_date = fields.Date( + compute="_compute_recurring_next_date", store=True, readonly=False, copy=True + ) + date_end = fields.Date(index=True) + next_period_date_start = fields.Date( + string="Next Period Start", + compute="_compute_next_period_date_start", + ) + next_period_date_end = fields.Date( + string="Next Period End", + compute="_compute_next_period_date_end", + ) + # termination_notice_date = fields.Date( + # compute="_compute_termination_notice_date", + # store=True, + # copy=False, + # ) + last_date_donated = fields.Date(readonly=True, copy=False) + manual_renew_needed = fields.Boolean( + default=False, + help="This flag is used to make a difference between a definitive stop" + "and temporary one for which a user is not able to plan a" + "successor in advance", + ) + + @api.depends("next_period_date_start") + def _compute_recurring_next_date(self): + for rec in self: + rec.recurring_next_date = self.get_next_donation_date( + rec.next_period_date_start, + rec.recurring_donation_type, + rec.recurring_donation_offset, + rec.recurring_rule_type, + rec.recurring_interval, + max_date_end=rec.date_end, + ) + + @api.depends("last_date_donated", "date_start", "date_end") + def _compute_next_period_date_start(self): + for rec in self: + if rec.last_date_donated: + next_period_date_start = rec.last_date_donated + relativedelta(days=1) + else: + next_period_date_start = rec.date_start + if ( + rec.date_end + and next_period_date_start + and next_period_date_start > rec.date_end + ): + next_period_date_start = False + rec.next_period_date_start = next_period_date_start + + @api.depends( + "next_period_date_start", + "recurring_donation_type", + "recurring_donation_offset", + "recurring_rule_type", + "recurring_interval", + "date_end", + "recurring_next_date", + ) + def _compute_next_period_date_end(self): + for rec in self: + rec.next_period_date_end = self.get_next_period_date_end( + rec.next_period_date_start, + rec.recurring_rule_type, + rec.recurring_interval, + max_date_end=rec.date_end, + next_donation_date=rec.recurring_next_date, + recurring_donation_type=rec.recurring_donation_type, + recurring_donation_offset=rec.recurring_donation_offset, + ) + + @api.model + def get_relative_delta(self, recurring_rule_type, interval): + """Return a relativedelta for one period. + + When added to the first day of the period, + it gives the first day of the next period. + """ + if recurring_rule_type == "daily": + return relativedelta(days=interval) + elif recurring_rule_type == "weekly": + return relativedelta(weeks=interval) + elif recurring_rule_type == "monthly": + return relativedelta(months=interval) + elif recurring_rule_type == "monthlylastday": + return relativedelta(months=interval, day=1) + elif recurring_rule_type == "quarterly": + return relativedelta(months=3 * interval) + elif recurring_rule_type == "semesterly": + return relativedelta(months=6 * interval) + else: + return relativedelta(years=interval) + + @api.model + def get_next_period_date_end( + self, + next_period_date_start, + recurring_rule_type, + recurring_interval, + max_date_end, + next_donation_date=False, + recurring_donation_type=False, + recurring_donation_offset=False, + ): + """Compute the end date for the next period. + + The next period normally depends on recurrence options only. + It is however possible to provide it a next donation date, in + which case this method can adjust the next period based on that + too. In that scenario it required the donation type and offset + arguments. + """ + if not next_period_date_start: + return False + if max_date_end and next_period_date_start > max_date_end: + # start is past max date end: there is no next period + return False + if not next_donation_date: + # regular algorithm + next_period_date_end = ( + next_period_date_start + + self.get_relative_delta(recurring_rule_type, recurring_interval) + - relativedelta(days=1) + ) + else: + # special algorithm when the next donation date is forced + if recurring_donation_type == "pre-paid": + next_period_date_end = ( + next_donation_date + - relativedelta(days=recurring_donation_offset) + + self.get_relative_delta(recurring_rule_type, recurring_interval) + - relativedelta(days=1) + ) + else: # post-paid + next_period_date_end = next_donation_date - relativedelta( + days=recurring_donation_offset + ) + if max_date_end and next_period_date_end > max_date_end: + # end date is past max_date_end: trim it + next_period_date_end = max_date_end + return next_period_date_end + + @api.model + def get_next_donation_date( + self, + next_period_date_start, + recurring_donation_type, + recurring_donation_offset, + recurring_rule_type, + recurring_interval, + max_date_end, + ): + next_period_date_end = self.get_next_period_date_end( + next_period_date_start, + recurring_rule_type, + recurring_interval, + max_date_end=max_date_end, + ) + if not next_period_date_end: + return False + if recurring_donation_type == "pre-paid": + recurring_next_date = next_period_date_start + relativedelta( + days=recurring_donation_offset + ) + else: # post-paid + recurring_next_date = next_period_date_end + relativedelta( + days=recurring_donation_offset + ) + return recurring_next_date diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/models/donation_terminate_reason.py b/setup/donation_recurrency/odoo/addons/donation_recurrency/models/donation_terminate_reason.py new file mode 100644 index 000000000..fc54a97ff --- /dev/null +++ b/setup/donation_recurrency/odoo/addons/donation_recurrency/models/donation_terminate_reason.py @@ -0,0 +1,15 @@ +# Copyright 2020 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class DonationTerminateReason(models.Model): + + _name = "donation.terminate.reason" + _description = "Donation Termination Reason" + + name = fields.Char(required=True) + terminate_comment_required = fields.Boolean( + string="Require a termination comment", default=True + ) diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/security/ir.model.access.csv b/setup/donation_recurrency/odoo/addons/donation_recurrency/security/ir.model.access.csv new file mode 100644 index 000000000..1160fd191 --- /dev/null +++ b/setup/donation_recurrency/odoo/addons/donation_recurrency/security/ir.model.access.csv @@ -0,0 +1,6 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_donation_recurrency,donation.recurrency,model_donation_recurrency,base.group_user,1,1,1,1 +access_donation_recurrency_line,donation.recurrency.line,model_donation_recurrency_line,base.group_user,1,1,1,1 +access_donation_donation_rec,donation.donation,donation.model_donation_donation,base.group_user,1,1,1,1 +access_donation_terminate_reason,donation.terminate.reason,model_donation_terminate_reason,base.group_user,1,1,1,1 +access_donation_recurrency_terminate,donation.recurrency.terminate,model_donation_recurrency_terminate,base.group_user,1,1,1,1 diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/static/description/icon.png b/setup/donation_recurrency/odoo/addons/donation_recurrency/static/description/icon.png new file mode 100644 index 000000000..e8f0fcf0f Binary files /dev/null and b/setup/donation_recurrency/odoo/addons/donation_recurrency/static/description/icon.png differ diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/views/donation.xml b/setup/donation_recurrency/odoo/addons/donation_recurrency/views/donation.xml new file mode 100644 index 000000000..ec0986613 --- /dev/null +++ b/setup/donation_recurrency/odoo/addons/donation_recurrency/views/donation.xml @@ -0,0 +1,15 @@ + + + + + donation.donation.search + donation.donation + + + + + + + + + diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/views/donation_line.xml b/setup/donation_recurrency/odoo/addons/donation_recurrency/views/donation_line.xml new file mode 100644 index 000000000..4dd49c400 --- /dev/null +++ b/setup/donation_recurrency/odoo/addons/donation_recurrency/views/donation_line.xml @@ -0,0 +1,191 @@ + + + + + donation.line form view (in contract) + donation.line + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/views/donation_recurrency.xml b/setup/donation_recurrency/odoo/addons/donation_recurrency/views/donation_recurrency.xml new file mode 100644 index 000000000..cb180e129 --- /dev/null +++ b/setup/donation_recurrency/odoo/addons/donation_recurrency/views/donation_recurrency.xml @@ -0,0 +1,238 @@ + + + + + Donations + donation.donation + tree,form,graph + {'search_default_contract_id': active_id} + + + donation.recurrency.form + donation.recurrency + +
+ + +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ +
+
+ + + donation.recurrency.line.tree + donation.recurrency.line + + + + + + + + + + + + + + + + + + + + + Donations Rec Lines + donation.recurrency.line + tree,form + + + + donation.recurrency.tree + donation.recurrency + + +
+
+ + + + + + + + + + +
+
+
+ + + + + Recurring Donations new module + donation.recurrency + tree,form,pivot,graph + +

+ Click to create a new donation recurrency. +

+
+
+ + + + +
diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/views/donation_terminate_reason.xml b/setup/donation_recurrency/odoo/addons/donation_recurrency/views/donation_terminate_reason.xml new file mode 100644 index 000000000..45783141a --- /dev/null +++ b/setup/donation_recurrency/odoo/addons/donation_recurrency/views/donation_terminate_reason.xml @@ -0,0 +1,46 @@ + + + + + donation.terminate.reason + +
+ + + + + + +
+
+
+ + donation.terminate.reason + + + + + + + + + Recurrency Termination Reason + donation.terminate.reason + tree,form + + + + +
diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/wizards/__init__.py b/setup/donation_recurrency/odoo/addons/donation_recurrency/wizards/__init__.py new file mode 100644 index 000000000..f90c03d59 --- /dev/null +++ b/setup/donation_recurrency/odoo/addons/donation_recurrency/wizards/__init__.py @@ -0,0 +1 @@ +from . import donation_recurrency_terminate diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/wizards/donation_recurrency_terminate.py b/setup/donation_recurrency/odoo/addons/donation_recurrency/wizards/donation_recurrency_terminate.py new file mode 100644 index 000000000..b6b3a956b --- /dev/null +++ b/setup/donation_recurrency/odoo/addons/donation_recurrency/wizards/donation_recurrency_terminate.py @@ -0,0 +1,37 @@ +# Copyright 2020 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class DonationRecurrencyTerminate(models.TransientModel): + + _name = "donation.recurrency.terminate" + _description = "Terminate Recurrency Wizard" + + contract_id = fields.Many2one( + comodel_name="donation.recurrency", + string="Contract", + required=True, + ondelete="cascade", + ) + terminate_reason_id = fields.Many2one( + comodel_name="donation.terminate.reason", + string="Termination Reason", + required=True, + ondelete="cascade", + ) + terminate_comment = fields.Text(string="Termination Comment") + terminate_date = fields.Date(string="Termination Date", required=True) + terminate_comment_required = fields.Boolean( + related="terminate_reason_id.terminate_comment_required" + ) + + def terminate_contract(self): + for wizard in self: + wizard.contract_id._terminate_contract( + wizard.terminate_reason_id, + wizard.terminate_comment, + wizard.terminate_date, + ) + return True diff --git a/setup/donation_recurrency/odoo/addons/donation_recurrency/wizards/donation_recurrency_terminate.xml b/setup/donation_recurrency/odoo/addons/donation_recurrency/wizards/donation_recurrency_terminate.xml new file mode 100644 index 000000000..7f8fa58eb --- /dev/null +++ b/setup/donation_recurrency/odoo/addons/donation_recurrency/wizards/donation_recurrency_terminate.xml @@ -0,0 +1,32 @@ + + + + + donation.recurrency.terminate + +
+ + + + + + + +
+
+
+
+
+
diff --git a/setup/donation_recurrency/setup.py b/setup/donation_recurrency/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/donation_recurrency/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/donation_summary/odoo/addons/donation_summary/README.rst b/setup/donation_summary/odoo/addons/donation_summary/README.rst new file mode 100644 index 000000000..24e9115b8 --- /dev/null +++ b/setup/donation_summary/odoo/addons/donation_summary/README.rst @@ -0,0 +1,107 @@ +===================== +Donation Summary +===================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:31c48232bdc364a467057018cc5756125fa1ed080631b75f3d8beed95f7a6994 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fdonation-lightgray.png?logo=github + :target: https://github.com/OCA/donation/tree/16.0/donation_direct_debit + :alt: OCA/donation +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/donation-16-0/donation-16-0-donation_direct_debit + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/donation&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +The Donation Summary module empowers users to generate comprehensive summaries of donations made by donors within a specified date range. +Users can select two dates to define the interval of the search and choose whether to generate a summary for a single donor or multiple donors. +Additionally, the module provides functionality to send these summaries via email upon request. + +**Table of contents** + +.. contents:: + :local: + +Features +============= + +* **Summary Generation**: Users can generate detailed summaries of donations made by donors, capturing key information within a specified date range. +* **Date Range Selection**: The module allows users to define the interval for the search by selecting two dates, ensuring flexibility and accuracy in summary generation. +* **Single or Multiple Donor Options**: Users have the flexibility to generate summaries for individual donors or multiple donors at once, depending on their requirements. +* **Email Sending**: Upon request, users can send the generated summaries via email directly from the system, streamlining communication with donors. + + +Usage +===== + +Once installed, users can access the Donation Summary functionality within the Odoo interface. Here's a quick guide on how to utilize the module: + +1. Navigate to the Donation Summary section in the Odoo interface. +2. Select the desired date range for the summary search. +3. Choose whether to generate a summary for a single donor or multiple donors. +4. Generate the summary. +5. Optionally, send the generated summaries via email to relevant recipients upon request. + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Akretion + +Contributors +~~~~~~~~~~~~ + +* Alexis de Lattre + +Maintainers +~~~~~~~~~~~ + +This module is maintained by brendajfa. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-brendajfa| image:: https://github.com/alexis-via.png?size=40px + :target: https://github.com/alexis-via + :alt: alexis-via + +Current `maintainer `__: + +|maintainer-brendajfa| + +This module is part of the `OCA/donation `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/setup/donation_summary/odoo/addons/donation_summary/__init__.py b/setup/donation_summary/odoo/addons/donation_summary/__init__.py new file mode 100644 index 000000000..082fa1746 --- /dev/null +++ b/setup/donation_summary/odoo/addons/donation_summary/__init__.py @@ -0,0 +1,4 @@ +# Copyright +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from . import models +from . import wizard diff --git a/setup/donation_summary/odoo/addons/donation_summary/__manifest__.py b/setup/donation_summary/odoo/addons/donation_summary/__manifest__.py new file mode 100644 index 000000000..22ee5488a --- /dev/null +++ b/setup/donation_summary/odoo/addons/donation_summary/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Donation Summary", + "summary": "Make summary donations", + "version": "16.0.1.0.0", + "category": "Custom", + "website": "https://github.com/OCA/donation", + "author": "Barroux Abbey, Akretion, Odoo Community Association (OCA)", + "maintainers": ["brendajfa"], + "license": "AGPL-3", + "depends": ["donation", "donation_base", "mail", "donation_certificate"], + "data": [ + "report/donation_summary.xml", + "report/donation_summary_templates.xml", + "views/donation_summary_views.xml", + "views/donation_summary_send_views.xml", + "data/mail_template.xml", + ], +} diff --git a/setup/donation_summary/odoo/addons/donation_summary/data/mail_template.xml b/setup/donation_summary/odoo/addons/donation_summary/data/mail_template.xml new file mode 100644 index 000000000..d240737e7 --- /dev/null +++ b/setup/donation_summary/odoo/addons/donation_summary/data/mail_template.xml @@ -0,0 +1,49 @@ + + + + Donation: Send Summary + + + {{ object.company_id.email }} + {{ object.partner_id.email }} + Summary of Your Donations + Donation Summary + +
+

Dear + Brandon Freeman,
+
We want to express our sincere gratitude for your suport and generosity towards our mission.
We are pleased to inform you that attached you will find a detailed summary of all + the donations you have made from 01/01/2023 + to 31/12/2023. +
+
This summary includes the date and amount of each contribution, allowing you to have a + clear overview of your impact on our organization. +
+
The total amount of your donations during this period add up to $ + 143,750.00. +
+
+
If you would like more details or have any questions about your donation history, + please fell free to contact us.
+
Cordially,
+
+ + Association name +

+
+
+ {{ object.partner_id.lang }} + + RDS_{{ (object.name or '') }} +
+
diff --git a/setup/donation_summary/odoo/addons/donation_summary/models/__init__.py b/setup/donation_summary/odoo/addons/donation_summary/models/__init__.py new file mode 100644 index 000000000..c450dab14 --- /dev/null +++ b/setup/donation_summary/odoo/addons/donation_summary/models/__init__.py @@ -0,0 +1,2 @@ +from . import donation +from . import donation_summary diff --git a/setup/donation_summary/odoo/addons/donation_summary/models/donation.py b/setup/donation_summary/odoo/addons/donation_summary/models/donation.py new file mode 100644 index 000000000..ab40f82cf --- /dev/null +++ b/setup/donation_summary/odoo/addons/donation_summary/models/donation.py @@ -0,0 +1,9 @@ +from odoo import fields, models + + +class Donation(models.Model): + _inherit = "donation.donation" + + donation_summary_id = fields.Many2one( + string="Donation Summary", comodel_name="donation.summary" + ) diff --git a/setup/donation_summary/odoo/addons/donation_summary/models/donation_summary.py b/setup/donation_summary/odoo/addons/donation_summary/models/donation_summary.py new file mode 100644 index 000000000..0d292e9ca --- /dev/null +++ b/setup/donation_summary/odoo/addons/donation_summary/models/donation_summary.py @@ -0,0 +1,254 @@ +import datetime + +from odoo import _, api, fields, models +from odoo.exceptions import UserError +from odoo.tools.misc import get_lang + + +class DonationSummary(models.Model): + _name = "donation.summary" + _inherit = ["mail.thread", "mail.activity.mixin"] + + @api.model + def _default_end_date(self): + return datetime.date(fields.Date.context_today(self).year - 1, 12, 31) + + @api.model + def _default_start_date(self): + return datetime.date(fields.Date.context_today(self).year - 1, 1, 1) + + name = fields.Char(compute="_compute_name") + + is_summary_send = fields.Boolean( + help="This field automatically becomes active when " + "the summary has been send.", + ) + partner_id = fields.Many2one( + "res.partner", + string="Donor", + index=True, + states={"sent": [("readonly", True)]}, + tracking=True, + ondelete="restrict", + domain="[('donation_ids', '!=', False)]", + ) + start_date = fields.Date( + required=True, + default=lambda self: self._default_start_date(), + states={"sent": [("readonly", True)]}, + ) + end_date = fields.Date( + required=True, + default=lambda self: self._default_end_date(), + states={"sent": [("readonly", True)]}, + ) + + donation_ids = fields.One2many( + "donation.donation", + "donation_summary_id", + string="Related Donations", + compute="_compute_donation_ids", + required=True, + states={"sent": [("readonly", True)]}, + ) + + state = fields.Selection( + [("draft", "Draft"), ("sent", "Sent")], + readonly=True, + copy=False, + default="draft", + index=True, + tracking=True, + ) + company_id = fields.Many2one( + "res.company", + string="Company", + ondelete="cascade", + default=lambda self: self.env.company, + ) + amount_total = fields.Monetary( + tracking=True, + compute="_compute_amounts", + states={"sent": [("readonly", True)]}, + ) + currency_id = fields.Many2one( + "res.currency", + required=True, + states={"sent": [("readonly", True)]}, + tracking=True, + ondelete="restrict", + default=lambda self: self.env.company.currency_id, + ) + attachment_ids = fields.One2many( + "ir.attachment", + "res_id", + domain=[("res_model", "=", "donation.summary")], + string="Attachments", + ) + + def _compute_name(self): + for rec in self: + rec.name = ( + (rec.partner_id.name).replace(" ", "") + + "_" + + str(rec.start_date).replace("-", "") + + "_" + + str(rec.end_date).replace("-", "") + if rec.partner_id + else "" + ) + + def _prepare_donation_summary(self, existing_donation_ids): + vals = { + "partner_id": existing_donation_ids.partner_id.id, + "start_date": self.start_date, + "end_date": self.end_date, + "state": "draft", + "is_summary_send": False, + } + return vals + + def massive_creation(self): + d_sum = self.env["donation.summary"] + donation_summary_ids = [] + for partner in self.donation_ids.partner_id.ids: + donations = self.donation_ids.filtered( + lambda donation: donation.partner_id.id == partner + ) + values = self._prepare_donation_summary(donations) + donation_summary_ids.append(values) + if not len(donation_summary_ids): + raise UserError(_("No annual tax receipt to generate")) + + self.unlink() + + for new_summary_vals in donation_summary_ids: + d_sum.create(new_summary_vals) + + # Redireccionar a la vista tree + return { + "name": _("Donations Summary"), + "type": "ir.actions.act_window", + "res_model": "donation.summary", + "view_type": "tree", + "view_mode": "tree,form", + "target": "main", + "context": self.env.context, + } + + @api.depends("donation_ids") + def _compute_amounts(self): + for rec in self: + amount = 0 + for don in rec.donation_ids: + amount += don.amount_total_company_currency + rec.amount_total = amount + + @api.depends("partner_id", "start_date", "end_date") + def _compute_donation_ids(self): + for rec in self: + domain = [("state", "=", "done"), ("donation_summary_id", "=", False)] + if rec.partner_id: + domain += [("partner_id", "=", rec.partner_id.id)] + if rec.start_date and rec.end_date: + domain += [ + ("donation_date", ">=", rec.start_date), + ("donation_date", "<=", rec.end_date), + ] + donations = self.env["donation.donation"].search(domain) + if not donations: + raise UserError( + _("There must be at least one donation in the summary.") + ) + rec.donation_ids = donations + + def massive_send_summary(self): + template = self.env.ref(self._get_mail_template(), raise_if_not_found=False) + compose_form = self.env.ref( + "donation_summary.donation_summary_send_wizard_form", + raise_if_not_found=False, + ) + ctx = dict( + default_model="donation.summary", + # For the sake of consistency we need a default_res_model if + # default_res_id is set. Not renaming default_model as it can + # create many side-effects. + default_res_model="donation.summary", + default_use_template=bool(template), + default_template_id=template and template.id or False, + default_composition_mode="comment", + mark_invoice_as_sent=True, + default_email_layout_xmlid=( + "mail.mail_notification_layout_with_responsible_signature" + ), + force_email=True, + active_ids=self.ids, + ) + report_action = { + "name": _("Send Donation Summary"), + "type": "ir.actions.act_window", + "view_type": "form", + "view_mode": "form", + "res_model": "donation.summary.send", + "views": [(compose_form.id, "form")], + "view_id": compose_form.id, + "target": "new", + "context": ctx, + } + return report_action + + def send_summary(self): + template = self.env.ref(self._get_mail_template(), raise_if_not_found=False) + lang = False + if template: + lang = template._render_lang(self.ids)[self.id] + if not lang: + lang = get_lang(self.env).code + compose_form = self.env.ref( + "donation_summary.donation_summary_send_wizard_form", + raise_if_not_found=False, + ) + ctx = dict( + default_model="donation.summary", + default_res_id=self.id, + default_res_model="donation.summary", + default_use_template=bool(template), + default_template_id=template and template.id or False, + default_composition_mode="comment", + mark_invoice_as_sent=True, + default_email_layout_xmlid=( + "mail.mail_notification_layout_with_responsible_signature" + ), + force_email=True, + active_ids=self.ids, + ) + report_action = { + "name": _("Send Donation Summary"), + "type": "ir.actions.act_window", + "view_type": "form", + "view_mode": "form", + "res_model": "donation.summary.send", + "views": [(compose_form.id, "form")], + "view_id": compose_form.id, + "target": "new", + "context": ctx, + } + + return report_action + + def _get_mail_template(self): + """ + :return: the correct mail template based on the current move type + """ + return "donation_summary.email_template_donation_summary" + + def action_print_donation_summary(self): + """Print the certificate and mark it as sent, so that we can see more + easily the next step of the workflow + """ + self.filtered(lambda sum: not sum.is_summary_send).write( + {"is_summary_send": True} + ) + return self.env.ref("donation_summary.report_donation_summary").report_action( + self + ) diff --git a/setup/donation_summary/odoo/addons/donation_summary/report/donation_summary.xml b/setup/donation_summary/odoo/addons/donation_summary/report/donation_summary.xml new file mode 100644 index 000000000..51c25ffc3 --- /dev/null +++ b/setup/donation_summary/odoo/addons/donation_summary/report/donation_summary.xml @@ -0,0 +1,15 @@ + + + + Request for Donation Summary + donation.summary + qweb-pdf + donation_summary.report_donationsummary + donation_summary.report_donationsummary + 'Request for Donation Summary - %s' %(object.partner_id.name) + + report + + diff --git a/setup/donation_summary/odoo/addons/donation_summary/report/donation_summary_templates.xml b/setup/donation_summary/odoo/addons/donation_summary/report/donation_summary_templates.xml new file mode 100644 index 000000000..fa1101f8a --- /dev/null +++ b/setup/donation_summary/odoo/addons/donation_summary/report/donation_summary_templates.xml @@ -0,0 +1,89 @@ + + + + + + diff --git a/setup/donation_summary/odoo/addons/donation_summary/security/ir.model.access.csv b/setup/donation_summary/odoo/addons/donation_summary/security/ir.model.access.csv new file mode 100644 index 000000000..0b00e2926 --- /dev/null +++ b/setup/donation_summary/odoo/addons/donation_summary/security/ir.model.access.csv @@ -0,0 +1,4 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_donation_summary,donation.summary,donation_summary.model_donation_summary,base.group_user,1,1,1,1 +access_donation_donation,donation.donation,donation.model_donation_donation,base.group_user,1,1,1,1 +access_donation_summary_send,donation.summary.send,donation_summary.model_donation_summary_send,base.group_user,1,1,1,1 diff --git a/setup/donation_summary/odoo/addons/donation_summary/static/description/icon.png b/setup/donation_summary/odoo/addons/donation_summary/static/description/icon.png new file mode 100644 index 000000000..e8f0fcf0f Binary files /dev/null and b/setup/donation_summary/odoo/addons/donation_summary/static/description/icon.png differ diff --git a/setup/donation_summary/odoo/addons/donation_summary/views/donation_summary_send_views.xml b/setup/donation_summary/odoo/addons/donation_summary/views/donation_summary_send_views.xml new file mode 100644 index 000000000..7ba5dd539 --- /dev/null +++ b/setup/donation_summary/odoo/addons/donation_summary/views/donation_summary_send_views.xml @@ -0,0 +1,140 @@ + + + + donation.summary.send.form + donation.summary.send + + +
+ + + + + +
+ + + +
+ Preview as a PDF +
+
+
+ + + +
+
+ +
+
+
+ + +
+ + + + + + + +
+
+
+ +
+
+
diff --git a/setup/donation_summary/odoo/addons/donation_summary/views/donation_summary_views.xml b/setup/donation_summary/odoo/addons/donation_summary/views/donation_summary_views.xml new file mode 100644 index 000000000..8064df4f3 --- /dev/null +++ b/setup/donation_summary/odoo/addons/donation_summary/views/donation_summary_views.xml @@ -0,0 +1,122 @@ + + + + Donations Summary + donation.summary + tree,form + +

+ Create a new custom field in your donation summary record +

+

+ Odoo helps you easily track all custom fields related to a donation summary. +

+
+
+ + + donation.summary.view.tree + donation.summary + + + + + + + + + + + + + + + donation.summary.view.form + donation.summary + +
+
+
+ + + + + + + + + + +
+ + + +
+
+
+
+ + + donation.summary.view.tree.inherit + donation.summary + + + +
+
+
+
+
+ + donation.summary.view..search + donation.summary + + + + + + + + +
diff --git a/setup/donation_summary/odoo/addons/donation_summary/wizard/__init__.py b/setup/donation_summary/odoo/addons/donation_summary/wizard/__init__.py new file mode 100644 index 000000000..e3da7d70a --- /dev/null +++ b/setup/donation_summary/odoo/addons/donation_summary/wizard/__init__.py @@ -0,0 +1 @@ +from . import donation_summary_send diff --git a/setup/donation_summary/odoo/addons/donation_summary/wizard/donation_summary_send.py b/setup/donation_summary/odoo/addons/donation_summary/wizard/donation_summary_send.py new file mode 100644 index 000000000..dc4db102b --- /dev/null +++ b/setup/donation_summary/odoo/addons/donation_summary/wizard/donation_summary_send.py @@ -0,0 +1,217 @@ +from odoo import _, api, fields, models +from odoo.exceptions import UserError +from odoo.tools.misc import get_lang + +from odoo.addons.mail.wizard.mail_compose_message import _reopen + + +class DonationSummarySend(models.TransientModel): + _name = "donation.summary.send" + _inherits = {"mail.compose.message": "composer_id"} + _description = "Donation Summary Send" + + is_email = fields.Boolean( + "Email", default=lambda self: self.env.company.invoice_is_email + ) + summary_without_email = fields.Text( + compute="_compute_donation_without_email", + string="Summary(s) that will not be sent", + ) + is_print = fields.Boolean( + "Print", default=lambda self: self.env.company.invoice_is_print + ) + printed = fields.Boolean("Is Printed", default=False) + donation_summary_ids = fields.Many2many( + "donation.summary", + "donation_summary_donation_summary_send_rel", + string="Donations Summary", + ) + composer_id = fields.Many2one( + "mail.compose.message", required=True, ondelete="cascade" + ) + template_id = fields.Many2one( + "mail.template", + "Use template", + default=lambda self: self._get_report_template(), + ) + # template_id = fields.Many2one('mail.template', 'Use template', + # domain="[('model', '=', 'donation.summary'), ]", + # default=lambda self: self._get_report_template()) + + def _get_report_template(self): + template = self.env.ref( + "donation_summary.email_template_donation_summary", raise_if_not_found=False + ) + return template.id or False + + @api.model + def default_get(self, fields): + res = super(DonationSummarySend, self).default_get(fields) + res_ids = self._context.get("active_ids") + + donation_summary = self.env["donation.summary"].browse(res_ids) + if not donation_summary: + raise UserError(_("You can only send invoices.")) + + composer = self.env["mail.compose.message"].create( + { + "composition_mode": "comment" if len(res_ids) == 1 else "mass_mail", + } + ) + res.update( + { + "donation_summary_ids": res_ids, + "composer_id": composer.id, + } + ) + return res + + @api.onchange("donation_summary_ids") + def _compute_composition_mode(self): + for wizard in self: + wizard.composer_id.composition_mode = ( + "comment" if len(wizard.donation_summary_ids) == 1 else "mass_mail" + ) + + def get_ref_report_name(self, wizard_template_id_lang): + lang = ( + list(wizard_template_id_lang.values())[0] + if wizard_template_id_lang + else "XX" + ) + report_names = { + "es_ES": "donation_certificate.donation_certificate_report_py3o_ES", + "ca_ES": "donation_certificate.donation_certificate_report_py3o_CAT", + "fr_FR": "donation_certificate.donation_certificate_report_py3o_FR", + "en_GB": "donation_certificate.donation_certificate_report_py3o_EN", + } + report_name = report_names.get( + lang, "donation_certificate.donation_certificate_report_py3o_EN" + ) + + return self.env.ref(report_name, raise_if_not_found=False).id + + @api.onchange("template_id") + def onchange_template_id(self): + for wizard in self: + if wizard.composer_id: + # Hay que mirar porque el archivo se llama igual que el ID + # Get different report depending on the lang + # lang_object = wizard.template_id.lang + # render_model = wizard.template_id.render_model + # res_ids = wizard.donation_summary_ids.ids + # lang = wizard.template_id._render_template(lang_object, render_model, res_ids) + # wizard.template_id.report_template = self.get_ref_report_name(lang) + wizard.composer_id.template_id = wizard.template_id.id + # Get different report depending on the lang + # wizard.composer_id.template_id.report_template + # = self.get_ref_report_name(lang) + wizard._compute_composition_mode() + wizard.composer_id._onchange_template_id_wrapper() + + @api.onchange("is_email") + def onchange_is_email(self): + if self.is_email: + res_ids = self._context.get("active_ids") + data = { + "composition_mode": "comment" if len(res_ids) == 1 else "mass_mail", + "template_id": self.template_id.id, + } + if not self.composer_id: + self.composer_id = self.env["mail.compose.message"].create(data) + else: + self.composer_id.write(data) + self._compute_composition_mode() + self.composer_id._onchange_template_id_wrapper() + + @api.onchange("is_email") + def _compute_donation_without_email(self): + for wizard in self: + if wizard.is_email and len(wizard.donation_summary_ids) > 1: + don_summary = self.env["donation.summary"].search( + [ + ("id", "in", self.env.context.get("active_ids")), + ("partner_id.email", "=", False), + ] + ) + if don_summary: + wizard.summary_without_email = "%s\n%s" % ( + _( + "The following donation(s) will not be sent by email, " + "because the customers don't have email address." + ), + "\n".join([i.name for i in don_summary]), + ) + else: + wizard.summary_without_email = False + else: + wizard.summary_without_email = False + + def _send_email(self): + if self.is_email: + self.composer_id.with_context( + no_new_invoice=True, + mail_notify_author=self.env.user.partner_id + in self.composer_id.partner_ids, + mailing_document_based=True, + )._action_send_mail() + for don_summary in self.donation_summary_ids: + prioritary_attachments = don_summary.attachment_ids.filtered( + lambda x: x.mimetype.endswith("pdf") + ) + if prioritary_attachments: + don_summary.with_context(tracking_disable=True).sudo().write( + {"message_main_attachment_id": prioritary_attachments[0].id} + ) + + # def _print_certificate_document(self): + # """ to override for each type of models that will use this composer.""" + # self.ensure_one() + # action = self.donation_summary_ids.action_print_tax_receipt() + + # action.update({'close_on_report_download': True}) + # return action + + def send_and_print_action(self): + self.ensure_one() + # Send the mails in the correct language by splitting the ids per lang. + # This should ideally be fixed in mail_compose_message, + # so when a fix is made there this whole commit should be reverted. + # basically self.body (which could be manually edited) extracts self.template_id, + # which is then not translated for each customer. + if self.composition_mode == "mass_mail" and self.template_id: + active_ids = self.env.context.get("active_ids", self.res_id) + active_records = self.env[self.model].browse(active_ids) + langs = set(active_records.mapped("partner_id.lang")) + for lang in langs: + active_ids_lang = active_records.filtered( + lambda r: r.partner_id.lang == lang + ).ids + self_lang = self.with_context( + active_ids=active_ids_lang, lang=get_lang(self.env, lang).code + ) + self_lang.onchange_template_id() + self_lang._send_email() + else: + active_record = self.env[self.model].browse(self.res_id) + lang = get_lang(self.env, active_record.partner_id.lang).code + self.with_context(lang=lang)._send_email() + if self.is_print: + return self._print_document() + self.donation_summary_ids.write({"state": "sent"}) + return {"type": "ir.actions.act_window_close"} + + def save_as_template(self): + self.ensure_one() + self.composer_id.action_save_as_template() + self.template_id = self.composer_id.template_id.id + action = _reopen(self, self.id, self.model, context=self._context) + action.update({"name": _("Send Summary")}) + return action + + def _print_document(self): + """to override for each type of models that will use this composer.""" + self.ensure_one() + action = self.donation_summary_ids.action_print_donation_summary() + action.update({"close_on_report_download": True}) + return action diff --git a/setup/donation_summary/setup.py b/setup/donation_summary/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/donation_summary/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/report_py3o/LICENSE b/setup/report_py3o/LICENSE new file mode 100644 index 000000000..dba13ed2d --- /dev/null +++ b/setup/report_py3o/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/setup/report_py3o/README.rst b/setup/report_py3o/README.rst new file mode 100644 index 000000000..5641c7478 --- /dev/null +++ b/setup/report_py3o/README.rst @@ -0,0 +1,248 @@ +================== +Py3o Report Engine +================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:1c3c9a1899a796d0fe8814de54bb3a7c12e6ad43ba658afa2243ae218ff91696 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Freporting--engine-lightgray.png?logo=github + :target: https://github.com/OCA/reporting-engine/tree/16.0/report_py3o + :alt: OCA/reporting-engine +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/reporting-engine-16-0/reporting-engine-16-0-report_py3o + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/reporting-engine&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +The py3o reporting engine is a reporting engine for Odoo based on `Libreoffice `_: + +* the report is created with Libreoffice (ODT or ODS), +* the report is stored on the server in OpenDocument format (.odt or .ods file) +* the report is sent to the user in OpenDocument format or in any output format supported by Libreoffice (PDF, HTML, DOC, DOCX, Docbook, XLS, etc.) + +The key advantages of a Libreoffice based reporting engine are: + +* no need to be a developer to create or modify a report: the report is created and modified with Libreoffice. So this reporting engine has a full WYSIWYG report development tool! +* For a PDF report in A4/Letter format, it's easier to develop it with a tool such as Libreoffice that is designed to create A4/Letter documents than to develop it in HTML/CSS, also some print peculiarities (backgrounds, margin boxes) are not very well supported by the HTML/CSS based solutions. +* If you want your users to be able to modify the document after its generation by Odoo, just configure the document with ODT output (or DOC or DOCX) and the user will be able to modify the document with Libreoffice (or Word) after its generation by Odoo. +* Easy development of spreadsheet reports in ODS format (XLS output possible). + +This module *report_py3o* is the base module for the Py3o reporting engine. If used alone, it will spawn a libreoffice process for each ODT to PDF (or ODT to DOCX, ..) document conversion. This is slow and can become a problem if you have a lot of reports to convert from ODT to another format. In this case, you should consider the additionnal module *report_py3o_fusion_server* which is designed to work with a libreoffice daemon. With *report_py3o_fusion_server*, the technical environnement is more complex to setup because you have to install additionnal software components and run 2 daemons, but you have much better performances and you can configure the libreoffice PDF export options in Odoo (allows to generate PDF forms, PDF/A documents, password-protected PDFs, watermarked PDFs, etc.). + +This reporting engine is an alternative to `Aeroo `_: these two reporting engines have similar features but their implementation is entirely different. You cannot use aeroo templates as drop in replacement though, you'll have to change a few details. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +Install the required python libs: + +.. code:: + + pip install py3o.template + pip install py3o.formats + +To allow the conversion of ODT or ODS reports to other formats (PDF, DOC, DOCX, etc.), install libreoffice: + +.. code:: + + apt-get --no-install-recommends install libreoffice + +Configuration +============= + +For example, to replace the native invoice report by a custom py3o report, add the following XML file in your custom module: + +.. code:: + + + + + + py3o + odt + my_custom_module_base + report/account_invoice.odt + + + + +where *my_custom_module_base* is the name of the custom Odoo module. In this example, the invoice ODT file is located in *my_custom_module_base/report/account_invoice.odt*. + +It's also possible to reference a template located in a trusted path of your +Odoo server. In this case you must let the *module* entry empty and specify +the path to the template as *py3o_template_fallback*. + +.. code:: + + + + + + py3o + odt + /odoo/templates/py3o/report/account_invoice.odt + + + + +Moreover, you must also modify the Odoo server configuration file to declare +the allowed root directory for your py3o templates. Only templates located +into this directory can be loaded by py3o report. + +.. code:: + + [options] + ... + + [report_py3o] + root_tmpl_path=/odoo/templates/py3o + +If you want an invoice in PDF format instead of ODT format, the XML file should look like: + +.. code:: + + + + + + py3o + pdf + my_custom_module_base + report/account_invoice.odt + + + + +If you want to add a new py3o PDF report (and not replace a native report), the XML file should look like this: + +.. code:: + + + + + + Partner Summary + res.partner + res.partner.summary + py3o + pdf + my_custom_module_base + report/partner_summary.odt + + report + + + + + +Configuration parameters +~~~~~~~~~~~~~~~~~~~~~~~~ + +py3o.conversion_command + The command to be used to run the conversion, ``libreoffice`` by default. If you change this, whatever you set here must accept the parameters ``--headless --convert-to $ext $file`` and put the resulting file into ``$file``'s directory with extension ``$ext``. The command will be started in ``$file``'s directory. + +Usage +===== + +The templating language is `extensively documented `_, the records are exposed in libreoffice as ``objects``, on which you can also call functions. + +Available functions and objects +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +user + Browse record of current user +lang + The user's company's language as string (ISO code) +b64decode + ``base64.b64decode`` +format_multiline_value(string) + Generate the ODF equivalent of ``
`` and `` `` for multiline fields (ODF is XML internally, so those would be skipped otherwise) +html_sanitize(string) + Sanitize HTML string +time + Python's ``time`` module +display_address(partner) + Return a formatted string of the partner's address +o_format_lang(value, lang_code=False, digits=None, grouping=True, monetary=False, dp=False, currency_obj=False, no_break_space=True) + Return a formatted numeric or monetary value according to the context language and timezone +o_format_date(value, lang_code=False, date_format=False) + Return a formatted date or time value according to the context language and timezone + + +Sample report templates +~~~~~~~~~~~~~~~~~~~~~~~ + +Sample py3o report templates for the main Odoo native reports (invoice, sale order, purchase order, picking, etc.) are available on the Github project `odoo-py3o-report-templates `_. + +Known issues / Roadmap +====================== + +* generate barcode ? +* add more detailed example in demo file to showcase features +* add migration guide aeroo -> py3o + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* XCG Consulting +* ACSONE SA/NV + +Contributors +~~~~~~~~~~~~ + +* Florent Aide (`XCG Consulting `_) +* Laurent Mignon , +* Alexis de Lattre , +* Guewen Baconnier +* Omar Castiñeira +* Holger Brunn +* Phuc Tran Thanh + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/reporting-engine `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/setup/report_py3o/__init__.py b/setup/report_py3o/__init__.py new file mode 100644 index 000000000..f7209b171 --- /dev/null +++ b/setup/report_py3o/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import controllers diff --git a/setup/report_py3o/__manifest__.py b/setup/report_py3o/__manifest__.py new file mode 100644 index 000000000..186395036 --- /dev/null +++ b/setup/report_py3o/__manifest__.py @@ -0,0 +1,29 @@ +# Copyright 2013 XCG Consulting (http://odoo.consulting) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Py3o Report Engine", + "summary": "Reporting engine based on Libreoffice (ODT -> ODT, " + "ODT -> PDF, ODT -> DOC, ODT -> DOCX, ODS -> ODS, etc.)", + "version": "16.0.1.0.0", + "category": "Reporting", + "license": "AGPL-3", + "author": "XCG Consulting, ACSONE SA/NV, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/reporting-engine", + "depends": ["web"], + "external_dependencies": { + "python": ["py3o.template", "py3o.formats", "PyPDF2"], + "deb": ["libreoffice"], + }, + "assets": { + "web.assets_backend": [ + "report_py3o/static/src/js/py3oactionservice.esm.js", + ], + }, + "data": [ + "security/ir.model.access.csv", + "views/py3o_template.xml", + "views/ir_actions_report.xml", + "demo/report_py3o.xml", + ], + "installable": True, +} diff --git a/setup/report_py3o/controllers/__init__.py b/setup/report_py3o/controllers/__init__.py new file mode 100644 index 000000000..12a7e529b --- /dev/null +++ b/setup/report_py3o/controllers/__init__.py @@ -0,0 +1 @@ +from . import main diff --git a/setup/report_py3o/controllers/main.py b/setup/report_py3o/controllers/main.py new file mode 100644 index 000000000..05be92036 --- /dev/null +++ b/setup/report_py3o/controllers/main.py @@ -0,0 +1,94 @@ +# Copyright 2017 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) +import json +import mimetypes + +from werkzeug import exceptions +from werkzeug.urls import url_decode + +from odoo.http import content_disposition, request, route, serialize_exception +from odoo.tools import html_escape + +from odoo.addons.web.controllers.report import ReportController + + +class ReportController(ReportController): + @route() + def report_routes(self, reportname, docids=None, converter=None, **data): + if converter != "py3o": + return super().report_routes( + reportname=reportname, docids=docids, converter=converter, **data + ) + context = dict(request.env.context) + + if docids: + docids = [int(i) for i in docids.split(",")] + if data.get("options"): + data.update(json.loads(data.pop("options"))) + if data.get("context"): + # Ignore 'lang' here, because the context in data is the + # one from the webclient *but* if the user explicitely wants to + # change the lang, this mechanism overwrites it. + data["context"] = json.loads(data["context"]) + if data["context"].get("lang"): + del data["context"]["lang"] + context.update(data["context"]) + + ir_action = request.env["ir.actions.report"] + action_py3o_report = ir_action.get_from_report_name( + reportname, "py3o" + ).with_context(**context) + if not action_py3o_report: + raise exceptions.HTTPException( + description="Py3o action report not found for report_name " + "%s" % reportname + ) + res, filetype = ir_action._render(reportname, docids, data) + filename = action_py3o_report.gen_report_download_filename(docids, data) + if not filename.endswith(filetype): + filename = "{}.{}".format(filename, filetype) + content_type = mimetypes.guess_type("x." + filetype)[0] + http_headers = [ + ("Content-Type", content_type), + ("Content-Length", len(res)), + ("Content-Disposition", content_disposition(filename)), + ] + return request.make_response(res, headers=http_headers) + + @route() + def report_download(self, data, context=None, token=None): + """This function is used by 'qwebactionmanager.js' in order to trigger + the download of a py3o/controller report. + + :param data: a javascript array JSON.stringified containg report + internal url ([0]) and type [1] + :returns: Response with a filetoken cookie and an attachment header + """ + requestcontent = json.loads(data) + url, report_type = requestcontent[0], requestcontent[1] + if "py3o" not in report_type: + return super().report_download(data, context=context, token=token) + try: + reportname = url.split("/report/py3o/")[1].split("?")[0] + docids = None + if "/" in reportname: + reportname, docids = reportname.split("/") + + if docids: + # Generic report: + response = self.report_routes( + reportname, docids=docids, converter="py3o" + ) + else: + # Particular report: + # decoding the args represented in JSON + data = list(url_decode(url.split("?")[1]).items()) + response = self.report_routes( + reportname, converter="py3o", **dict(data) + ) + response.set_cookie("fileToken", context) + return response + except Exception as e: + se = serialize_exception(e) + error = {"code": 200, "message": "Odoo Server Error", "data": se} + return request.make_response(html_escape(json.dumps(error))) diff --git a/setup/report_py3o/demo/report_py3o.xml b/setup/report_py3o/demo/report_py3o.xml new file mode 100644 index 000000000..cfc515b6a --- /dev/null +++ b/setup/report_py3o/demo/report_py3o.xml @@ -0,0 +1,20 @@ + + + + + Py3o Demo Report + ir.actions.report + res.users + py3o_user_info + py3o + odt + report_py3o + demo/res_user.odt + object.name.replace(' ', '_') + '-demo.odt' + + report + + diff --git a/setup/report_py3o/demo/res_user.odt b/setup/report_py3o/demo/res_user.odt new file mode 100644 index 000000000..acdd576a7 Binary files /dev/null and b/setup/report_py3o/demo/res_user.odt differ diff --git a/setup/report_py3o/i18n/am.po b/setup/report_py3o/i18n/am.po new file mode 100644 index 000000000..9c4a5b8cf --- /dev/null +++ b/setup/report_py3o/i18n/am.po @@ -0,0 +1,282 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Amharic (https://www.transifex.com/oca/teams/23907/am/)\n" +"Language: am\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/ar.po b/setup/report_py3o/i18n/ar.po new file mode 100644 index 000000000..373eb18f7 --- /dev/null +++ b/setup/report_py3o/i18n/ar.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Arabic (https://www.transifex.com/oca/teams/23907/ar/)\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "أنشئ بواسطة" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "أنشئ في" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "اسم العرض" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "المعرف" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "آخر تعديل في" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "آخر تحديث بواسطة" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "آخر تحديث في" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "الاسم" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/bg.po b/setup/report_py3o/i18n/bg.po new file mode 100644 index 000000000..0f98e6577 --- /dev/null +++ b/setup/report_py3o/i18n/bg.po @@ -0,0 +1,282 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Bulgarian (https://www.transifex.com/oca/teams/23907/bg/)\n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Създадено от" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Създадено на" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Име за Показване" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Последно обновено на" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Последно обновено от" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Последно обновено на" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Име" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/bs.po b/setup/report_py3o/i18n/bs.po new file mode 100644 index 000000000..3efed67e8 --- /dev/null +++ b/setup/report_py3o/i18n/bs.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Bosnian (https://www.transifex.com/oca/teams/23907/bs/)\n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Prikaži naziv" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Zadnje mijenjano" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Ime" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/ca.po b/setup/report_py3o/i18n/ca.po new file mode 100644 index 000000000..2db915309 --- /dev/null +++ b/setup/report_py3o/i18n/ca.po @@ -0,0 +1,284 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Creat per" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Creat el" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Veure el nom" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Darrera modificació el" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Darrera Actualització per" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Darrera Actualització el" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nom" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Informe" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +#, fuzzy +msgid "Report Type" +msgstr "Informe" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/cs.po b/setup/report_py3o/i18n/cs.po new file mode 100644 index 000000000..d277de05b --- /dev/null +++ b/setup/report_py3o/i18n/cs.po @@ -0,0 +1,282 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Czech (https://www.transifex.com/oca/teams/23907/cs/)\n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Vytvořil(a)" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Vytvořeno" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Zobrazovaný název" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Naposled upraveno" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Naposled upraveno" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Naposled upraveno" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Název" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/da.po b/setup/report_py3o/i18n/da.po new file mode 100644 index 000000000..4dc54a38e --- /dev/null +++ b/setup/report_py3o/i18n/da.po @@ -0,0 +1,284 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Danish (https://www.transifex.com/oca/teams/23907/da/)\n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Oprettet af" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Oprettet den" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Vist navn" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "Id" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Sidst ændret den" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Sidst opdateret af" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Sidst opdateret den" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Navn" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Rapport" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +#, fuzzy +msgid "Report Type" +msgstr "Rapport" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/de.po b/setup/report_py3o/i18n/de.po new file mode 100644 index 000000000..421dadf51 --- /dev/null +++ b/setup/report_py3o/i18n/de.po @@ -0,0 +1,286 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +# Niki Waibel , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: Niki Waibel , 2017\n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Erstellt von" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Erstellt am:" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Anzeigename" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +#, fuzzy +msgid "Ir Actions Report" +msgstr "ir.actions.report.xml" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Zuletzt geändert am" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Zuletzt aktualisiert von" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Zuletzt aktualisiert am" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Bezeichnung" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Bericht" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +#, fuzzy +msgid "Report Type" +msgstr "Bericht" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/el_GR.po b/setup/report_py3o/i18n/el_GR.po new file mode 100644 index 000000000..b9304de90 --- /dev/null +++ b/setup/report_py3o/i18n/el_GR.po @@ -0,0 +1,285 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Greek (Greece) (https://www.transifex.com/oca/teams/23907/" +"el_GR/)\n" +"Language: el_GR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Δημιουργήθηκε από " + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Δημιουργήθηκε στις" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "Κωδικός" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Τελευταία ενημέρωση από" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Τελευταία ενημέρωση στις" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Αναφορά" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +#, fuzzy +msgid "Report Type" +msgstr "Αναφορά" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/en_GB.po b/setup/report_py3o/i18n/en_GB.po new file mode 100644 index 000000000..ed8a66694 --- /dev/null +++ b/setup/report_py3o/i18n/en_GB.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: English (United Kingdom) (https://www.transifex.com/oca/" +"teams/23907/en_GB/)\n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Created by" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Created on" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Display Name" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Last Modified on" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Last Updated by" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Last Updated on" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Name" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/es.po b/setup/report_py3o/i18n/es.po new file mode 100644 index 000000000..499fefd32 --- /dev/null +++ b/setup/report_py3o/i18n/es.po @@ -0,0 +1,311 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +# Fernando Lara , 2017 +# Pedro M. Baeza , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2023-09-07 16:37+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "(Originario)" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "Retroceder" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "Campo 'Formato de salida' es necesario para el informe Py3O" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "Tipo de Documento" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "Agrupar por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" +"Si el usuario no proporciona una plantilla se utilizará una ruta relativa a " +"la raíz de SU módulo o una ruta absoluta en SU servidor." + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" +"Si ejecuta un informe sobre varios registros, de forma predeterminada Odoo " +"generará un archivo ZIP que contiene tantos archivos como registros " +"seleccionados. Si habilita esta opción, Odoo generará en su lugar un informe " +"único para los registros seleccionados." + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "Informe de acciones Ir" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "Es el formato nativo de Py3O" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "El informe Py3O no está disponible" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "Plantilla de Oficina de Libros" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "Tipo de Plantilla de Documento de Oficina de Libros" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" +"El tiempo de ejecución de Libreoffice no está disponible. Póngase en " +"contacto con su administrador." + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "Módulo" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "Msg Informe Py3O no disponible" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "Múltiples registros en un único informe" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nombre" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "No se ha encontrado ninguna plantilla. Salir." + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "Presentación del ODF" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "Presentación ODF (Plano)" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "Hoja de cálculo ODF" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "Hoja de cálculo ODF (plana)" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "Documento de Texto ODF" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "Documento de texto ODF (plano)" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "Formato de Salida" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "Camino al tiempo de ejecución de LibreOffice" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "Reporte de Demostracion Py3o" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "Reportes de Py3o" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "Modelos Py3o" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "Plantilla Py3o" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "Informar Acción" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "Reporte de Py30" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "Tipo de Informe" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "Modelo" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "El módulo implementador que proporciona este informe" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" +"El programa libreoffice es necesario para generar el informe py3o '%s' pero " +"no se encuentra en la ruta bin. Debe instalar el runtime libreoffice en el " +"servidor. Si el runtime ya está instalado y no es encontrado por Odoo, puede " +"proporcionar la ruta completa al runtime estableciendo la clave " +"'py3o.conversion_command' en los parámetros de configuración." + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" +"El tipo de informe que se generará, cada uno con su propio método de " +"generación. HTML significa que el informe se abrirá directamente en el " +"navegador PDF quiere decir que el informe se renderizará utilizando " +"Wkhtmltopdf y será descargado por el usuario." + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "object.name.replace(' ', '_') + '-demo.odt'" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "py3o" + +#~ msgid "Py3o" +#~ msgstr "Programa Py3o" + +#~ msgid "ir.actions.report.xml" +#~ msgstr "ir.actions.report.xml" + +#~ msgid "py3o.template" +#~ msgstr "py3o.modelo" diff --git a/setup/report_py3o/i18n/es_AR.po b/setup/report_py3o/i18n/es_AR.po new file mode 100644 index 000000000..5e81004f9 --- /dev/null +++ b/setup/report_py3o/i18n/es_AR.po @@ -0,0 +1,301 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2023-09-20 17:53+0000\n" +"Last-Translator: Ignacio Buioli \n" +"Language-Team: Spanish (Argentina) (https://www.transifex.com/oca/teams/" +"23907/es_AR/)\n" +"Language: es_AR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "(Nativo)" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Mostrar Nombre" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "Retroceder" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "El Campo 'Formato de Salida' es obligatorio para el reporte Py3O" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "Tipo de Archivo" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "Agrupar Por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" +"Si el usuario no proporciona una plantilla, se utilizará esta; debe ser una " +"ruta relativa a la raíz de SU módulo o una ruta absoluta en su servidor." + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" +"Si ejecuta un reporte sobre varios registros, de forma predeterminada Odoo " +"generará un archivo ZIP que contiene tantos archivos como registros " +"seleccionados. Si habilita esta opción, Odoo generará en su lugar un reporte " +"único para los registros seleccionados." + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "Acciones de Reporte IR" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "Es Formato Py3O Nativo" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "El Reporte Py3O no está Habilitado" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Última actualización realizada por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Última actualización el" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "Plantilla de LibreOffice" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "Tipo de Archivo de la Plantilla de LibreOffice" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" +"El ejecutable de LibreOffice no está disponible. Contacte a su administrador." + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "Módulo" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "Mensaje del Reporte Py3O no está Disponible" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "Múltiples Registros en un Reporte Simple" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nombre" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "No se encontró plantilla. Abortando." + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "Presentación ODF" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "Presentación ODF (Plano)" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "Hoja de Cálculo ODF" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "Hoja de Cálculo ODF (Plano)" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "Documento de Texto ODF" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "Documento de Texto ODF (Plano)" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "Formato de Salida" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "Ruta al ejecutable de libreoffice" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "Reporte Py3o Demo" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "Reportes Py3o" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "Plantillas Py3o" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "Plantilla Py3o" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "Acción de Reporte" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "Reporte Py30" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "Tipo de Reporte" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "Plantilla" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "El módulo implementador que proporciona este reporte" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" +"Se requiere el ejecutable de LibreOffice para generar el informe de py3o " +"'%s', pero no se encuentra en la ruta del contenedor. Debe instalar " +"libreoffice runtime en el servidor. Si el ejecutable ya está instalado y " +"Odoo no lo encuentra, puede proporcionar la ruta completa al ejecutable " +"configurando la clave 'py3o.conversion_command' en los parámetros de " +"configuración." + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" +"El tipo de reporte que se generará, cada uno con su propio método de " +"presentación. HTML significa que el informe se abrirá directamente en su " +"navegador. PDF significa que el informe se generará utilizando Wkhtmltopdf y " +"el usuario lo descargará." + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "object.name.replace(' ', '_') + '-demo.odt'" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "py3o" diff --git a/setup/report_py3o/i18n/es_CL.po b/setup/report_py3o/i18n/es_CL.po new file mode 100644 index 000000000..cb41f405f --- /dev/null +++ b/setup/report_py3o/i18n/es_CL.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Chile) (https://www.transifex.com/oca/teams/23907/" +"es_CL/)\n" +"Language: es_CL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID (identificación)" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Última actualización de" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nombre" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/es_CO.po b/setup/report_py3o/i18n/es_CO.po new file mode 100644 index 000000000..ec9f7a394 --- /dev/null +++ b/setup/report_py3o/i18n/es_CO.po @@ -0,0 +1,285 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Colombia) (https://www.transifex.com/oca/teams/23907/" +"es_CO/)\n" +"Language: es_CO\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Creado" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Nombre Público" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Última Modificación el" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Actualizado por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Actualizado" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nombre" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Iforme" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +#, fuzzy +msgid "Report Type" +msgstr "Iforme" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/es_CR.po b/setup/report_py3o/i18n/es_CR.po new file mode 100644 index 000000000..5c5d60b74 --- /dev/null +++ b/setup/report_py3o/i18n/es_CR.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Costa Rica) (https://www.transifex.com/oca/" +"teams/23907/es_CR/)\n" +"Language: es_CR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Ultima actualización por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Ultima actualización en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nombre" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/es_DO.po b/setup/report_py3o/i18n/es_DO.po new file mode 100644 index 000000000..5c1fa7fae --- /dev/null +++ b/setup/report_py3o/i18n/es_DO.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Dominican Republic) (https://www.transifex.com/oca/" +"teams/23907/es_DO/)\n" +"Language: es_DO\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Última actualización de" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nombre" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/es_EC.po b/setup/report_py3o/i18n/es_EC.po new file mode 100644 index 000000000..2dd35ccc1 --- /dev/null +++ b/setup/report_py3o/i18n/es_EC.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Ecuador) (https://www.transifex.com/oca/teams/23907/" +"es_EC/)\n" +"Language: es_EC\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID (identificación)" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Última actualización de" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nombre" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/es_ES.po b/setup/report_py3o/i18n/es_ES.po new file mode 100644 index 000000000..b27527931 --- /dev/null +++ b/setup/report_py3o/i18n/es_ES.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Spain) (https://www.transifex.com/oca/teams/23907/" +"es_ES/)\n" +"Language: es_ES\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Nombre para mostrar" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/es_MX.po b/setup/report_py3o/i18n/es_MX.po new file mode 100644 index 000000000..e0562cc5b --- /dev/null +++ b/setup/report_py3o/i18n/es_MX.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Mexico) (https://www.transifex.com/oca/teams/23907/" +"es_MX/)\n" +"Language: es_MX\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Nombre desplegado" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Ultima modificacion realizada" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Ultima actualizacion por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Ultima actualización realizada" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nombre" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/es_PE.po b/setup/report_py3o/i18n/es_PE.po new file mode 100644 index 000000000..7575709c9 --- /dev/null +++ b/setup/report_py3o/i18n/es_PE.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Peru) (https://www.transifex.com/oca/teams/23907/" +"es_PE/)\n" +"Language: es_PE\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Nombre a Mostrar" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Ultima Modificación en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Actualizado última vez por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Ultima Actualización" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nombre" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/es_PY.po b/setup/report_py3o/i18n/es_PY.po new file mode 100644 index 000000000..1c395daf8 --- /dev/null +++ b/setup/report_py3o/i18n/es_PY.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Paraguay) (https://www.transifex.com/oca/teams/23907/" +"es_PY/)\n" +"Language: es_PY\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Ultima actualización por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Ultima actualización en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nombre" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/es_VE.po b/setup/report_py3o/i18n/es_VE.po new file mode 100644 index 000000000..68415a14e --- /dev/null +++ b/setup/report_py3o/i18n/es_VE.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Venezuela) (https://www.transifex.com/oca/" +"teams/23907/es_VE/)\n" +"Language: es_VE\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Mostrar nombre" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Modificada por última vez" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Última actualización realizada por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Ultima actualizacion en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nombre" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/et.po b/setup/report_py3o/i18n/et.po new file mode 100644 index 000000000..95df3c258 --- /dev/null +++ b/setup/report_py3o/i18n/et.po @@ -0,0 +1,282 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Estonian (https://www.transifex.com/oca/teams/23907/et/)\n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Loonud" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Loodud" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Näidatav nimi" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Viimati muudetud" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Viimati uuendatud" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Viimati uuendatud" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nimi" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/eu.po b/setup/report_py3o/i18n/eu.po new file mode 100644 index 000000000..59a846b56 --- /dev/null +++ b/setup/report_py3o/i18n/eu.po @@ -0,0 +1,282 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Basque (https://www.transifex.com/oca/teams/23907/eu/)\n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Nork sortua" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Created on" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Izena erakutsi" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Last Updated by" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Last Updated on" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Izena" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/fa.po b/setup/report_py3o/i18n/fa.po new file mode 100644 index 000000000..a5058f868 --- /dev/null +++ b/setup/report_py3o/i18n/fa.po @@ -0,0 +1,282 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Persian (https://www.transifex.com/oca/teams/23907/fa/)\n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "ایجاد شده توسط" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "ایجاد شده در" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "نام نمایشی" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "شناسه" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "تاریخ آخرین به‌روزرسانی" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "آخرین به روز رسانی توسط" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "آخرین به روز رسانی در" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "نام" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/fi.po b/setup/report_py3o/i18n/fi.po new file mode 100644 index 000000000..7d77112d8 --- /dev/null +++ b/setup/report_py3o/i18n/fi.po @@ -0,0 +1,282 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Luonut" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Luotu" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Nimi" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Viimeksi muokattu" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Viimeksi päivittänyt" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Viimeksi päivitetty" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nimi" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/fr.po b/setup/report_py3o/i18n/fr.po new file mode 100644 index 000000000..9da9852a0 --- /dev/null +++ b/setup/report_py3o/i18n/fr.po @@ -0,0 +1,304 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +# Quentin THEURET , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-12-04 16:55+0000\n" +"PO-Revision-Date: 2018-07-18 08:55+0000\n" +"Last-Translator: Christophe CHAUVET \n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.0.1\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "(Natif)" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Date" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Nom à afficher" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "Procédure de recours" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "Le champ 'Format de sortie' est requis dans le rapport Py3O" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "Type de fichier" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "Grouper par" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" +"Si l'utilisateur ne fournit pas de modèle, celui-ci sera utilisé. Il doit " +"s'agir d'un chemin relatif à la racine de VOTRE module ou d'un chemin absolu " +"sur votre serveur." + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" +"Si vous exécutez un rapport sur plusieurs enregistrements, Odoo générera par " +"défaut un fichier ZIP contenant autant de fichiers que d'enregistrements " +"sélectionnés. Si vous activez cette option, Odoo générera à la place un seul " +"rapport pour les enregistrements sélectionnés." + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +#, fuzzy +msgid "Ir Actions Report" +msgstr "Ir actions report xml id" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "Modèle LibreOffice" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "Type de fichier modèle de LibreOffice" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "Module" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "Enregistrements multiples dans un seul rapport" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nom" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "Pas de modèle trouvé. Annulation." + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "Présentation ODF" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "Présentation ODF (à plat)" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "Tableur ODF" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "Tableur ODF (à plat)" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "Document texte ODF" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "Document Texte ODF (à plat)" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "Format de sortie" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "Rapport de démo Py3o" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "Rapports Py3o" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "Py3o Templates" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +#, fuzzy +msgid "Py3o template" +msgstr "Py3o Templates" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Rapport" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "Rapport Py3O" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +#, fuzzy +msgid "Report Type" +msgstr "Rapport Py3O" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "Template" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "The implementer module that provides this report" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" + +#~ msgid "Py3o" +#~ msgstr "Py3o" + +#~ msgid "ir.actions.report.xml" +#~ msgstr "ir.actions.report.xml" + +#~ msgid "py3o.template" +#~ msgstr "py3o.template" diff --git a/setup/report_py3o/i18n/fr_CA.po b/setup/report_py3o/i18n/fr_CA.po new file mode 100644 index 000000000..226004033 --- /dev/null +++ b/setup/report_py3o/i18n/fr_CA.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: French (Canada) (https://www.transifex.com/oca/teams/23907/" +"fr_CA/)\n" +"Language: fr_CA\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Afficher le nom" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "Identifiant" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nom" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/fr_CH.po b/setup/report_py3o/i18n/fr_CH.po new file mode 100644 index 000000000..47a73099c --- /dev/null +++ b/setup/report_py3o/i18n/fr_CH.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: French (Switzerland) (https://www.transifex.com/oca/" +"teams/23907/fr_CH/)\n" +"Language: fr_CH\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Modifié par" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Modifié le" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/gl.po b/setup/report_py3o/i18n/gl.po new file mode 100644 index 000000000..d988bebed --- /dev/null +++ b/setup/report_py3o/i18n/gl.po @@ -0,0 +1,284 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Galician (https://www.transifex.com/oca/teams/23907/gl/)\n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Última modificación" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "ültima actualización por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Informe" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +#, fuzzy +msgid "Report Type" +msgstr "Informe" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/gl_ES.po b/setup/report_py3o/i18n/gl_ES.po new file mode 100644 index 000000000..e50e5b8a2 --- /dev/null +++ b/setup/report_py3o/i18n/gl_ES.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Galician (Spain) (https://www.transifex.com/oca/teams/23907/" +"gl_ES/)\n" +"Language: gl_ES\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/he.po b/setup/report_py3o/i18n/he.po new file mode 100644 index 000000000..4184e6aa9 --- /dev/null +++ b/setup/report_py3o/i18n/he.po @@ -0,0 +1,282 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Hebrew (https://www.transifex.com/oca/teams/23907/he/)\n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "נוצר על ידי" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "נוצר ב-" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "השם המוצג" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "מזהה" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "תאריך שינוי אחרון" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "עודכן לאחרונה על ידי" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "עודכן לאחרונה על" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "שם" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/hr.po b/setup/report_py3o/i18n/hr.po new file mode 100644 index 000000000..73424020a --- /dev/null +++ b/setup/report_py3o/i18n/hr.po @@ -0,0 +1,287 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +# Bole , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-16 01:44+0000\n" +"PO-Revision-Date: 2018-02-16 01:44+0000\n" +"Last-Translator: Bole , 2017\n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Naziv" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +#, fuzzy +msgid "Ir Actions Report" +msgstr "ir.actions.report.xml" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Zadnje modificirano" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Naziv" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Izvještaj" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +#, fuzzy +msgid "Report Type" +msgstr "Izvještaj" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/hr_HR.po b/setup/report_py3o/i18n/hr_HR.po new file mode 100644 index 000000000..e70017b61 --- /dev/null +++ b/setup/report_py3o/i18n/hr_HR.po @@ -0,0 +1,289 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# Bole , 2017 +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Croatian (Croatia) (https://www.transifex.com/oca/teams/23907/" +"hr_HR/)\n" +"Language: hr_HR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "(Izvorno)" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Kreirano" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Naziv" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "Tip datoteke" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "Grupiraj po" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +#, fuzzy +msgid "Ir Actions Report" +msgstr "ir.actions.report.xml" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Zadnje modificirano" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Zadnji ažurirao" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Zadnje ažurirano" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "LibreOffice Predložak" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "Modul" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Naziv" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "ODF Proračunska tablica" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "Izlazni format" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +#, fuzzy +msgid "Py3o template" +msgstr "py3o.template" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Izvještaj" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +#, fuzzy +msgid "Report Type" +msgstr "Izvještaj" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "Predložak" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/hu.po b/setup/report_py3o/i18n/hu.po new file mode 100644 index 000000000..47dd117ad --- /dev/null +++ b/setup/report_py3o/i18n/hu.po @@ -0,0 +1,282 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Hungarian (https://www.transifex.com/oca/teams/23907/hu/)\n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Készítette" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Létrehozás dátuma" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Név megjelenítése" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Utolsó frissítés dátuma" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Utoljára frissítve, által" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Utoljára frissítve " + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Név" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/id.po b/setup/report_py3o/i18n/id.po new file mode 100644 index 000000000..b08a4b9b8 --- /dev/null +++ b/setup/report_py3o/i18n/id.po @@ -0,0 +1,282 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Indonesian (https://www.transifex.com/oca/teams/23907/id/)\n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Dibuat oleh" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Dibuat pada" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Nama Tampilan" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Terakhir Dimodifikasi pada" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Diperbaharui oleh" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Diperbaharui pada" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nama" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/it.po b/setup/report_py3o/i18n/it.po new file mode 100644 index 000000000..174280150 --- /dev/null +++ b/setup/report_py3o/i18n/it.po @@ -0,0 +1,286 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2023-09-20 17:53+0000\n" +"Last-Translator: mymage \n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +#, fuzzy +msgid "Ir Actions Report" +msgstr "ir.actions.report.xml" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nome" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Report" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +#, fuzzy +msgid "Report Type" +msgstr "Report" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/ja.po b/setup/report_py3o/i18n/ja.po new file mode 100644 index 000000000..3b81b4e1a --- /dev/null +++ b/setup/report_py3o/i18n/ja.po @@ -0,0 +1,282 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Japanese (https://www.transifex.com/oca/teams/23907/ja/)\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "作成者" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "作成日" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "表示名" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "最終更新日" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "最終更新者" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "最終更新日" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "名称" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/ko.po b/setup/report_py3o/i18n/ko.po new file mode 100644 index 000000000..20c532fd5 --- /dev/null +++ b/setup/report_py3o/i18n/ko.po @@ -0,0 +1,282 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Korean (https://www.transifex.com/oca/teams/23907/ko/)\n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "작성자" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "작성일" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "표시 이름" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "최근 수정" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "최근 갱신한 사람" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "최근 갱신 날짜" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "이름" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/lt.po b/setup/report_py3o/i18n/lt.po new file mode 100644 index 000000000..43c68e11c --- /dev/null +++ b/setup/report_py3o/i18n/lt.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Lithuanian (https://www.transifex.com/oca/teams/23907/lt/)\n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Sukūrė" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Sukurta" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Vaizduojamas pavadinimas" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Paskutinį kartą keista" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Paskutinį kartą atnaujino" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Paskutinį kartą atnaujinta" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Pavadinimas" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/lt_LT.po b/setup/report_py3o/i18n/lt_LT.po new file mode 100644 index 000000000..dc846d0e2 --- /dev/null +++ b/setup/report_py3o/i18n/lt_LT.po @@ -0,0 +1,284 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Lithuanian (Lithuania) (https://www.transifex.com/oca/" +"teams/23907/lt_LT/)\n" +"Language: lt_LT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Sukūrė" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Sukurta" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Paskutinį kartą atnaujino" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Paskutinį kartą atnaujinta" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/lv.po b/setup/report_py3o/i18n/lv.po new file mode 100644 index 000000000..b1f3a308b --- /dev/null +++ b/setup/report_py3o/i18n/lv.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Latvian (https://www.transifex.com/oca/teams/23907/lv/)\n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Izveidoja" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Izveidots" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Pēdējo reizi atjaunoja" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Pēdējās izmaiņas" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nosaukums" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/mk.po b/setup/report_py3o/i18n/mk.po new file mode 100644 index 000000000..065e0ac07 --- /dev/null +++ b/setup/report_py3o/i18n/mk.po @@ -0,0 +1,282 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Macedonian (https://www.transifex.com/oca/teams/23907/mk/)\n" +"Language: mk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Креирано од" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Креирано на" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Прикажи име" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Последна промена на" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Последно ажурирање од" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Последно ажурирање на" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Име" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/mn.po b/setup/report_py3o/i18n/mn.po new file mode 100644 index 000000000..7dfa8e691 --- /dev/null +++ b/setup/report_py3o/i18n/mn.po @@ -0,0 +1,282 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Mongolian (https://www.transifex.com/oca/teams/23907/mn/)\n" +"Language: mn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Үүсгэгч" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Үүсгэсэн" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Дэлгэцийн Нэр" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Сүүлийн засвар хийсэн огноо" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Сүүлийн засвар хийсэн" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Сүүлийн засвар хийсэн огноо" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Нэр" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/nb.po b/setup/report_py3o/i18n/nb.po new file mode 100644 index 000000000..10c63d4f1 --- /dev/null +++ b/setup/report_py3o/i18n/nb.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Norwegian Bokmål (https://www.transifex.com/oca/teams/23907/" +"nb/)\n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Opprettet av" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Opprettet den" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Visnings navn" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Sist oppdatert " + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Sist oppdatert av" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Sist oppdatert" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Navn" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/nb_NO.po b/setup/report_py3o/i18n/nb_NO.po new file mode 100644 index 000000000..6c7a94653 --- /dev/null +++ b/setup/report_py3o/i18n/nb_NO.po @@ -0,0 +1,285 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Norwegian Bokmål (Norway) (https://www.transifex.com/oca/" +"teams/23907/nb_NO/)\n" +"Language: nb_NO\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Laget av" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Laget den" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Vis navn" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Sist endret den" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Sist oppdatert av" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Sist oppdatert den" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Rapport" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +#, fuzzy +msgid "Report Type" +msgstr "Rapport" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/nl.po b/setup/report_py3o/i18n/nl.po new file mode 100644 index 000000000..9b4442f96 --- /dev/null +++ b/setup/report_py3o/i18n/nl.po @@ -0,0 +1,282 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Aangemaakt door" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Aangemaakt op" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Te tonen naam" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Laatst bijgewerkt op" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Laatst bijgewerkt door" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Laatst bijgewerkt op" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Naam" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/nl_BE.po b/setup/report_py3o/i18n/nl_BE.po new file mode 100644 index 000000000..42400ca1a --- /dev/null +++ b/setup/report_py3o/i18n/nl_BE.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Dutch (Belgium) (https://www.transifex.com/oca/teams/23907/" +"nl_BE/)\n" +"Language: nl_BE\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Gemaakt door" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Gemaakt op" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Schermnaam" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Laatst Aangepast op" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Laatst bijgewerkt door" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Laatst bijgewerkt op" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Naam:" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/nl_NL.po b/setup/report_py3o/i18n/nl_NL.po new file mode 100644 index 000000000..6b12bf419 --- /dev/null +++ b/setup/report_py3o/i18n/nl_NL.po @@ -0,0 +1,293 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" +"teams/23907/nl_NL/)\n" +"Language: nl_NL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Aangemaakt door" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Aangemaakt op" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Weergavenaam" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "Groeperen op" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +#, fuzzy +msgid "Ir Actions Report" +msgstr "ir.actions.report.xml" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "LibreOffice Sjabloon" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "Module" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Naam" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "ODF-Tekstdocument" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "Py3o Rapporten" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "Py3o Sjablonen" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +#, fuzzy +msgid "Py3o template" +msgstr "Py3o Sjablonen" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Rapport" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +#, fuzzy +msgid "Report Type" +msgstr "Rapport" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "Sjabloon" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" + +#~ msgid "Py3o" +#~ msgstr "Py3o" + +#~ msgid "py3o.template" +#~ msgstr "py3o.template" diff --git a/setup/report_py3o/i18n/pl.po b/setup/report_py3o/i18n/pl.po new file mode 100644 index 000000000..c0072f339 --- /dev/null +++ b/setup/report_py3o/i18n/pl.po @@ -0,0 +1,286 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Polish (https://www.transifex.com/oca/teams/23907/pl/)\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n" +"%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n" +"%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Utworzone przez" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Utworzono" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Wyświetlana nazwa " + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Ostatnio modyfikowano" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Ostatnio modyfikowane przez" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Ostatnia zmiana" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nazwa" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Raport" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +#, fuzzy +msgid "Report Type" +msgstr "Raport" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/pt.po b/setup/report_py3o/i18n/pt.po new file mode 100644 index 000000000..5415e169d --- /dev/null +++ b/setup/report_py3o/i18n/pt.po @@ -0,0 +1,284 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Criado por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Criado em" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Nome" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Modificado a última vez por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Atualizado pela última vez por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Atualizado pela última vez em" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nome" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Relatório" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +#, fuzzy +msgid "Report Type" +msgstr "Relatório" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/pt_BR.po b/setup/report_py3o/i18n/pt_BR.po new file mode 100644 index 000000000..2abd8316a --- /dev/null +++ b/setup/report_py3o/i18n/pt_BR.po @@ -0,0 +1,286 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# Cezar José Sant Anna Junior , 2017 +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/" +"teams/23907/pt_BR/)\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "(Nativo)" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Criado por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Criado em" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Nome para Mostrar" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "Identificação" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Última atualização em" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Última atualização por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Última atualização em" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nome" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Relatório" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +#, fuzzy +msgid "Report Type" +msgstr "Relatório" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/pt_PT.po b/setup/report_py3o/i18n/pt_PT.po new file mode 100644 index 000000000..8a72fbe95 --- /dev/null +++ b/setup/report_py3o/i18n/pt_PT.po @@ -0,0 +1,286 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Portuguese (Portugal) (https://www.transifex.com/oca/" +"teams/23907/pt_PT/)\n" +"Language: pt_PT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Criado por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Criado em" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Nome a Apresentar" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +#, fuzzy +msgid "Ir Actions Report" +msgstr "ir.actions.report.xml" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Última Modificação Em" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Atualizado pela última vez por" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Atualizado pela última vez em" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Nome" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Relatório" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +#, fuzzy +msgid "Report Type" +msgstr "Relatório" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/report_py3o.pot b/setup/report_py3o/i18n/report_py3o.pot new file mode 100644 index 000000000..ef2c7c7cd --- /dev/null +++ b/setup/report_py3o/i18n/report_py3o.pot @@ -0,0 +1,278 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \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: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this" +" option, Odoo will generate instead a single report for the selected " +"records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is" +" not found into the bin path. You must install the libreoffice runtime on " +"the server. If the runtime is already installed and is not found by Odoo, " +"you can provide the full path to the runtime by setting the key " +"'py3o.conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/ro.po b/setup/report_py3o/i18n/ro.po new file mode 100644 index 000000000..e4f10a833 --- /dev/null +++ b/setup/report_py3o/i18n/ro.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Romanian (https://www.transifex.com/oca/teams/23907/ro/)\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Creat de" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Creat la" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Nume Afişat" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Ultima actualizare în" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Ultima actualizare făcută de" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Ultima actualizare la" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/ru.po b/setup/report_py3o/i18n/ru.po new file mode 100644 index 000000000..73977f283 --- /dev/null +++ b/setup/report_py3o/i18n/ru.po @@ -0,0 +1,284 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Russian (https://www.transifex.com/oca/teams/23907/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" +"%100>=11 && n%100<=14)? 2 : 3);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Создано" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Создан" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Последний раз обновлено" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Последний раз обновлено" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Название" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/sk.po b/setup/report_py3o/i18n/sk.po new file mode 100644 index 000000000..ca520439c --- /dev/null +++ b/setup/report_py3o/i18n/sk.po @@ -0,0 +1,282 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Slovak (https://www.transifex.com/oca/teams/23907/sk/)\n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Vytvoril" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Vytvorené" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Zobraziť meno" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Posledná modifikácia" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Naposledy upravoval" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Naposledy upravované" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Meno" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/sl.po b/setup/report_py3o/i18n/sl.po new file mode 100644 index 000000000..1c8c2fe4b --- /dev/null +++ b/setup/report_py3o/i18n/sl.po @@ -0,0 +1,285 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Ustvaril" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Ustvarjeno" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Prikazni naziv" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Zadnjič spremenjeno" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Zadnji posodobil" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Zadnjič posodobljeno" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Naziv" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Poročilo" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +#, fuzzy +msgid "Report Type" +msgstr "Poročilo" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/sr.po b/setup/report_py3o/i18n/sr.po new file mode 100644 index 000000000..4d4c6a81a --- /dev/null +++ b/setup/report_py3o/i18n/sr.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Serbian (https://www.transifex.com/oca/teams/23907/sr/)\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Kreiran" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Ime" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/sr@latin.po b/setup/report_py3o/i18n/sr@latin.po new file mode 100644 index 000000000..64b4e692a --- /dev/null +++ b/setup/report_py3o/i18n/sr@latin.po @@ -0,0 +1,284 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Serbian (Latin) (https://www.transifex.com/oca/teams/23907/sr" +"%40latin/)\n" +"Language: sr@latin\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Kreirao" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Kreiran" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Ime za prikaz" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Zadnja izmjena" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Zadnja izmjena" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Zadnja izmjena" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Ime:" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/sv.po b/setup/report_py3o/i18n/sv.po new file mode 100644 index 000000000..fe14de768 --- /dev/null +++ b/setup/report_py3o/i18n/sv.po @@ -0,0 +1,282 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Swedish (https://www.transifex.com/oca/teams/23907/sv/)\n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Skapad av" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Skapad den" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Visa namn" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Senast redigerad" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Senast uppdaterad av" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Senast uppdaterad" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Namn" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/th.po b/setup/report_py3o/i18n/th.po new file mode 100644 index 000000000..3a865e5f9 --- /dev/null +++ b/setup/report_py3o/i18n/th.po @@ -0,0 +1,282 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Thai (https://www.transifex.com/oca/teams/23907/th/)\n" +"Language: th\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "สร้างโดย" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "สร้างเมื่อ" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "ชื่อที่ใช้แสดง" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "รหัส" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "แก้ไขครั้งสุดท้ายเมื่อ" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "อัพเดทครั้งสุดท้ายโดย" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "อัพเดทครั้งสุดท้ายเมื่อ" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "ชื่อ" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/tr.po b/setup/report_py3o/i18n/tr.po new file mode 100644 index 000000000..b81029c63 --- /dev/null +++ b/setup/report_py3o/i18n/tr.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Oluşturan" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Oluşturuldu" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Görünen İsim" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +#, fuzzy +msgid "Ir Actions Report" +msgstr "ir.actions.report.xml" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Son değişiklik" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Son güncelleyen" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Son güncelleme" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Adı" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/tr_TR.po b/setup/report_py3o/i18n/tr_TR.po new file mode 100644 index 000000000..adf3a675c --- /dev/null +++ b/setup/report_py3o/i18n/tr_TR.po @@ -0,0 +1,285 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Turkish (Turkey) (https://www.transifex.com/oca/teams/23907/" +"tr_TR/)\n" +"Language: tr_TR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Oluşturan" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Oluşturulma tarihi" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Görünen ad" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "Kimlik" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "En son güncelleme tarihi" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "En son güncelleyen " + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "En son güncelleme tarihi" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Ad" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +#, fuzzy +msgid "Report Action" +msgstr "Rapor" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +#, fuzzy +msgid "Report Type" +msgstr "Rapor" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/uk.po b/setup/report_py3o/i18n/uk.po new file mode 100644 index 000000000..181ef680a --- /dev/null +++ b/setup/report_py3o/i18n/uk.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Ukrainian (https://www.transifex.com/oca/teams/23907/uk/)\n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Створив" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Дата створення" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Назва для відображення" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Остання модифікація" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Востаннє оновив" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Останнє оновлення" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Name" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/vi.po b/setup/report_py3o/i18n/vi.po new file mode 100644 index 000000000..d12c19cc5 --- /dev/null +++ b/setup/report_py3o/i18n/vi.po @@ -0,0 +1,282 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Vietnamese (https://www.transifex.com/oca/teams/23907/vi/)\n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Được tạo bởi" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Được tạo vào" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "Tên hiển thị" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "Sửa lần cuối vào" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Last Updated by" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Cập nhật lần cuối vào" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "Tên" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/vi_VN.po b/setup/report_py3o/i18n/vi_VN.po new file mode 100644 index 000000000..a9afbe166 --- /dev/null +++ b/setup/report_py3o/i18n/vi_VN.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/oca/" +"teams/23907/vi_VN/)\n" +"Language: vi_VN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "Tạo bởi" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "Tạo vào" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "Cập nhật lần cuối bởi" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "Cập nhật lần cuối vào" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/zh_CN.po b/setup/report_py3o/i18n/zh_CN.po new file mode 100644 index 000000000..f5e884c43 --- /dev/null +++ b/setup/report_py3o/i18n/zh_CN.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/" +"zh_CN/)\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "创建者" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "创建时间" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "显示名称" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "ID" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "最后修改时间" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "最后更新者" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "上次更新日期" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "名称" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/i18n/zh_TW.po b/setup/report_py3o/i18n/zh_TW.po new file mode 100644 index 000000000..a0fe4baf2 --- /dev/null +++ b/setup/report_py3o/i18n/zh_TW.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * report_py3o +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 08:52+0000\n" +"PO-Revision-Date: 2018-01-16 08:52+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Chinese (Taiwan) (https://www.transifex.com/oca/teams/23907/" +"zh_TW/)\n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "(Native)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_uid +msgid "Created by" +msgstr "建立者" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__create_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__create_date +msgid "Created on" +msgstr "建立於" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__display_name +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__display_name +msgid "Display Name" +msgstr "顯示名稱" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "Fallback" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "Field 'Output Format' is required for Py3O report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "File Type" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_template_configuration_search_view +msgid "Group By" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__id +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__id +msgid "ID" +msgstr "編號" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_template_fallback +msgid "" +"If the user does not provide a template this will be used it should be a " +"relative path to root of YOUR module or an absolute path on your server." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "" +"If you execute a report on several records, by default Odoo will generate a " +"ZIP file that contains as many files as selected records. If you enable this " +"option, Odoo will generate instead a single report for the selected records." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__ir_actions_report_id +msgid "Ir Actions Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_native_format +msgid "Is Py3O Native Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__is_py3o_report_not_available +msgid "Is Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report____last_update +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template____last_update +msgid "Last Modified on" +msgstr "最後修改:" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_uid +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_uid +msgid "Last Updated by" +msgstr "最後更新:" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_report__write_date +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__write_date +msgid "Last Updated on" +msgstr "最後更新於" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__py3o_template_data +#: model_terms:ir.ui.view,arch_db:report_py3o.py3o_report_view +msgid "LibreOffice Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__filetype +msgid "LibreOffice Template File Type" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "Libreoffice runtime not available. Please contact your administrator." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__module +msgid "Module" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__msg_py3o_report_not_available +msgid "Msg Py3O Report Not Available" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_multi_in_one +msgid "Multiple Records in a Single Report" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_py3o_template__name +msgid "Name" +msgstr "名稱" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/py3o_report.py:0 +#, python-format +msgid "No template found. Aborting." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odp +msgid "ODF Presentation" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodp +msgid "ODF Presentation (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__ods +msgid "ODF Spreadsheet" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fods +msgid "ODF Spreadsheet (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__odt +msgid "ODF Text Document" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__py3o_template__filetype__fodt +msgid "ODF Text Document (Flat)" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_filetype +msgid "Output Format" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__lo_bin_path +msgid "Path to the libreoffice runtime" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,name:report_py3o.res_users_report_py3o +msgid "Py3o Demo Report" +msgstr "" + +#. module: report_py3o +#: model_terms:ir.ui.view,arch_db:report_py3o.act_report_xml_search_view +msgid "Py3o Reports" +msgstr "" + +#. module: report_py3o +#: model:ir.actions.act_window,name:report_py3o.py3o_template_configuration_action +#: model:ir.ui.menu,name:report_py3o.py3o_template_configuration_menu +msgid "Py3o Templates" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_template +msgid "Py3o template" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_ir_actions_report +msgid "Report Action" +msgstr "" + +#. module: report_py3o +#: model:ir.model,name:report_py3o.model_py3o_report +msgid "Report Py30" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__report_type +msgid "Report Type" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,field_description:report_py3o.field_ir_actions_report__py3o_template_id +msgid "Template" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__module +msgid "The implementer module that provides this report" +msgstr "" + +#. module: report_py3o +#. odoo-python +#: code:addons/report_py3o/models/ir_actions_report.py:0 +#, python-format +msgid "" +"The libreoffice runtime is required to genereate the py3o report '%s' but is " +"not found into the bin path. You must install the libreoffice runtime on the " +"server. If the runtime is already installed and is not found by Odoo, you " +"can provide the full path to the runtime by setting the key 'py3o." +"conversion_command' into the configuration parameters." +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields,help:report_py3o.field_ir_actions_report__report_type +msgid "" +"The type of the report that will be rendered, each one having its own " +"rendering method. HTML means the report will be opened directly in your " +"browser PDF means the report will be rendered using Wkhtmltopdf and " +"downloaded by the user." +msgstr "" + +#. module: report_py3o +#: model:ir.actions.report,print_report_name:report_py3o.res_users_report_py3o +msgid "object.name.replace(' ', '_') + '-demo.odt'" +msgstr "" + +#. module: report_py3o +#: model:ir.model.fields.selection,name:report_py3o.selection__ir_actions_report__report_type__py3o +msgid "py3o" +msgstr "" diff --git a/setup/report_py3o/models/__init__.py b/setup/report_py3o/models/__init__.py new file mode 100644 index 000000000..3da72d0f2 --- /dev/null +++ b/setup/report_py3o/models/__init__.py @@ -0,0 +1,3 @@ +from . import py3o_template +from . import ir_actions_report +from . import py3o_report diff --git a/setup/report_py3o/models/_py3o_parser_context.py b/setup/report_py3o/models/_py3o_parser_context.py new file mode 100644 index 000000000..4af2c066f --- /dev/null +++ b/setup/report_py3o/models/_py3o_parser_context.py @@ -0,0 +1,139 @@ +# Copyright 2018 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) + +import html +import logging +import time +from base64 import b64decode + +from odoo.tools import mail, misc + +logger = logging.getLogger(__name__) + +try: + from genshi.core import Markup +except ImportError: + logger.debug("Cannot import py3o.template") + + +def format_multiline_value(value): + if value: + return Markup( + html.escape(value) + .replace("\n", "") + .replace("\t", "") + ) + return "" + + +def display_address(address_record, without_company=False): + return address_record.display_address(without_company=without_company) + + +class Py3oParserContext(object): + def __init__(self, env): + self._env = env + + self.localcontext = { + "user": self._env.user, + "lang": self._env.lang, + # Odoo default format methods + "o_format_lang": self._format_lang, + # prefixes with o_ to avoid nameclash with default method provided + # by py3o.template + "o_format_date": self._format_date, + "o_format_datetime": self._format_datetime, + # give access to the time lib + "time": time, + # keeps methods from report_sxw to ease migration + "display_address": display_address, + "formatLang": self._old_format_lang, + "format_multiline_value": format_multiline_value, + "html_sanitize": mail.html2plaintext, + "b64decode": b64decode, + } + + def _format_lang( + self, + value, + lang_code=False, + digits=None, + grouping=True, + monetary=False, + dp=False, + currency_obj=False, + no_break_space=True, + ): + env = self._env + if lang_code: + context = dict(env.context, lang=lang_code) + env = env(context=context) + formatted_value = misc.formatLang( + env, + value, + digits=digits, + grouping=grouping, + monetary=monetary, + dp=dp, + currency_obj=currency_obj, + ) + if currency_obj and currency_obj.symbol and no_break_space: + parts = [] + if currency_obj.position == "after": + parts = formatted_value.rsplit(" ", 1) + elif currency_obj and currency_obj.position == "before": + parts = formatted_value.split(" ", 1) + if parts: + formatted_value = "\N{NO-BREAK SPACE}".join(parts) + return formatted_value + + def _format_date(self, value, lang_code=False, date_format=False): + return misc.format_date( + self._env, value, lang_code=lang_code, date_format=date_format + ) + + def _format_datetime(self, value, tz=False, dt_format="medium", lang_code=False): + return misc.format_datetime( + self._env, value, tz=tz, dt_format=dt_format, lang_code=lang_code + ) + + def _old_format_lang( + self, + value, + digits=None, + date=False, + date_time=False, + grouping=True, + monetary=False, + dp=False, + currency_obj=False, + ): + """ + :param value: The value to format + :param digits: Number of digits to display by default + :param date: True if value must be formatted as a date (default False) + :param date_time: True if value must be formatted as a datetime + (default False) + :param grouping: If value is float and grouping is True, the value will + be formatted with the appropriate separators between + figures according to the current lang specifications + :param monetary: If value is float and monetary is True and grouping is + True the value will be formatted according to the + monetary format defined for the current lang + :param dp: Decimal precision + :param currency_obj: If provided the currency symbol will be added to + value at position defined by the currency object + :return: The formatted value + """ + if not date and not date_time: + return self._format_lang( + value, + digits=digits, + grouping=grouping, + monetary=monetary, + dp=dp, + currency_obj=currency_obj, + no_break_space=True, + ) + + return self._format_date(self._env, value) diff --git a/setup/report_py3o/models/ir_actions_report.py b/setup/report_py3o/models/ir_actions_report.py new file mode 100644 index 000000000..408578877 --- /dev/null +++ b/setup/report_py3o/models/ir_actions_report.py @@ -0,0 +1,196 @@ +# Copyright 2013 XCG Consulting (http://odoo.consulting) +# Copyright 2018 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import logging + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError +from odoo.tools.misc import find_in_path +from odoo.tools.safe_eval import safe_eval, time + +logger = logging.getLogger(__name__) + +try: + from py3o.formats import Formats +except ImportError: + logger.debug("Cannot import py3o.formats") + +PY3O_CONVERSION_COMMAND_PARAMETER = "py3o.conversion_command" + + +class IrActionsReport(models.Model): + """Inherit from ir.actions.report to allow customizing the template + file. The user cam chose a template from a list. + The list is configurable in the configuration tab, see py3o_template.py + """ + + _inherit = "ir.actions.report" + + @api.constrains("py3o_filetype", "report_type") + def _check_py3o_filetype(self): + for report in self: + if report.report_type == "py3o" and not report.py3o_filetype: + raise ValidationError( + _("Field 'Output Format' is required for Py3O report") + ) + + @api.model + def _get_py3o_filetypes(self): + formats = Formats() + names = formats.get_known_format_names() + selections = [] + for name in names: + description = name + if formats.get_format(name).native: + description = description + " " + _("(Native)") + selections.append((name, description)) + return selections + + report_type = fields.Selection( + selection_add=[("py3o", "py3o")], + ondelete={ + "py3o": "cascade", + }, + ) + + py3o_filetype = fields.Selection( + selection="_get_py3o_filetypes", string="Output Format" + ) + is_py3o_native_format = fields.Boolean(compute="_compute_is_py3o_native_format") + py3o_template_id = fields.Many2one("py3o.template", "Template") + module = fields.Char(help="The implementer module that provides this report") + py3o_template_fallback = fields.Char( + "Fallback", + size=128, + help=( + "If the user does not provide a template this will be used " + "it should be a relative path to root of YOUR module " + "or an absolute path on your server." + ), + ) + py3o_multi_in_one = fields.Boolean( + string="Multiple Records in a Single Report", + help="If you execute a report on several records, " + "by default Odoo will generate a ZIP file that contains as many " + "files as selected records. If you enable this option, Odoo will " + "generate instead a single report for the selected records.", + ) + lo_bin_path = fields.Char( + string="Path to the libreoffice runtime", compute="_compute_lo_bin_path" + ) + is_py3o_report_not_available = fields.Boolean( + compute="_compute_py3o_report_not_available" + ) + msg_py3o_report_not_available = fields.Char( + compute="_compute_py3o_report_not_available" + ) + + @api.model + def _register_hook(self): + self._validate_reports() + + @api.model + def _validate_reports(self): + """Check if the existing py3o reports should work with the current + installation. + + This method log a warning message into the logs for each report + that should not work. + """ + for report in self.search([("report_type", "=", "py3o")]): + if report.is_py3o_report_not_available: + logger.warning(report.msg_py3o_report_not_available) + + @api.model + def _get_lo_bin(self): + lo_bin = ( + self.env["ir.config_parameter"] + .sudo() + .get_param(PY3O_CONVERSION_COMMAND_PARAMETER, "libreoffice") + ) + try: + lo_bin = find_in_path(lo_bin) + except IOError: + lo_bin = None + return lo_bin + + @api.depends("report_type", "py3o_filetype") + def _compute_is_py3o_native_format(self): + fmt = Formats() + for rec in self: + rec.is_py3o_native_format = False + if not rec.report_type == "py3o" or not rec.py3o_filetype: + continue + filetype = rec.py3o_filetype + rec.is_py3o_native_format = fmt.get_format(filetype).native + + def _compute_lo_bin_path(self): + lo_bin = self._get_lo_bin() + for rec in self: + rec.lo_bin_path = lo_bin + + @api.depends("lo_bin_path", "is_py3o_native_format", "report_type") + def _compute_py3o_report_not_available(self): + for rec in self: + rec.is_py3o_report_not_available = False + rec.msg_py3o_report_not_available = "" + if not rec.report_type == "py3o": + continue + if not rec.is_py3o_native_format and not rec.lo_bin_path: + rec.is_py3o_report_not_available = True + rec.msg_py3o_report_not_available = ( + _( + "The libreoffice runtime is required to genereate the " + "py3o report '%s' but is not found into the bin path. You " + "must install the libreoffice runtime on the server. If " + "the runtime is already installed and is not found by " + "Odoo, you can provide the full path to the runtime by " + "setting the key 'py3o.conversion_command' into the " + "configuration parameters." + ) + % rec.name + ) + + @api.model + def get_from_report_name(self, report_name, report_type): + return self.search( + [("report_name", "=", report_name), ("report_type", "=", report_type)] + ) + + @api.model + def _render_py3o(self, report_ref, res_ids, data=None): + report = self._get_report(report_ref) + if report.report_type != "py3o": + raise RuntimeError( + "py3o rendition is only available on py3o report.\n" + "(current: '{}', expected 'py3o'".format(report.report_type) + ) + return ( + self.env["py3o.report"] + .create({"ir_actions_report_id": report.id}) + .create_report(res_ids, data) + ) + + def gen_report_download_filename(self, res_ids, data): + """Override this function to change the name of the downloaded report""" + self.ensure_one() + report = self.get_from_report_name(self.report_name, self.report_type) + if report.print_report_name and not len(res_ids) > 1: + obj = self.env[self.model].browse(res_ids) + return safe_eval(report.print_report_name, {"object": obj, "time": time}) + return "{}.{}".format(self.name, self.py3o_filetype) + + def _get_attachments(self, res_ids): + """Return the report already generated for the given res_ids""" + self.ensure_one() + save_in_attachment = {} + if res_ids: + # Dispatch the records by ones having an attachment + Model = self.env[self.model] + record_ids = Model.browse(res_ids) + if self.attachment: + for record_id in record_ids: + attachment_id = self.retrieve_attachment(record_id) + if attachment_id: + save_in_attachment[record_id.id] = attachment_id + return save_in_attachment diff --git a/setup/report_py3o/models/py3o_report.py b/setup/report_py3o/models/py3o_report.py new file mode 100644 index 000000000..3aa2d3480 --- /dev/null +++ b/setup/report_py3o/models/py3o_report.py @@ -0,0 +1,398 @@ +# Copyright 2013 XCG Consulting (http://odoo.consulting) +# Copyright 2016 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) +import base64 +import logging +import os +import subprocess +import sys +import tempfile +import warnings +from base64 import b64decode +from contextlib import closing +from io import BytesIO +from zipfile import ZIP_DEFLATED, ZipFile + +import pkg_resources + +from odoo import _, api, fields, models, tools +from odoo.exceptions import AccessError +from odoo.tools.safe_eval import safe_eval, time + +from ._py3o_parser_context import Py3oParserContext + +logger = logging.getLogger(__name__) + +try: + # workaround for https://github.com/edgewall/genshi/issues/15 + # that makes runbot build red because of the DeprecationWarning + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", category=DeprecationWarning) + from py3o.template import Template + from py3o import formats +except ImportError: + logger.debug("Cannot import py3o.template") +try: + from py3o.formats import Formats, UnkownFormatException +except ImportError: + logger.debug("Cannot import py3o.formats") +try: + from PyPDF2 import PdfFileReader, PdfFileWriter +except ImportError: + logger.debug("Cannot import PyPDF2") + +_extender_functions = {} + + +class TemplateNotFound(Exception): + pass + + +def py3o_report_extender(report_xml_id=None): + """ + A decorator to define function to extend the context sent to a template. + This will be called at the creation of the report. + The following arguments will be passed to it: + - ir_report: report instance + - localcontext: The context that will be passed to the report engine + If no report_xml_id is given the extender is registered for all py3o + reports + Idea copied from CampToCamp report_webkit module. + + :param report_xml_id: xml id of the report + :return: a decorated class + """ + global _extender_functions + + def fct1(fct): + _extender_functions.setdefault(report_xml_id, []).append(fct) + return fct + + return fct1 + + +@py3o_report_extender() +def default_extend(report_xml, context): + context["report_xml"] = report_xml + + +class Py3oReport(models.TransientModel): + _name = "py3o.report" + _description = "Report Py30" + + ir_actions_report_id = fields.Many2one( + comodel_name="ir.actions.report", required=True + ) + + def _is_valid_template_path(self, path): + """Check if the path is a trusted path for py3o templates.""" + real_path = os.path.realpath(path) + root_path = tools.config.get_misc("report_py3o", "root_tmpl_path") + if not root_path: + logger.warning( + "You must provide a root template path into odoo.cfg to be " + "able to use py3o template configured with an absolute path " + "%s", + real_path, + ) + return False + is_valid = real_path.startswith(root_path + os.path.sep) + if not is_valid: + logger.warning( + "Py3o template path is not valid. %s is not a child of root " "path %s", + real_path, + root_path, + ) + return is_valid + + def _is_valid_template_filename(self, filename): + """Check if the filename can be used as py3o template""" + if filename and os.path.isfile(filename): + fname, ext = os.path.splitext(filename) + ext = ext.replace(".", "") + try: + fformat = Formats().get_format(ext) + if fformat and fformat.native: + return True + except UnkownFormatException: + logger.warning("Invalid py3o template %s", filename, exc_info=1) + logger.warning("%s is not a valid Py3o template filename", filename) + return False + + def _get_template_from_path(self, tmpl_name): + """Return the template from the path to root of the module if specied + or an absolute path on your server + """ + if not tmpl_name: + return None + report_xml = self.ir_actions_report_id + flbk_filename = None + if report_xml.module: + # if the default is defined + flbk_filename = pkg_resources.resource_filename( + "odoo.addons.%s" % report_xml.module, tmpl_name + ) + elif self._is_valid_template_path(tmpl_name): + flbk_filename = os.path.realpath(tmpl_name) + if self._is_valid_template_filename(flbk_filename): + with open(flbk_filename, "rb") as tmpl: + return tmpl.read() + return None + + def _get_template_fallback(self, model_instance): + """ + Return the template referenced in the report definition + :return: + """ + self.ensure_one() + report_xml = self.ir_actions_report_id + return self._get_template_from_path(report_xml.py3o_template_fallback) + + def get_template(self, model_instance): + """private helper to fetch the template data either from the database + or from the default template file provided by the implementer. + + ATM this method takes a report definition recordset + to try and fetch the report template from database. If not found it + will fallback to the template file referenced in the report definition. + + @returns: string or buffer containing the template data + + @raises: TemplateNotFound which is a subclass of + odoo.exceptions.DeferredException + """ + self.ensure_one() + report_xml = self.ir_actions_report_id + if report_xml.py3o_template_id.py3o_template_data: + # if a user gave a report template + tmpl_data = b64decode(report_xml.py3o_template_id.py3o_template_data) + + else: + tmpl_data = self._get_template_fallback(model_instance) + + if tmpl_data is None: + # if for any reason the template is not found + raise TemplateNotFound(_("No template found. Aborting."), sys.exc_info()) + + return tmpl_data + + def _extend_parser_context(self, context, report_xml): + # add default extenders + for fct in _extender_functions.get(None, []): + fct(report_xml, context) + # add extenders for registered on the template + xml_id = report_xml.get_external_id().get(report_xml.id) + if xml_id in _extender_functions: + for fct in _extender_functions[xml_id]: + fct(report_xml, context) + + def _get_parser_context(self, model_instance, data): + report_xml = self.ir_actions_report_id + context = Py3oParserContext(self.env).localcontext + context.update( + report_xml._get_rendering_context(report_xml, model_instance.ids, data) + ) + context["objects"] = model_instance + self._extend_parser_context(context, report_xml) + return context + + def _postprocess_report(self, model_instance, result_path): + if len(model_instance) == 1 and self.ir_actions_report_id.attachment: + with open(result_path, "rb") as f: + # we do all the generation process using files to avoid memory + # consumption... + # ... but odoo wants the whole data in memory anyways :) + buffer = BytesIO(f.read()) + attachment_name = safe_eval( + self.ir_actions_report_id.attachment, + {"object": model_instance, "time": time}, + ) + if attachment_name: + attachment_vals = { + "name": attachment_name, + "res_model": self.ir_actions_report_id.model, + "res_id": model_instance.id, + "raw": buffer.getvalue(), + } + try: + attach = self.env["ir.attachment"].create(attachment_vals) + except AccessError: + logger.info( + "Cannot save PDF report %s as attachment", + attachment_vals["name"], + ) + else: + logger.info( + "PDF document %s saved as attachment ID %d", + attachment_vals["name"], + attach.id, + ) + return result_path + + def _create_single_report(self, model_instance, data): + """This function to generate our py3o report""" + self.ensure_one() + result_fd, result_path = tempfile.mkstemp( + suffix=".ods", prefix="p3o.report.tmp." + ) + tmpl_data = self.get_template(model_instance) + + in_stream = BytesIO(tmpl_data) + with closing(os.fdopen(result_fd, "wb+")) as out_stream: + template = Template(in_stream, out_stream, escape_false=True) + localcontext = self._get_parser_context(model_instance, data) + template.render(localcontext) + out_stream.seek(0) + tmpl_data = out_stream.read() + + if self.env.context.get("report_py3o_skip_conversion"): + return result_path + + result_path = self._convert_single_report(result_path, model_instance, data) + + return self._postprocess_report(model_instance, result_path) + + def _convert_single_report(self, result_path, model_instance, data): + """Run a command to convert to our target format""" + if not self.ir_actions_report_id.is_py3o_native_format: + with tempfile.TemporaryDirectory() as tmp_user_installation: + command = self._convert_single_report_cmd( + result_path, + model_instance, + data, + user_installation=tmp_user_installation, + ) + logger.debug("Running command %s", command) + output = subprocess.check_output( + command, cwd=os.path.dirname(result_path) + ) + logger.debug("Output was %s", output) + self._cleanup_tempfiles([result_path]) + result_path, result_filename = os.path.split(result_path) + result_path = os.path.join( + result_path, + "%s.%s" + % ( + os.path.splitext(result_filename)[0], + self.ir_actions_report_id.py3o_filetype, + ), + ) + return result_path + + def _convert_single_report_cmd( + self, result_path, model_instance, data, user_installation=None + ): + """Return a command list suitable for use in subprocess.call""" + lo_bin = self.ir_actions_report_id.lo_bin_path + if not lo_bin: + raise RuntimeError( + _( + "Libreoffice runtime not available. " + "Please contact your administrator." + ) + ) + cmd = [ + lo_bin, + "--headless", + "--convert-to", + self.ir_actions_report_id.py3o_filetype, + result_path, + ] + if user_installation: + cmd.append("-env:UserInstallation=file:%s" % user_installation) + return cmd + + def _get_or_create_single_report( + self, model_instance, data, existing_reports_attachment + ): + self.ensure_one() + attachment = existing_reports_attachment.get(model_instance.id) + if attachment and self.ir_actions_report_id.attachment_use: + content = base64.b64decode(attachment.datas) + report_file = tempfile.mktemp("." + self.ir_actions_report_id.py3o_filetype) + with open(report_file, "wb") as f: + f.write(content) + return report_file + return self._create_single_report(model_instance, data) + + def _zip_results(self, reports_path): + self.ensure_one() + zfname_prefix = self.ir_actions_report_id.name + result_path = tempfile.mktemp(suffix="zip", prefix="py3o-zip-result") + with ZipFile(result_path, "w", ZIP_DEFLATED) as zf: + cpt = 0 + for report in reports_path: + fname = "%s_%d.%s" % (zfname_prefix, cpt, report.split(".")[-1]) + zf.write(report, fname) + + cpt += 1 + return result_path + + @api.model + def _merge_pdf(self, reports_path): + """Merge PDF files into one. + + :param reports_path: list of path of pdf files + :returns: path of the merged pdf + """ + writer = PdfFileWriter() + for path in reports_path: + reader = PdfFileReader(path) + writer.appendPagesFromReader(reader) + merged_file_fd, merged_file_path = tempfile.mkstemp( + suffix=".pdf", prefix="report.merged.tmp." + ) + with closing(os.fdopen(merged_file_fd, "wb")) as merged_file: + writer.write(merged_file) + return merged_file_path + + def _merge_results(self, reports_path): + self.ensure_one() + filetype = self.ir_actions_report_id.py3o_filetype + if not reports_path: + return False, False + if len(reports_path) == 1: + return reports_path[0], filetype + if filetype == formats.FORMAT_PDF: + return self._merge_pdf(reports_path), formats.FORMAT_PDF + else: + return self._zip_results(reports_path), "zip" + + @api.model + def _cleanup_tempfiles(self, temporary_files): + # Manual cleanup of the temporary files + for temporary_file in temporary_files: + try: + os.unlink(temporary_file) + except OSError: + logger.error("Error when trying to remove file %s" % temporary_file) + + def create_report(self, res_ids, data): + """Override this function to handle our py3o report""" + model_instances = self.env[self.ir_actions_report_id.model].browse(res_ids) + reports_path = [] + if len(res_ids) > 1 and self.ir_actions_report_id.py3o_multi_in_one: + reports_path.append(self._create_single_report(model_instances, data)) + else: + existing_reports_attachment = self.ir_actions_report_id._get_attachments( + res_ids + ) + for model_instance in model_instances: + reports_path.append( + self._get_or_create_single_report( + model_instance, data, existing_reports_attachment + ) + ) + + result_path, filetype = self._merge_results(reports_path) + reports_path.append(result_path) + + # Here is a little joke about Odoo + # we do all the generation process using files to avoid memory + # consumption... + # ... but odoo wants the whole data in memory anyways :) + + with open(result_path, "r+b") as fd: + res = fd.read() + self._cleanup_tempfiles(set(reports_path)) + return res, filetype diff --git a/setup/report_py3o/models/py3o_template.py b/setup/report_py3o/models/py3o_template.py new file mode 100644 index 000000000..1f9373322 --- /dev/null +++ b/setup/report_py3o/models/py3o_template.py @@ -0,0 +1,24 @@ +# Copyright 2013 XCG Consulting (http://odoo.consulting) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import fields, models + + +class Py3oTemplate(models.Model): + _name = "py3o.template" + _description = "Py3o template" + + name = fields.Char(required=True) + py3o_template_data = fields.Binary("LibreOffice Template") + filetype = fields.Selection( + selection=[ + ("odt", "ODF Text Document"), + ("ods", "ODF Spreadsheet"), + ("odp", "ODF Presentation"), + ("fodt", "ODF Text Document (Flat)"), + ("fods", "ODF Spreadsheet (Flat)"), + ("fodp", "ODF Presentation (Flat)"), + ], + string="LibreOffice Template File Type", + required=True, + default="odt", + ) diff --git a/setup/report_py3o/readme/CONFIGURE.rst b/setup/report_py3o/readme/CONFIGURE.rst new file mode 100644 index 000000000..121d5cbb4 --- /dev/null +++ b/setup/report_py3o/readme/CONFIGURE.rst @@ -0,0 +1,90 @@ +For example, to replace the native invoice report by a custom py3o report, add the following XML file in your custom module: + +.. code:: + + + + + + py3o + odt + my_custom_module_base + report/account_invoice.odt + + + + +where *my_custom_module_base* is the name of the custom Odoo module. In this example, the invoice ODT file is located in *my_custom_module_base/report/account_invoice.odt*. + +It's also possible to reference a template located in a trusted path of your +Odoo server. In this case you must let the *module* entry empty and specify +the path to the template as *py3o_template_fallback*. + +.. code:: + + + + + + py3o + odt + /odoo/templates/py3o/report/account_invoice.odt + + + + +Moreover, you must also modify the Odoo server configuration file to declare +the allowed root directory for your py3o templates. Only templates located +into this directory can be loaded by py3o report. + +.. code:: + + [options] + ... + + [report_py3o] + root_tmpl_path=/odoo/templates/py3o + +If you want an invoice in PDF format instead of ODT format, the XML file should look like: + +.. code:: + + + + + + py3o + pdf + my_custom_module_base + report/account_invoice.odt + + + + +If you want to add a new py3o PDF report (and not replace a native report), the XML file should look like this: + +.. code:: + + + + + + Partner Summary + res.partner + res.partner.summary + py3o + pdf + my_custom_module_base + report/partner_summary.odt + + report + + + + + +Configuration parameters +~~~~~~~~~~~~~~~~~~~~~~~~ + +py3o.conversion_command + The command to be used to run the conversion, ``libreoffice`` by default. If you change this, whatever you set here must accept the parameters ``--headless --convert-to $ext $file`` and put the resulting file into ``$file``'s directory with extension ``$ext``. The command will be started in ``$file``'s directory. diff --git a/setup/report_py3o/readme/CONTRIBUTORS.rst b/setup/report_py3o/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..bfe26b4cb --- /dev/null +++ b/setup/report_py3o/readme/CONTRIBUTORS.rst @@ -0,0 +1,7 @@ +* Florent Aide (`XCG Consulting `_) +* Laurent Mignon , +* Alexis de Lattre , +* Guewen Baconnier +* Omar Castiñeira +* Holger Brunn +* Phuc Tran Thanh diff --git a/setup/report_py3o/readme/DESCRIPTION.rst b/setup/report_py3o/readme/DESCRIPTION.rst new file mode 100644 index 000000000..97c883956 --- /dev/null +++ b/setup/report_py3o/readme/DESCRIPTION.rst @@ -0,0 +1,16 @@ +The py3o reporting engine is a reporting engine for Odoo based on `Libreoffice `_: + +* the report is created with Libreoffice (ODT or ODS), +* the report is stored on the server in OpenDocument format (.odt or .ods file) +* the report is sent to the user in OpenDocument format or in any output format supported by Libreoffice (PDF, HTML, DOC, DOCX, Docbook, XLS, etc.) + +The key advantages of a Libreoffice based reporting engine are: + +* no need to be a developer to create or modify a report: the report is created and modified with Libreoffice. So this reporting engine has a full WYSIWYG report development tool! +* For a PDF report in A4/Letter format, it's easier to develop it with a tool such as Libreoffice that is designed to create A4/Letter documents than to develop it in HTML/CSS, also some print peculiarities (backgrounds, margin boxes) are not very well supported by the HTML/CSS based solutions. +* If you want your users to be able to modify the document after its generation by Odoo, just configure the document with ODT output (or DOC or DOCX) and the user will be able to modify the document with Libreoffice (or Word) after its generation by Odoo. +* Easy development of spreadsheet reports in ODS format (XLS output possible). + +This module *report_py3o* is the base module for the Py3o reporting engine. If used alone, it will spawn a libreoffice process for each ODT to PDF (or ODT to DOCX, ..) document conversion. This is slow and can become a problem if you have a lot of reports to convert from ODT to another format. In this case, you should consider the additionnal module *report_py3o_fusion_server* which is designed to work with a libreoffice daemon. With *report_py3o_fusion_server*, the technical environnement is more complex to setup because you have to install additionnal software components and run 2 daemons, but you have much better performances and you can configure the libreoffice PDF export options in Odoo (allows to generate PDF forms, PDF/A documents, password-protected PDFs, watermarked PDFs, etc.). + +This reporting engine is an alternative to `Aeroo `_: these two reporting engines have similar features but their implementation is entirely different. You cannot use aeroo templates as drop in replacement though, you'll have to change a few details. diff --git a/setup/report_py3o/readme/INSTALL.rst b/setup/report_py3o/readme/INSTALL.rst new file mode 100644 index 000000000..24bebaf4d --- /dev/null +++ b/setup/report_py3o/readme/INSTALL.rst @@ -0,0 +1,12 @@ +Install the required python libs: + +.. code:: + + pip install py3o.template + pip install py3o.formats + +To allow the conversion of ODT or ODS reports to other formats (PDF, DOC, DOCX, etc.), install libreoffice: + +.. code:: + + apt-get --no-install-recommends install libreoffice diff --git a/setup/report_py3o/readme/ROADMAP.rst b/setup/report_py3o/readme/ROADMAP.rst new file mode 100644 index 000000000..568db673d --- /dev/null +++ b/setup/report_py3o/readme/ROADMAP.rst @@ -0,0 +1,3 @@ +* generate barcode ? +* add more detailed example in demo file to showcase features +* add migration guide aeroo -> py3o diff --git a/setup/report_py3o/readme/USAGE.rst b/setup/report_py3o/readme/USAGE.rst new file mode 100644 index 000000000..7a4ba59d9 --- /dev/null +++ b/setup/report_py3o/readme/USAGE.rst @@ -0,0 +1,29 @@ +The templating language is `extensively documented `_, the records are exposed in libreoffice as ``objects``, on which you can also call functions. + +Available functions and objects +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +user + Browse record of current user +lang + The user's company's language as string (ISO code) +b64decode + ``base64.b64decode`` +format_multiline_value(string) + Generate the ODF equivalent of ``
`` and `` `` for multiline fields (ODF is XML internally, so those would be skipped otherwise) +html_sanitize(string) + Sanitize HTML string +time + Python's ``time`` module +display_address(partner) + Return a formatted string of the partner's address +o_format_lang(value, lang_code=False, digits=None, grouping=True, monetary=False, dp=False, currency_obj=False, no_break_space=True) + Return a formatted numeric or monetary value according to the context language and timezone +o_format_date(value, lang_code=False, date_format=False) + Return a formatted date or time value according to the context language and timezone + + +Sample report templates +~~~~~~~~~~~~~~~~~~~~~~~ + +Sample py3o report templates for the main Odoo native reports (invoice, sale order, purchase order, picking, etc.) are available on the Github project `odoo-py3o-report-templates `_. diff --git a/setup/report_py3o/security/ir.model.access.csv b/setup/report_py3o/security/ir.model.access.csv new file mode 100644 index 000000000..bc6eb629b --- /dev/null +++ b/setup/report_py3o/security/ir.model.access.csv @@ -0,0 +1,4 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_py3o_template_admin,access_py3o_template_admin,model_py3o_template,base.group_no_one,1,1,1,1 +access_py3o_template_user,access_py3o_template_user,model_py3o_template,base.group_user,1,0,0,0 +access_py3o_report_user,access_py3o_report_user,model_py3o_report,base.group_user,1,1,1,1 diff --git a/setup/report_py3o/static/description/icon.png b/setup/report_py3o/static/description/icon.png new file mode 100644 index 000000000..3a0328b51 Binary files /dev/null and b/setup/report_py3o/static/description/icon.png differ diff --git a/setup/report_py3o/static/description/index.html b/setup/report_py3o/static/description/index.html new file mode 100644 index 000000000..0bfe03d7a --- /dev/null +++ b/setup/report_py3o/static/description/index.html @@ -0,0 +1,588 @@ + + + + + + +Py3o Report Engine + + + +
+

Py3o Report Engine

+ + +

Beta License: AGPL-3 OCA/reporting-engine Translate me on Weblate Try me on Runboat

+

The py3o reporting engine is a reporting engine for Odoo based on Libreoffice:

+
    +
  • the report is created with Libreoffice (ODT or ODS),
  • +
  • the report is stored on the server in OpenDocument format (.odt or .ods file)
  • +
  • the report is sent to the user in OpenDocument format or in any output format supported by Libreoffice (PDF, HTML, DOC, DOCX, Docbook, XLS, etc.)
  • +
+

The key advantages of a Libreoffice based reporting engine are:

+
    +
  • no need to be a developer to create or modify a report: the report is created and modified with Libreoffice. So this reporting engine has a full WYSIWYG report development tool!
  • +
  • For a PDF report in A4/Letter format, it’s easier to develop it with a tool such as Libreoffice that is designed to create A4/Letter documents than to develop it in HTML/CSS, also some print peculiarities (backgrounds, margin boxes) are not very well supported by the HTML/CSS based solutions.
  • +
  • If you want your users to be able to modify the document after its generation by Odoo, just configure the document with ODT output (or DOC or DOCX) and the user will be able to modify the document with Libreoffice (or Word) after its generation by Odoo.
  • +
  • Easy development of spreadsheet reports in ODS format (XLS output possible).
  • +
+

This module report_py3o is the base module for the Py3o reporting engine. If used alone, it will spawn a libreoffice process for each ODT to PDF (or ODT to DOCX, ..) document conversion. This is slow and can become a problem if you have a lot of reports to convert from ODT to another format. In this case, you should consider the additionnal module report_py3o_fusion_server which is designed to work with a libreoffice daemon. With report_py3o_fusion_server, the technical environnement is more complex to setup because you have to install additionnal software components and run 2 daemons, but you have much better performances and you can configure the libreoffice PDF export options in Odoo (allows to generate PDF forms, PDF/A documents, password-protected PDFs, watermarked PDFs, etc.).

+

This reporting engine is an alternative to Aeroo: these two reporting engines have similar features but their implementation is entirely different. You cannot use aeroo templates as drop in replacement though, you’ll have to change a few details.

+

Table of contents

+ +
+

Installation

+

Install the required python libs:

+
+pip install py3o.template
+pip install py3o.formats
+
+

To allow the conversion of ODT or ODS reports to other formats (PDF, DOC, DOCX, etc.), install libreoffice:

+
+apt-get --no-install-recommends install libreoffice
+
+
+
+

Configuration

+

For example, to replace the native invoice report by a custom py3o report, add the following XML file in your custom module:

+
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+
+<record id="account.account_invoices" model="ir.actions.report">
+    <field name="report_type">py3o</field>
+    <field name="py3o_filetype">odt</field>
+    <field name="module">my_custom_module_base</field>
+    <field name="py3o_template_fallback">report/account_invoice.odt</field>
+</record>
+
+</odoo>
+
+

where my_custom_module_base is the name of the custom Odoo module. In this example, the invoice ODT file is located in my_custom_module_base/report/account_invoice.odt.

+

It’s also possible to reference a template located in a trusted path of your +Odoo server. In this case you must let the module entry empty and specify +the path to the template as py3o_template_fallback.

+
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+
+<record id="account.account_invoices" model="ir.actions.report">
+    <field name="report_type">py3o</field>
+    <field name="py3o_filetype">odt</field>
+    <field name="py3o_template_fallback">/odoo/templates/py3o/report/account_invoice.odt</field>
+</record>
+
+</odoo>
+
+

Moreover, you must also modify the Odoo server configuration file to declare +the allowed root directory for your py3o templates. Only templates located +into this directory can be loaded by py3o report.

+
+[options]
+...
+
+[report_py3o]
+root_tmpl_path=/odoo/templates/py3o
+
+

If you want an invoice in PDF format instead of ODT format, the XML file should look like:

+
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+
+<record id="account.account_invoices" model="ir.actions.report">
+    <field name="report_type">py3o</field>
+    <field name="py3o_filetype">pdf</field>
+    <field name="module">my_custom_module_base</field>
+    <field name="py3o_template_fallback">report/account_invoice.odt</field>
+</record>
+
+</odoo>
+
+

If you want to add a new py3o PDF report (and not replace a native report), the XML file should look like this:

+
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+
+<record id="partner_summary_report" model="ir.actions.report">
+    <field name="name">Partner Summary</field>
+    <field name="model">res.partner</field>
+    <field name="report_name">res.partner.summary</field>
+    <field name="report_type">py3o</field>
+    <field name="py3o_filetype">pdf</field>
+    <field name="module">my_custom_module_base</field>
+    <field name="py3o_template_fallback">report/partner_summary.odt</field>
+    <!-- Add entry in "Print" drop-down list -->
+    <field name="binding_type">report</field>
+    <field name="binding_model_id" ref="base.model_res_partner"/>
+</record>
+
+</odoo>
+
+
+

Configuration parameters

+
+
py3o.conversion_command
+
The command to be used to run the conversion, libreoffice by default. If you change this, whatever you set here must accept the parameters --headless --convert-to $ext $file and put the resulting file into $file’s directory with extension $ext. The command will be started in $file’s directory.
+
+
+
+
+

Usage

+

The templating language is extensively documented, the records are exposed in libreoffice as objects, on which you can also call functions.

+
+

Available functions and objects

+
+
user
+
Browse record of current user
+
lang
+
The user’s company’s language as string (ISO code)
+
b64decode
+
base64.b64decode
+
format_multiline_value(string)
+
Generate the ODF equivalent of <br/> and &nbsp; for multiline fields (ODF is XML internally, so those would be skipped otherwise)
+
html_sanitize(string)
+
Sanitize HTML string
+
time
+
Python’s time module
+
display_address(partner)
+
Return a formatted string of the partner’s address
+
o_format_lang(value, lang_code=False, digits=None, grouping=True, monetary=False, dp=False, currency_obj=False, no_break_space=True)
+
Return a formatted numeric or monetary value according to the context language and timezone
+
o_format_date(value, lang_code=False, date_format=False)
+
Return a formatted date or time value according to the context language and timezone
+
+
+
+

Sample report templates

+

Sample py3o report templates for the main Odoo native reports (invoice, sale order, purchase order, picking, etc.) are available on the Github project odoo-py3o-report-templates.

+
+
+
+

Known issues / Roadmap

+
    +
  • generate barcode ?
  • +
  • add more detailed example in demo file to showcase features
  • +
  • add migration guide aeroo -> py3o
  • +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • XCG Consulting
  • +
  • ACSONE SA/NV
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/reporting-engine project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/setup/report_py3o/static/src/js/py3oactionservice.esm.js b/setup/report_py3o/static/src/js/py3oactionservice.esm.js new file mode 100644 index 000000000..4004efa23 --- /dev/null +++ b/setup/report_py3o/static/src/js/py3oactionservice.esm.js @@ -0,0 +1,54 @@ +/** @odoo-module **/ + +import {download} from "@web/core/network/download"; +import {registry} from "@web/core/registry"; + +registry + .category("ir.actions.report handlers") + .add("py3o_handler", async function (action, options, env) { + if (action.report_type === "py3o") { + let url = `/report/py3o/${action.report_name}`; + const actionContext = action.context || {}; + if ( + _.isUndefined(action.data) || + _.isNull(action.data) || + (_.isObject(action.data) && _.isEmpty(action.data)) + ) { + // Build a query string with `action.data` (it's the place where reports + // using a wizard to customize the output traditionally put their options) + if (actionContext.active_ids) { + var activeIDsPath = "/" + actionContext.active_ids.join(","); + url += activeIDsPath; + } + } else { + var serializedOptionsPath = + "?options=" + encodeURIComponent(JSON.stringify(action.data)); + serializedOptionsPath += + "&context=" + encodeURIComponent(JSON.stringify(actionContext)); + url += serializedOptionsPath; + } + env.services.ui.block(); + try { + await download({ + url: "/report/download", + data: { + data: JSON.stringify([url, action.report_type]), + context: JSON.stringify(env.services.user.context), + }, + }); + } finally { + env.services.ui.unblock(); + } + const onClose = options.onClose; + if (action.close_on_report_download) { + return env.services.action.doAction( + {type: "ir.actions.act_window_close"}, + {onClose} + ); + } else if (onClose) { + onClose(); + } + return Promise.resolve(true); + } + return Promise.resolve(false); + }); diff --git a/setup/report_py3o/tests/__init__.py b/setup/report_py3o/tests/__init__.py new file mode 100644 index 000000000..13bc3247b --- /dev/null +++ b/setup/report_py3o/tests/__init__.py @@ -0,0 +1 @@ +from . import test_report_py3o diff --git a/setup/report_py3o/tests/test_report_py3o.py b/setup/report_py3o/tests/test_report_py3o.py new file mode 100644 index 000000000..6ef02b541 --- /dev/null +++ b/setup/report_py3o/tests/test_report_py3o.py @@ -0,0 +1,264 @@ +# Copyright 2016 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).). + +import base64 +import logging +import os +import shutil +import tempfile +from base64 import b64decode, b64encode +from contextlib import contextmanager +from unittest import mock + +import pkg_resources +from PyPDF2 import PdfFileWriter +from PyPDF2.pdf import PageObject + +from odoo import tools +from odoo.exceptions import ValidationError +from odoo.tests.common import TransactionCase + +from odoo.addons.base.tests.test_mimetypes import PNG + +from ..models._py3o_parser_context import format_multiline_value +from ..models.ir_actions_report import PY3O_CONVERSION_COMMAND_PARAMETER +from ..models.py3o_report import TemplateNotFound + +logger = logging.getLogger(__name__) + +try: + from genshi.core import Markup +except ImportError: + logger.debug("Cannot import genshi.core") + + +@contextmanager +def temporary_copy(path): + filname, ext = os.path.splitext(path) + tmp_filename = tempfile.mktemp(suffix="." + ext) + try: + shutil.copy2(path, tmp_filename) + yield tmp_filename + finally: + os.unlink(tmp_filename) + + +class TestReportPy3o(TransactionCase): + def setUp(self): + super(TestReportPy3o, self).setUp() + self.env.user.image_1920 = PNG + self.report = self.env.ref("report_py3o.res_users_report_py3o") + self.py3o_report = self.env["py3o.report"].create( + {"ir_actions_report_id": self.report.id} + ) + + def test_required_py3_filetype(self): + self.assertEqual(self.report.report_type, "py3o") + with self.assertRaises(ValidationError) as e: + self.report.py3o_filetype = False + self.assertEqual( + e.exception.args[0], "Field 'Output Format' is required for Py3O report" + ) + + def _render_patched(self, result_text="test result", call_count=1): + py3o_report = self.env["py3o.report"] + py3o_report_obj = py3o_report.create({"ir_actions_report_id": self.report.id}) + with mock.patch.object( + py3o_report.__class__, "_create_single_report" + ) as patched_pdf: + result = tempfile.mktemp(".txt") + with open(result, "w") as fp: + fp.write(result_text) + patched_pdf.side_effect = ( + lambda record, data: py3o_report_obj._postprocess_report(record, result) + or result + ) + # test the call the the create method inside our custom parser + self.report._render(self.report.id, self.env.user.ids) + self.assertEqual(call_count, patched_pdf.call_count) + # generated files no more exists + self.assertFalse(os.path.exists(result)) + + def test_reports(self): + res = self.report._render(self.report.id, self.env.user.ids) + self.assertTrue(res) + + def test_reports_merge_zip(self): + self.report.py3o_filetype = "odt" + users = self.env["res.users"].search([]) + self.assertTrue(len(users) > 0) + py3o_report = self.env["py3o.report"] + _zip_results = self.py3o_report._zip_results + with mock.patch.object( + py3o_report.__class__, "_zip_results" + ) as patched_zip_results: + patched_zip_results.side_effect = _zip_results + content, filetype = self.report._render(self.report.id, users.ids) + self.assertEqual(1, patched_zip_results.call_count) + self.assertEqual(filetype, "zip") + + def test_reports_merge_pdf(self): + reports_path = [] + for _i in range(0, 3): + result = tempfile.mktemp(".txt") + writer = PdfFileWriter() + writer.addPage(PageObject.createBlankPage(width=100, height=100)) + with open(result, "wb") as fp: + writer.write(fp) + reports_path.append(result) + res = self.py3o_report._merge_pdf(reports_path) + self.assertTrue(res) + + def test_report_load_from_attachment(self): + self.report.write({"attachment_use": True, "attachment": "'my_saved_report'"}) + attachments = self.env["ir.attachment"].search([]) + self._render_patched() + new_attachments = self.env["ir.attachment"].search([]) + created_attachement = new_attachments - attachments + self.assertEqual(1, len(created_attachement)) + content = b64decode(created_attachement.datas) + self.assertEqual(b"test result", content) + # put a new content into tha attachement and check that the next + # time we ask the report we received the saved attachment not a newly + # generated document + created_attachement.datas = base64.b64encode(b"new content") + res = self.report._render(self.report.id, self.env.user.ids) + self.assertEqual((b"new content", self.report.py3o_filetype), res) + + def test_report_post_process(self): + """ + By default the post_process method is in charge to save the + generated report into an ir.attachment if requested. + """ + self.report.attachment = "object.name + '.txt'" + ir_attachment = self.env["ir.attachment"] + attachements = ir_attachment.search([(1, "=", 1)]) + self._render_patched() + attachements = ir_attachment.search([(1, "=", 1)]) - attachements + self.assertEqual(1, len(attachements.ids)) + self.assertEqual(self.env.user.name + ".txt", attachements.name) + self.assertEqual(self.env.user._name, attachements.res_model) + self.assertEqual(self.env.user.id, attachements.res_id) + self.assertEqual(b"test result", b64decode(attachements.datas)) + + @tools.misc.mute_logger("odoo.addons.report_py3o.models.py3o_report") + def test_report_template_configs(self): + # the demo template is specified with a relative path in in the module + # path + tmpl_name = self.report.py3o_template_fallback + flbk_filename = pkg_resources.resource_filename( + "odoo.addons.%s" % self.report.module, tmpl_name + ) + self.assertTrue(os.path.exists(flbk_filename)) + res = self.report._render(self.report.id, self.env.user.ids) + self.assertTrue(res) + # The generation fails if the template is not found + self.report.module = False + with self.assertRaises(TemplateNotFound), self.env.cr.savepoint(): + self.report._render(self.report.id, self.env.user.ids) + + # the template can also be provided as an abspath if it's root path + # is trusted + self.report.py3o_template_fallback = flbk_filename + with self.assertRaises(TemplateNotFound): + self.report._render(self.report.id, self.env.user.ids) + with temporary_copy(flbk_filename) as tmp_filename: + self.report.py3o_template_fallback = tmp_filename + tools.config.misc["report_py3o"] = { + "root_tmpl_path": os.path.realpath(os.path.dirname(tmp_filename)) + } + res = self.report._render(self.report.id, self.env.user.ids) + self.assertTrue(res) + + # the tempalte can also be provided as a binary field + self.report.py3o_template_fallback = False + + with open(flbk_filename, "rb") as tmpl_file: + tmpl_data = b64encode(tmpl_file.read()) + py3o_template = self.env["py3o.template"].create( + { + "name": "test_template", + "py3o_template_data": tmpl_data, + "filetype": "odt", + } + ) + self.report.py3o_template_id = py3o_template + self.report.py3o_template_fallback = flbk_filename + res = self.report._render(self.report.id, self.env.user.ids) + self.assertTrue(res) + + @tools.misc.mute_logger("odoo.addons.report_py3o.models.py3o_report") + def test_report_template_fallback_validity(self): + tmpl_name = self.report.py3o_template_fallback + flbk_filename = pkg_resources.resource_filename( + "odoo.addons.%s" % self.report.module, tmpl_name + ) + # an exising file in a native format is a valid template if it's + self.assertTrue(self.py3o_report._get_template_from_path(tmpl_name)) + self.report.module = None + # a directory is not a valid template.. + self.assertFalse(self.py3o_report._get_template_from_path("/etc/")) + self.assertFalse(self.py3o_report._get_template_from_path(".")) + # an vaild template outside the root_tmpl_path is not a valid template + # path + # located in trusted directory + self.report.py3o_template_fallback = flbk_filename + self.assertFalse(self.py3o_report._get_template_from_path(flbk_filename)) + with temporary_copy(flbk_filename) as tmp_filename: + self.assertTrue(self.py3o_report._get_template_from_path(tmp_filename)) + # check security + self.assertFalse( + self.py3o_report._get_template_from_path("rm -rf . & %s" % flbk_filename) + ) + # a file in a non native LibreOffice format is not a valid template + with tempfile.NamedTemporaryFile(suffix=".toto") as f: + self.assertFalse(self.py3o_report._get_template_from_path(f.name)) + # non exising files are not valid template + self.assertFalse(self.py3o_report._get_template_from_path("/etc/test.odt")) + + def test_escape_html_characters_format_multiline_value(self): + self.assertEqual( + Markup("<>&test;"), + format_multiline_value("<>\n&test;"), + ) + + def test_py3o_report_availability(self): + # This test could fails if libreoffice is not available on the server + self.report.py3o_filetype = "odt" + self.assertTrue(self.report.lo_bin_path) + self.assertTrue(self.report.is_py3o_native_format) + self.assertFalse(self.report.is_py3o_report_not_available) + self.assertFalse(self.report.msg_py3o_report_not_available) + + # specify a wrong lo bin path + self.env["ir.config_parameter"].set_param( + PY3O_CONVERSION_COMMAND_PARAMETER, "/wrong_path" + ) + self.report.refresh() + # no bin path available but the report is still available since + # the output is into native format + self.assertFalse(self.report.lo_bin_path) + self.assertFalse(self.report.is_py3o_report_not_available) + self.assertFalse(self.report.msg_py3o_report_not_available) + res = self.report._render(self.report.id, self.env.user.ids) + self.assertTrue(res) + + # The report should become unavailable for an non native output format + self.report.py3o_filetype = "pdf" + self.assertFalse(self.report.is_py3o_native_format) + self.assertTrue(self.report.is_py3o_report_not_available) + self.assertTrue(self.report.msg_py3o_report_not_available) + with self.assertRaises(RuntimeError): + self.report._render(self.report.id, self.env.user.ids) + + # if we reset the wrong path, everything should work + self.env["ir.config_parameter"].set_param( + PY3O_CONVERSION_COMMAND_PARAMETER, "libreoffice" + ) + self.report.refresh() + self.assertTrue(self.report.lo_bin_path) + self.assertFalse(self.report.is_py3o_native_format) + self.assertFalse(self.report.is_py3o_report_not_available) + self.assertFalse(self.report.msg_py3o_report_not_available) + res = self.report._render(self.report.id, self.env.user.ids) + self.assertTrue(res) diff --git a/setup/report_py3o/views/ir_actions_report.xml b/setup/report_py3o/views/ir_actions_report.xml new file mode 100644 index 000000000..d7dd54be9 --- /dev/null +++ b/setup/report_py3o/views/ir_actions_report.xml @@ -0,0 +1,52 @@ + + + + + py3o_report_view + ir.actions.report + + + + + + + + + + + + + + + + + + + + + + py3o_report_search_view + ir.actions.report + + + + + + + + diff --git a/setup/report_py3o/views/py3o_template.xml b/setup/report_py3o/views/py3o_template.xml new file mode 100644 index 000000000..e057e77e7 --- /dev/null +++ b/setup/report_py3o/views/py3o_template.xml @@ -0,0 +1,54 @@ + + + + py3o.template.configuration.search.view + py3o.template + + + + + + + + + + + + py3o.template.configuration.form.view + py3o.template + +
+ + + + + +
+
+
+ + py3o.template.configuration.tree.view + py3o.template + + + + + + + + + Py3o Templates + py3o.template + tree,form + + +