init: Euro-Office Odoo 16.0 modules
Based on onlyoffice_odoo by Ascensio System SIA (ONLYOFFICE, LGPL-3). Rebranded and adapted for Euro-Office by bring.out d.o.o. Modules: - eurooffice_odoo: base integration - eurooffice_odoo_templates: document templates - eurooffice_odoo_oca_dms: OCA DMS integration (replaces Enterprise documents) All references renamed: onlyoffice -> eurooffice, ONLYOFFICE -> Euro-Office. Original copyright notices preserved.
|
|
@ -0,0 +1,2 @@
|
|||
from . import controllers
|
||||
from . import models
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
# Based on onlyoffice_odoo by Ascensio System SIA (ONLYOFFICE)
|
||||
# Adapted and rebranded for Euro-Office by bring.out d.o.o.
|
||||
# pylint: disable=pointless-statement
|
||||
{
|
||||
"name": "Euro-Office Templates",
|
||||
"summary": "Automate form creation with inserting fields from Odoo in templates.",
|
||||
"description": "Work with fillable templates in Odoo using Euro-Office. Create templates based on the data and fields available in Odoo, fill them out and print with several clicks.", # noqa: E501
|
||||
"author": "Euro-Office",
|
||||
"website": "https://github.com/Euro-Office/eurooffice_odoo",
|
||||
"category": "Productivity",
|
||||
"version": "1.3.2",
|
||||
"depends": ["base", "eurooffice_odoo", "web"],
|
||||
"external_dependencies": {"python": ["pyjwt"]},
|
||||
# always loaded
|
||||
"data": [
|
||||
"security/eurooffice_templates_security.xml",
|
||||
"security/ir.model.access.csv",
|
||||
"views/eurooffice_menu_views.xml",
|
||||
"views/res_config_settings_views.xml",
|
||||
],
|
||||
"demo": ["data/templates_data.xml"],
|
||||
"license": "LGPL-3",
|
||||
"support": "support@eurooffice.com",
|
||||
"images": [
|
||||
"static/description/main_screenshot.png",
|
||||
"static/description/create_templates.png",
|
||||
"static/description/edit_templates.png",
|
||||
"static/description/access_rights.png",
|
||||
"static/description/work_with_templates.png",
|
||||
],
|
||||
"installable": True,
|
||||
"application": True,
|
||||
"assets": {
|
||||
"web.assets_backend": [
|
||||
"eurooffice_odoo_templates/static/src/css/*",
|
||||
"eurooffice_odoo_templates/static/src/views/**/*",
|
||||
],
|
||||
},
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
from . import controllers
|
||||
|
|
@ -0,0 +1,529 @@
|
|||
#
|
||||
# (c) Copyright Ascensio System SIA 2024
|
||||
#
|
||||
import base64
|
||||
import codecs
|
||||
import io
|
||||
import json
|
||||
import logging
|
||||
import re
|
||||
import zipfile
|
||||
from datetime import datetime
|
||||
from urllib.parse import quote
|
||||
|
||||
from odoo import http
|
||||
from odoo.http import request
|
||||
from odoo.tools import (
|
||||
DEFAULT_SERVER_DATE_FORMAT,
|
||||
DEFAULT_SERVER_DATETIME_FORMAT,
|
||||
file_open,
|
||||
get_lang,
|
||||
)
|
||||
|
||||
from odoo.addons.eurooffice_odoo.controllers.controllers import Eurooffice_Connector, eurooffice_request
|
||||
from odoo.addons.eurooffice_odoo.utils import config_utils, file_utils, jwt_utils, url_utils
|
||||
from odoo.addons.eurooffice_odoo_templates.utils import config_utils as templates_config_utils
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Eurooffice_Inherited_Connector(Eurooffice_Connector):
|
||||
@http.route("/eurooffice/template/template_content/<string:path>", auth="public")
|
||||
def get_template_content(self, path):
|
||||
try:
|
||||
file_content = request.env["eurooffice.odoo.demo.templates"].get_template_content(path.replace("_", "/"))
|
||||
|
||||
return request.make_response(
|
||||
file_content,
|
||||
headers=[
|
||||
("Content-Type", "application/pdf"),
|
||||
("Content-Disposition", 'inline; filename="preview.pdf"'),
|
||||
],
|
||||
)
|
||||
except Exception as e:
|
||||
return request.not_found(f"Error: {str(e)}")
|
||||
|
||||
@http.route("/eurooffice/template/editor", auth="user", methods=["POST"], type="json", csrf=False)
|
||||
def override_render_editor(self, attachment_id, access_token=None):
|
||||
attachment = self.get_attachment(attachment_id)
|
||||
if not attachment:
|
||||
return request.not_found()
|
||||
|
||||
attachment.validate_access(access_token)
|
||||
|
||||
data = attachment.read(["id", "checksum", "public", "name", "access_token"])[0]
|
||||
filename = data["name"]
|
||||
|
||||
can_read = attachment.check_access_rights("read", raise_exception=False) and file_utils.can_view(filename)
|
||||
hasAccess = http.request.env.user.has_group("eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin")
|
||||
can_write = (
|
||||
hasAccess
|
||||
and attachment.check_access_rights("write", raise_exception=False)
|
||||
and file_utils.can_edit(filename)
|
||||
)
|
||||
|
||||
if not can_read:
|
||||
raise Exception("cant read")
|
||||
|
||||
prepare_editor_values = self.prepare_editor_values(attachment, access_token, can_write)
|
||||
return prepare_editor_values
|
||||
|
||||
|
||||
class EuroofficeTemplate_Connector(http.Controller):
|
||||
@http.route("/eurooffice/template/fill", auth="user", type="http")
|
||||
def main(self, template_id, record_ids):
|
||||
logger.info("GET /eurooffice/template/fill - template: %s, records: %s", template_id, record_ids)
|
||||
internal_jwt_secret = config_utils.get_internal_jwt_secret(request.env)
|
||||
oo_security_token = jwt_utils.encode_payload(request.env, {"id": request.env.user.id}, internal_jwt_secret)
|
||||
|
||||
try:
|
||||
templates = self.fill_template(oo_security_token, record_ids, template_id)
|
||||
if len(templates) == 1:
|
||||
url = next(iter(templates.values()))
|
||||
filename = next(iter(templates))
|
||||
filename = filename.encode("ascii", "ignore").decode("ascii")
|
||||
if not filename:
|
||||
filename = "document.pdf"
|
||||
response = eurooffice_request(url=quote(url, safe="/:?=&"), method="get")
|
||||
if response.status_code == 200:
|
||||
headers = [
|
||||
("Content-Type", "application/pdf"),
|
||||
("X-Content-Type-Options", "nosniff"),
|
||||
("Content-Length", str(len(response.content))),
|
||||
("Content-Disposition", f'attachment; filename="{filename}"'),
|
||||
]
|
||||
logger.info("GET /eurooffice/template/fill - returning single PDF: %s", filename)
|
||||
return request.make_response(response.content, headers)
|
||||
else:
|
||||
e = f"error while downloading the document file, status = {response.status_code}"
|
||||
logger.warning(e)
|
||||
return request.not_found()
|
||||
elif len(templates) > 1:
|
||||
logger.info("GET /eurooffice/template/fill - creating ZIP with %s files", len(templates))
|
||||
stream = io.BytesIO()
|
||||
with zipfile.ZipFile(stream, "w", zipfile.ZIP_DEFLATED) as archive:
|
||||
for filename, url in templates.items():
|
||||
response = eurooffice_request(url=url, method="get")
|
||||
if response.status_code == 200:
|
||||
archive.writestr(filename, response.content)
|
||||
else:
|
||||
e = f"error while downloading the document file to be generated zip, status = {response.status_code}" # noqa: E501
|
||||
logger.warning(e)
|
||||
return request.not_found()
|
||||
stream.seek(0)
|
||||
content = stream.read()
|
||||
stream.flush()
|
||||
|
||||
filename = f"eurooffice-templates-{datetime.now().strftime('%Y_%m_%d_%H_%M')}.zip"
|
||||
headers = [
|
||||
("Content-Type", "application/zip"),
|
||||
("X-Content-Type-Options", "nosniff"),
|
||||
("Content-Length", str(len(response.content))),
|
||||
("Content-Disposition", f'attachment; filename="{filename}"'),
|
||||
]
|
||||
logger.info("GET /eurooffice/template/fill - returning ZIP: %s", filename)
|
||||
return request.make_response(content, headers)
|
||||
else:
|
||||
logger.warning("no templates found")
|
||||
logger.debug(templates)
|
||||
return request.not_found()
|
||||
except Exception as e:
|
||||
logger.warning(e)
|
||||
return request.not_found()
|
||||
|
||||
return request.not_found()
|
||||
|
||||
def fill_template(self, oo_security_token, record_ids, template_id):
|
||||
logger.info("fill_template - template: %s, records: %s", template_id, record_ids)
|
||||
docserver_url = config_utils.get_doc_server_public_url(request.env)
|
||||
docserver_url = url_utils.replace_public_url_to_internal(request.env, docserver_url)
|
||||
docbuilder_url = f"{docserver_url}docbuilder"
|
||||
jwt_header = config_utils.get_jwt_header(request.env)
|
||||
jwt_secret = config_utils.get_jwt_secret(request.env)
|
||||
odoo_url = config_utils.get_base_or_odoo_url(request.env)
|
||||
|
||||
docbuilder_headers = {"Content-Type": "application/json", "Accept": "application/json"}
|
||||
docbuilder_callback_url = f"{odoo_url}eurooffice/template/callback/docbuilder/fill_template?oo_security_token={oo_security_token}&record_ids={record_ids}&template_id={template_id}" # noqa: E501
|
||||
docbuilder_payload = {"async": False, "url": docbuilder_callback_url}
|
||||
|
||||
logger.info("fill_template - docserver_url: %s", docserver_url)
|
||||
logger.info("fill_template - jwt_enabled: %s", bool(jwt_secret))
|
||||
|
||||
if jwt_secret:
|
||||
docbuilder_payload["token"] = jwt_utils.encode_payload(request.env, docbuilder_payload, jwt_secret)
|
||||
docbuilder_headers[jwt_header] = "Bearer " + jwt_utils.encode_payload(
|
||||
request.env, {"payload": docbuilder_payload}, jwt_secret
|
||||
)
|
||||
|
||||
try:
|
||||
if jwt_secret:
|
||||
docbuilder_response = eurooffice_request(
|
||||
url=docbuilder_url,
|
||||
method="post",
|
||||
opts={
|
||||
"json": docbuilder_payload,
|
||||
"headers": docbuilder_headers,
|
||||
},
|
||||
)
|
||||
else:
|
||||
docbuilder_response = eurooffice_request(
|
||||
url=docbuilder_url,
|
||||
method="post",
|
||||
opts={
|
||||
"json": docbuilder_payload,
|
||||
},
|
||||
)
|
||||
docbuilder_json = docbuilder_response.json()
|
||||
if docbuilder_json.get("error"):
|
||||
e = self.get_docbuilder_error(docbuilder_json.get("error"))
|
||||
logger.warning("fill_template - docbuilder error: %s", e)
|
||||
raise Exception(e)
|
||||
|
||||
urls = docbuilder_json.get("urls")
|
||||
logger.info("fill_template - success, got %s URLs", len(urls) if urls else 0)
|
||||
return urls
|
||||
except Exception as e:
|
||||
logger.warning("fill_template - error: %s", str(e))
|
||||
raise
|
||||
|
||||
@http.route("/eurooffice/template/callback/docbuilder/fill_template", auth="public")
|
||||
def docbuilder_fill_template(self, oo_security_token, record_ids, template_id):
|
||||
logger.info(
|
||||
"GET /eurooffice/template/callback/docbuilder/fill_template - template: %s, records: %s",
|
||||
template_id,
|
||||
record_ids,
|
||||
)
|
||||
if not oo_security_token or not record_ids or not template_id:
|
||||
logger.warning("oo_security_token or record_ids or template_id not found")
|
||||
return request.not_found()
|
||||
|
||||
user = self.get_user_from_token(oo_security_token)
|
||||
if not user:
|
||||
logger.warning("user not found")
|
||||
return request.not_found()
|
||||
|
||||
template = self.get_record("eurooffice.odoo.templates", template_id, user)
|
||||
if not template:
|
||||
logger.warning("template not found: %s", template_id)
|
||||
return request.not_found()
|
||||
|
||||
attachment_id = template.attachment_id.id
|
||||
if not attachment_id:
|
||||
logger.warning("attachment_id of the template was not found")
|
||||
return request.not_found()
|
||||
|
||||
model = template.template_model_model
|
||||
if not model:
|
||||
logger.warning("model of the template was not found")
|
||||
return request.not_found()
|
||||
|
||||
try:
|
||||
record_ids = [int(x) for x in record_ids.split(",")]
|
||||
logger.info(
|
||||
"GET /eurooffice/template/callback/docbuilder/fill_template - processing %s records", len(record_ids)
|
||||
)
|
||||
url = f"{config_utils.get_base_or_odoo_url(http.request.env)}eurooffice/template/download/{attachment_id}?oo_security_token={oo_security_token}" # noqa: E501
|
||||
|
||||
docbuilder_content = ""
|
||||
docbuilder_script_content = ""
|
||||
with file_open("eurooffice_odoo_templates/controllers/fill_template.docbuilder", "r") as f:
|
||||
docbuilder_script_content = f.read()
|
||||
|
||||
keys = self.get_keys(attachment_id, oo_security_token)
|
||||
logger.info(
|
||||
"GET /eurooffice/template/callback/docbuilder/fill_template - got %s keys", len(keys) if keys else 0
|
||||
)
|
||||
for record_id in record_ids:
|
||||
fields = self.get_fields(keys, model, record_id, user)
|
||||
fields = json.dumps(fields, ensure_ascii=False)
|
||||
|
||||
docbuilder_content += f"""
|
||||
builder.OpenFile("{url}");
|
||||
var fields = {fields};
|
||||
"""
|
||||
docbuilder_content += docbuilder_script_content
|
||||
|
||||
record = self.get_record(model, record_id, user)
|
||||
record_name = getattr(record, "display_name", getattr(record, "name", str(record_id)))
|
||||
template_name = getattr(template, "display_name", getattr(template, "name", "Filled Template"))
|
||||
filename = re.sub(r"[<>:'/\\|?*\x00-\x1f]", " ", f"{template_name} - {record_name}")
|
||||
|
||||
editable_form_fields = templates_config_utils.get_editable_form_fields(http.request.env)
|
||||
if editable_form_fields:
|
||||
docbuilder_content += f"""
|
||||
builder.SaveFile("pdf", "{filename}.pdf", "<m_sJsonParams>{{"isPrint":true}}</m_sJsonParams>")
|
||||
builder.CloseFile();
|
||||
""" # noqa: E501
|
||||
else:
|
||||
docbuilder_content += f"""
|
||||
builder.SaveFile("pdf", "{filename}.pdf");
|
||||
builder.CloseFile();
|
||||
"""
|
||||
|
||||
headers = {
|
||||
"Content-Disposition": "attachment; filename='fill_template.docbuilder'",
|
||||
"Content-Type": "text/plain",
|
||||
}
|
||||
|
||||
logger.info("GET /eurooffice/template/callback/docbuilder/fill_template - success")
|
||||
return request.make_response(docbuilder_content, headers)
|
||||
|
||||
except Exception as e:
|
||||
logger.warning(e)
|
||||
return request.not_found()
|
||||
|
||||
def get_keys(self, attachment_id, oo_security_token):
|
||||
logger.info("get_keys - attachment: %s", attachment_id)
|
||||
docserver_url = config_utils.get_doc_server_public_url(request.env)
|
||||
docserver_url = url_utils.replace_public_url_to_internal(request.env, docserver_url)
|
||||
docbuilder_url = f"{docserver_url}docbuilder"
|
||||
jwt_header = config_utils.get_jwt_header(request.env)
|
||||
jwt_secret = config_utils.get_jwt_secret(request.env)
|
||||
odoo_url = config_utils.get_base_or_odoo_url(request.env)
|
||||
|
||||
docbuilder_headers = {"Content-Type": "application/json", "Accept": "application/json"}
|
||||
docbuilder_callback_url = f"{odoo_url}eurooffice/template/callback/docbuilder/get_keys?attachment_id={attachment_id}&oo_security_token={oo_security_token}" # noqa: E501
|
||||
docbuilder_payload = {"async": False, "url": docbuilder_callback_url}
|
||||
|
||||
if jwt_secret:
|
||||
docbuilder_payload["token"] = jwt_utils.encode_payload(request.env, docbuilder_payload, jwt_secret)
|
||||
docbuilder_headers[jwt_header] = "Bearer " + jwt_utils.encode_payload(
|
||||
request.env, {"payload": docbuilder_payload}, jwt_secret
|
||||
)
|
||||
|
||||
try:
|
||||
if jwt_secret:
|
||||
docbuilder_response = eurooffice_request(
|
||||
url=docbuilder_url,
|
||||
method="post",
|
||||
opts={
|
||||
"json": docbuilder_payload,
|
||||
"headers": docbuilder_headers,
|
||||
},
|
||||
)
|
||||
else:
|
||||
docbuilder_response = eurooffice_request(
|
||||
url=docbuilder_url,
|
||||
method="post",
|
||||
opts={
|
||||
"json": docbuilder_payload,
|
||||
},
|
||||
)
|
||||
docbuilder_json = docbuilder_response.json()
|
||||
if docbuilder_json.get("error"):
|
||||
e = self.get_docbuilder_error(docbuilder_json.get("error"))
|
||||
raise Exception(e)
|
||||
|
||||
urls = docbuilder_json.get("urls")
|
||||
keys_url = urls.get("keys.txt")
|
||||
keys_response = eurooffice_request(
|
||||
url=keys_url,
|
||||
method="get",
|
||||
)
|
||||
response_content = codecs.decode(keys_response.content, "utf-8-sig")
|
||||
|
||||
logger.info("get_keys - success")
|
||||
return json.loads(response_content)
|
||||
except Exception as e:
|
||||
logger.warning("get_keys - error: %s", str(e))
|
||||
raise
|
||||
|
||||
@http.route("/eurooffice/template/callback/docbuilder/get_keys", auth="public")
|
||||
def docbuilder_get_keys(self, attachment_id, oo_security_token):
|
||||
logger.info("GET /eurooffice/template/callback/docbuilder/get_keys - attachment: %s", attachment_id)
|
||||
if not attachment_id or not oo_security_token:
|
||||
logger.warning("attachment_id or oo_security_token not found")
|
||||
return request.not_found()
|
||||
|
||||
url = f"{config_utils.get_base_or_odoo_url(http.request.env)}eurooffice/template/download/{attachment_id}?oo_security_token={oo_security_token}" # noqa: E501
|
||||
docbuilder_content = f"""
|
||||
builder.OpenFile("{url}");
|
||||
"""
|
||||
|
||||
with file_open("eurooffice_odoo_templates/controllers/get_keys.docbuilder", "r") as f:
|
||||
docbuilder_content = docbuilder_content + f.read()
|
||||
|
||||
headers = {
|
||||
"Content-Disposition": "attachment; filename='get_keys.docbuilder'",
|
||||
"Content-Type": "text/plain",
|
||||
}
|
||||
|
||||
logger.info("GET /eurooffice/template/callback/docbuilder/get_keys - success")
|
||||
return request.make_response(docbuilder_content, headers)
|
||||
|
||||
@http.route("/eurooffice/template/download/<int:attachment_id>", auth="public")
|
||||
def download(self, attachment_id, oo_security_token):
|
||||
logger.info("GET /eurooffice/template/download - attachment: %s", attachment_id)
|
||||
if not attachment_id or not oo_security_token:
|
||||
logger.warning("attachment_id or oo_security_token not found")
|
||||
return request.not_found()
|
||||
|
||||
attachment = self.get_record("ir.attachment", attachment_id, self.get_user_from_token(oo_security_token))
|
||||
if attachment:
|
||||
content = base64.b64decode(attachment.datas)
|
||||
headers = {
|
||||
"Content-Type": "application/pdf",
|
||||
"Content-Disposition": "attachment; filename=template.pdf",
|
||||
}
|
||||
logger.info("GET /eurooffice/template/download - success")
|
||||
return request.make_response(content, headers)
|
||||
else:
|
||||
logger.warning("attachment not found: %s", attachment_id)
|
||||
return request.not_found()
|
||||
|
||||
def get_fields(self, keys, model, record_id, user): # noqa: C901
|
||||
logger.info("get_fields - model: %s, record: %s", model, record_id)
|
||||
|
||||
def convert_keys(input_list):
|
||||
output_dict = {}
|
||||
for item in input_list:
|
||||
if " " in item:
|
||||
keys = item.split(" ")
|
||||
current_dict = output_dict
|
||||
for key in keys[:-1]:
|
||||
current_dict = current_dict.setdefault(key, {})
|
||||
current_dict[keys[-1]] = None
|
||||
else:
|
||||
output_dict[item] = None
|
||||
|
||||
def dict_to_list(input_dict):
|
||||
output_list = []
|
||||
for key, value in input_dict.items():
|
||||
if isinstance(value, dict):
|
||||
output_list.append({key: dict_to_list(value)})
|
||||
else:
|
||||
output_list.append(key)
|
||||
return output_list
|
||||
|
||||
return dict_to_list(output_dict)
|
||||
|
||||
def get_related_field(keys, model, record_id): # noqa: C901
|
||||
result = {}
|
||||
record = self.get_record(model, record_id, user)
|
||||
if not record:
|
||||
logger.warning("Record not found")
|
||||
return
|
||||
for field in keys:
|
||||
try:
|
||||
if isinstance(field, dict):
|
||||
related_field = list(field.keys())[0]
|
||||
if related_field not in record._fields:
|
||||
continue
|
||||
field_type = record._fields[related_field].type
|
||||
related_keys = field[related_field]
|
||||
if field_type in ["one2many", "many2many", "many2one"]:
|
||||
related_model = record._fields[related_field].comodel_name
|
||||
related_record_ids = record.read([related_field])[0][related_field]
|
||||
if not related_record_ids:
|
||||
continue
|
||||
if field_type == "many2one" and isinstance(related_record_ids, tuple):
|
||||
related_data = get_related_field(related_keys, related_model, related_record_ids[0])
|
||||
else:
|
||||
related_data = []
|
||||
for record_id in related_record_ids:
|
||||
related_data_temp = get_related_field(related_keys, related_model, record_id)
|
||||
if related_data_temp:
|
||||
related_data.append(related_data_temp)
|
||||
if related_data:
|
||||
result[related_field] = related_data
|
||||
else:
|
||||
if field not in record._fields:
|
||||
continue
|
||||
field_type = record._fields[field].type
|
||||
data = record.read([field])[0][field]
|
||||
if field_type in ["html", "json"]:
|
||||
continue # TODO
|
||||
elif field_type == "boolean":
|
||||
result[field] = str(data).lower()
|
||||
elif isinstance(data, tuple):
|
||||
result[field] = str(data[1])
|
||||
elif field_type == "binary" and isinstance(data, bytes):
|
||||
img = re.search(r"'(.*?)'", str(data))
|
||||
if img:
|
||||
result[field] = img.group(1)
|
||||
elif data:
|
||||
if field_type in ["float", "integer", "char", "text"]:
|
||||
result[field] = str(data)
|
||||
elif field_type == "monetary":
|
||||
data = f"{float(data):,.2f}"
|
||||
currency_field_name = record._fields[field].currency_field
|
||||
if currency_field_name:
|
||||
currency = getattr(record, currency_field_name).name
|
||||
result[field] = f"{data} {currency}" if currency else str(data)
|
||||
else:
|
||||
result[field] = str(data)
|
||||
elif field_type == "date":
|
||||
date_format = None
|
||||
lang = request.env["res.lang"].search([("code", "=", user.lang)], limit=1)
|
||||
user_date_format = lang.date_format
|
||||
if user_date_format:
|
||||
date_format = user_date_format
|
||||
else:
|
||||
date_format = get_lang(request.env).date_format
|
||||
format_to_use = date_format or DEFAULT_SERVER_DATE_FORMAT
|
||||
result[field] = str(data.strftime(format_to_use))
|
||||
elif field_type == "datetime":
|
||||
date_format = None
|
||||
time_format = None
|
||||
lang = request.env["res.lang"].search([("code", "=", user.lang)], limit=1)
|
||||
user_date_format = lang.date_format
|
||||
user_time_format = lang.time_format
|
||||
if user_date_format and user_time_format:
|
||||
date_format = user_date_format
|
||||
time_format = user_time_format
|
||||
else:
|
||||
date_format = get_lang(request.env).date_format
|
||||
time_format = get_lang(request.env).time_format
|
||||
if date_format and time_format:
|
||||
format_to_use = f"{date_format} {time_format}"
|
||||
else:
|
||||
format_to_use = DEFAULT_SERVER_DATETIME_FORMAT
|
||||
result[field] = str(data.strftime(format_to_use))
|
||||
elif field_type == "selection":
|
||||
selection = record._fields[field].selection
|
||||
if isinstance(selection, list):
|
||||
result[field] = str(dict(selection).get(data))
|
||||
else:
|
||||
result[field] = str(data)
|
||||
except Exception as e:
|
||||
logger.warning(e)
|
||||
continue
|
||||
return result
|
||||
|
||||
keys = convert_keys(keys)
|
||||
return get_related_field(keys, model, record_id)
|
||||
|
||||
def get_record(self, model, record_id, user=None):
|
||||
logger.info("get_record - model: %s, record: %s", model, record_id)
|
||||
if not isinstance(record_id, list):
|
||||
record_id = [int(record_id)]
|
||||
model = request.env[model].sudo()
|
||||
context = {"lang": request.env.context.get("lang", "en_US")}
|
||||
if user:
|
||||
model = model.with_user(user)
|
||||
context["lang"] = user.lang
|
||||
context["uid"] = user.id
|
||||
try:
|
||||
return model.with_context(**context).browse(record_id).exists() # TODO: Add .sudo()
|
||||
except Exception as e:
|
||||
logger.warning(e)
|
||||
raise
|
||||
|
||||
def get_user_from_token(self, token):
|
||||
if not token:
|
||||
raise Exception("missing security token")
|
||||
user_id = jwt_utils.decode_token(request.env, token, config_utils.get_internal_jwt_secret(request.env))["id"]
|
||||
user = request.env["res.users"].sudo().browse(user_id).exists().ensure_one()
|
||||
logger.info("get_user_from_token - user: %s", user.name)
|
||||
return user
|
||||
|
||||
def get_docbuilder_error(self, error_code):
|
||||
docbuilder_messages = {
|
||||
-1: "Unknown error.",
|
||||
-2: "Generation timeout error.",
|
||||
-3: "Document generation error.",
|
||||
-4: "Error while downloading the document file to be generated.",
|
||||
-6: "Error while accessing the document generation result database.",
|
||||
-8: "Invalid token.",
|
||||
}
|
||||
return docbuilder_messages.get(error_code, "Error code not recognized.")
|
||||
|
|
@ -0,0 +1,370 @@
|
|||
var oDocument = Api.GetDocument()
|
||||
// As new elements appear when filling tables and lists, the total number of elements in the document increases,
|
||||
// so we need to store references to elements, or increase the loop counter when traversing document elements.
|
||||
var oDocumentElementsCount = oDocument.GetElementsCount()
|
||||
var oDocumentElements = []
|
||||
for (var i = 0; i < oDocumentElementsCount; i++) {
|
||||
var oElement = oDocument.GetElement(i)
|
||||
oDocumentElements.push(oElement)
|
||||
}
|
||||
|
||||
oDocumentElements.forEach((oElement) => {
|
||||
fillElementByType(oElement)
|
||||
})
|
||||
|
||||
// From docs:
|
||||
// 💡 Please note that the current paragraph must be in the document (not in the footer/header).
|
||||
// And if the current paragraph is placed in a shape, then a caption is added after (or before) the parent shape.
|
||||
// So, numbering in shapes and footer/header is not supported.
|
||||
|
||||
// fill header and footer
|
||||
var oSection = oDocument.GetFinalSection()
|
||||
var oHeader = oSection.GetHeader("default", true)
|
||||
var oFooter = oSection.GetFooter("default", true)
|
||||
var oHeaderElementsCount = oHeader.GetElementsCount()
|
||||
var oFooterElementsCount = oFooter.GetElementsCount()
|
||||
for (var i = 0; i < oHeaderElementsCount; i++) {
|
||||
var oElement = oHeader.GetElement(i)
|
||||
var oElementClassType = oElement.GetClassType()
|
||||
if (oElementClassType === "paragraph" && oElement.GetNumbering()) {
|
||||
continue
|
||||
} else {
|
||||
fillElementByType(oElement)
|
||||
}
|
||||
}
|
||||
for (var i = 0; i < oFooterElementsCount; i++) {
|
||||
var oElement = oFooter.GetElement(i)
|
||||
var oElementClassType = oElement.GetClassType()
|
||||
if (oElementClassType === "paragraph" && oElement.GetNumbering()) {
|
||||
continue
|
||||
} else {
|
||||
fillElementByType(oElement)
|
||||
}
|
||||
}
|
||||
|
||||
// fill form in shapes object
|
||||
var oShapes = oDocument.GetAllShapes()
|
||||
oShapes.forEach((oShape) => {
|
||||
var oShapesClassType = oShape.GetClassType()
|
||||
if (oShapesClassType === "shape") {
|
||||
var oShapeContent = oShape.GetDocContent()
|
||||
try {
|
||||
var oShapeContentClassType = oShapeContent.GetClassType()
|
||||
if (oShapeContentClassType === "documentContent") {
|
||||
var oShapeElementsCount = oShapeContent.GetElementsCount()
|
||||
for (var i = 0; i < oShapeElementsCount; i++) {
|
||||
var oElement = oShapeContent.GetElement(i)
|
||||
var oElementClassType = oElement.GetClassType()
|
||||
if (oElementClassType === "paragraph" && oElement.GetNumbering()) {
|
||||
continue
|
||||
} else {
|
||||
fillElementByType(oElement)
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (_e) {}
|
||||
}
|
||||
})
|
||||
|
||||
function getData(keyPath, index = 0, obj = fields) {
|
||||
const keys = keyPath.split(" ")
|
||||
|
||||
// Recursive function to traverse the object and get the desired value(s)
|
||||
function traverse(obj, keys) {
|
||||
if (keys.length === 0) return obj
|
||||
|
||||
let key = keys[0]
|
||||
let remainingKeys = keys.slice(1)
|
||||
|
||||
if (Array.isArray(obj)) {
|
||||
return obj.map((item) => traverse(item, [key, ...remainingKeys]))
|
||||
} else {
|
||||
if (typeof obj[key] === "undefined") {
|
||||
return ""
|
||||
}
|
||||
return traverse(obj[key], remainingKeys)
|
||||
}
|
||||
}
|
||||
|
||||
// Get the value(s) from the object based on the keys
|
||||
let values = traverse(obj, keys)
|
||||
|
||||
if (typeof values[index] === "undefined") {
|
||||
return ""
|
||||
}
|
||||
|
||||
if (Array.isArray(values[0])) {
|
||||
// If the first element is an array, return a concatenated string of all values by key
|
||||
return values[index].flat().join(" ")
|
||||
} else if (Array.isArray(values) && typeof values[index] !== "object") {
|
||||
// If values are an array, return the value at the specified index
|
||||
return values[index]
|
||||
} else {
|
||||
// If the value is not an array, return it as is
|
||||
return values
|
||||
}
|
||||
}
|
||||
|
||||
function getDataArrayLength(keyPath, obj = fields) {
|
||||
const keys = keyPath.split(" ")
|
||||
let currentObj = obj
|
||||
for (let key of keys) {
|
||||
if (typeof currentObj === "undefined") {
|
||||
return 0
|
||||
}
|
||||
if (Array.isArray(currentObj)) {
|
||||
return currentObj.length
|
||||
}
|
||||
currentObj = currentObj[key]
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
function fillElementByType(oElement) {
|
||||
var oElementClassType = oElement.GetClassType()
|
||||
|
||||
if (oElementClassType === "paragraph") {
|
||||
if (oElement.GetNumbering()) {
|
||||
fillNumbering(oElement)
|
||||
} else {
|
||||
fillParagraph(oElement)
|
||||
}
|
||||
}
|
||||
if (oElementClassType === "form" || oElementClassType === "textForm") {
|
||||
fillForm(oElement)
|
||||
}
|
||||
if (oElementClassType === "run") {
|
||||
}
|
||||
if (oElementClassType === "table") {
|
||||
fillTable(oElement)
|
||||
}
|
||||
if (oElementClassType === "pictureForm") {
|
||||
fillForm(oElement)
|
||||
}
|
||||
}
|
||||
|
||||
function fillParagraph(oParagraph) {
|
||||
var oParagraphElementsCount = oParagraph.GetElementsCount()
|
||||
for (var i = 0; i < oParagraphElementsCount; i++) {
|
||||
var oElement = oParagraph.GetElement(i)
|
||||
fillElementByType(oElement)
|
||||
}
|
||||
}
|
||||
|
||||
function fillNumbering(oParagraph) {
|
||||
var requiredLevel = 0
|
||||
|
||||
var oParagraphElementsCount = oParagraph.GetElementsCount()
|
||||
for (var i = 0; i < oParagraphElementsCount; i++) {
|
||||
var oElement = oParagraph.GetElement(i)
|
||||
var oElementClassType = oElement.GetClassType()
|
||||
|
||||
if (oElementClassType === "form" || oElementClassType === "textForm" || oElementClassType === "pictureForm") {
|
||||
var oForm = oElement
|
||||
var oFormKey = oForm.GetFormKey()
|
||||
|
||||
var data = getData(oFormKey, 0)
|
||||
var length = getDataArrayLength(oFormKey)
|
||||
requiredLevel = Math.max(requiredLevel, length)
|
||||
fillForm(oForm, data)
|
||||
}
|
||||
}
|
||||
|
||||
if (requiredLevel > 1) {
|
||||
var oNumberingLevel = oParagraph.GetNumbering()
|
||||
var oCurrentParagraph = oParagraph
|
||||
for (var newLevel = 1; newLevel < requiredLevel; newLevel++) {
|
||||
var nPos = oCurrentParagraph.GetPosInParent()
|
||||
|
||||
var oNewParagraph = oParagraph.Copy()
|
||||
oNewParagraph.SetNumbering(oNumberingLevel)
|
||||
|
||||
var oParagraphElementsCount = oNewParagraph.GetElementsCount()
|
||||
for (var element = 0; element < oParagraphElementsCount; element++) {
|
||||
var oElement = oNewParagraph.GetElement(element)
|
||||
var oElementClassType = oElement.GetClassType()
|
||||
|
||||
if (oElementClassType === "form" || oElementClassType === "textForm" || oElementClassType === "pictureForm") {
|
||||
var oForm = oElement
|
||||
var oFormKey = oForm.GetFormKey()
|
||||
|
||||
oForm.SetFormKey(oFormKey + newLevel)
|
||||
var data = getData(oFormKey, newLevel)
|
||||
fillForm(oForm, data)
|
||||
}
|
||||
}
|
||||
oDocument.AddElement(nPos + 1, oNewParagraph)
|
||||
oCurrentParagraph = oNewParagraph
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function fillTable(oTable) {
|
||||
var rows = oTable.GetRowsCount()
|
||||
for (var row = 0; row < rows; row++) {
|
||||
var oRow = oTable.GetRow(row)
|
||||
var cols = oRow.GetCellsCount()
|
||||
|
||||
// If there is a form in the cell, then write the length of the array using the form key.
|
||||
// Maximum length - the number of lines that must be inserted after the current row.
|
||||
var requiredRows = 0
|
||||
var tableData = {}
|
||||
|
||||
for (var col = 0; col < cols; col++) {
|
||||
var oCell = oTable.GetCell(row, col)
|
||||
var oCellContent = oCell.GetContent()
|
||||
|
||||
// Enum of paragraphs inside the cell
|
||||
var oCellElementsCount = oCellContent.GetElementsCount()
|
||||
for (var cellElement = 0; cellElement < oCellElementsCount; cellElement++) {
|
||||
var oCellElement = oCellContent.GetElement(cellElement)
|
||||
|
||||
if (oCellElement.GetClassType() !== "paragraph") {
|
||||
fillElementByType(oCellElement)
|
||||
} else {
|
||||
// Enum paragraph elements inside a cell
|
||||
var oParagraphElementsCount = oCellElement.GetElementsCount()
|
||||
for (var paragraphElement = 0; paragraphElement < oParagraphElementsCount; paragraphElement++) {
|
||||
var oParagraphElement = oCellElement.GetElement(paragraphElement)
|
||||
|
||||
if (
|
||||
oParagraphElement.GetClassType() !== "form" &&
|
||||
oParagraphElement.GetClassType() !== "textForm" &&
|
||||
oParagraphElement.GetClassType() !== "pictureForm"
|
||||
) {
|
||||
fillElementByType(oParagraphElement)
|
||||
} else {
|
||||
// Fill the first element and count the number of required rows
|
||||
var oForm = oParagraphElement
|
||||
var oFormKey = oForm.GetFormKey()
|
||||
|
||||
var data = getData(oFormKey, 0)
|
||||
var length = getDataArrayLength(oFormKey)
|
||||
requiredRows = Math.max(requiredRows, length)
|
||||
fillForm(oForm, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (requiredRows > 1) {
|
||||
// Add new rows, the first row is already there and filled
|
||||
// In each cell of the column we copy the previous cell to save the structure.
|
||||
oTable.AddRows(oTable.GetCell(row, 0), requiredRows - 1, false)
|
||||
for (var newRow = 1; newRow < requiredRows; newRow++) {
|
||||
for (var col = 0; col < cols; col++) {
|
||||
var oNewCell = oTable.GetCell(row + newRow, col)
|
||||
var oCell = oTable.GetCell(row, col)
|
||||
var oCellContent = oCell.GetContent()
|
||||
|
||||
var oCellElementsCount = oCellContent.GetElementsCount()
|
||||
for (var i = 0; i < oCellElementsCount; i++) {
|
||||
// Get the contents of the cell for further copying to a new cell
|
||||
var oCellElement = oCellContent.GetElement(i)
|
||||
// Copy the contents of a cell to paste into a new cell
|
||||
var oNewCellElement = oCellElement.Copy()
|
||||
// If this is not a paragraph, paste into a new cell unchanged
|
||||
if (oCellElement.GetClassType() !== "paragraph") {
|
||||
oNewCell.AddElement(i, oNewCellElement)
|
||||
} else {
|
||||
// If it is a paragraph, process the elements of the paragraph to fill the forms inside
|
||||
var oParagraphElementsCount = oNewCellElement.GetElementsCount()
|
||||
for (var paragraphElement = 0; paragraphElement < oParagraphElementsCount; paragraphElement++) {
|
||||
var oNewParagraphElement = oNewCellElement.GetElement(paragraphElement)
|
||||
if (
|
||||
oNewParagraphElement.GetClassType() === "form" ||
|
||||
oNewParagraphElement.GetClassType() === "textForm" ||
|
||||
oNewParagraphElement.GetClassType() === "pictureForm"
|
||||
) {
|
||||
var oForm = oNewParagraphElement
|
||||
var oFormKey = oForm.GetFormKey()
|
||||
|
||||
var data = getData(oFormKey, newRow)
|
||||
fillForm(oForm, data)
|
||||
}
|
||||
}
|
||||
oNewCell.AddElement(i, oNewCellElement)
|
||||
}
|
||||
}
|
||||
// After creating a new cell, there is an empty paragraph inside. Remove it
|
||||
var oNewCellContent = oNewCell.GetContent()
|
||||
var oNewCellElementsCount = oNewCellContent.GetElementsCount()
|
||||
oNewCellContent.RemoveElement(oNewCellElementsCount - 1)
|
||||
}
|
||||
}
|
||||
rows += requiredRows - 1
|
||||
row += requiredRows - 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// In odoo, if there is no data in the field, the value will be false
|
||||
function fillForm(oForm, data = null) {
|
||||
var oFormFormType = oForm.GetFormType()
|
||||
|
||||
if (oFormFormType === "form" || oFormFormType === "textForm") {
|
||||
function fillTextForm(data) {
|
||||
data = String(data)
|
||||
if (data === "false" || data === "undefined") {
|
||||
oForm.SetText(" ")
|
||||
} else {
|
||||
oForm.SetText(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (data === null) {
|
||||
var oFormKey = oForm.GetFormKey()
|
||||
data = getData(oFormKey)
|
||||
fillTextForm(data)
|
||||
} else {
|
||||
fillTextForm(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (oFormFormType === "comboBoxForm") {
|
||||
}
|
||||
|
||||
if (oFormFormType === "dropDownForm") {
|
||||
}
|
||||
|
||||
if (oFormFormType === "checkBoxForm") {
|
||||
function fillCheckBoxForm(data) {
|
||||
try {
|
||||
data = JSON.parse(data)
|
||||
oForm.SetChecked(data)
|
||||
} catch (_e) {
|
||||
// TODO: set checked BoxForm in case of error
|
||||
}
|
||||
}
|
||||
|
||||
if (data === null) {
|
||||
var oFormKey = oForm.GetFormKey()
|
||||
var data = getData(oFormKey)
|
||||
fillCheckBoxForm(data)
|
||||
} else {
|
||||
fillCheckBoxForm(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (oFormFormType === "radioButtonForm") {
|
||||
}
|
||||
|
||||
if (oFormFormType === "pictureForm") {
|
||||
function fillPictureForm(data) {
|
||||
if (typeof data === "string") {
|
||||
oForm.SetImage(`data:image/png;base64, ${data}`)
|
||||
}
|
||||
}
|
||||
|
||||
if (data === null) {
|
||||
var oFormKey = oForm.GetFormKey()
|
||||
data = getData(oFormKey)
|
||||
fillPictureForm(data)
|
||||
} else {
|
||||
fillPictureForm(data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Api.Save()
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
var oDocument = Api.GetDocument();
|
||||
var aForms = oDocument.GetAllForms();
|
||||
var sKeys = [];
|
||||
aForms.forEach(aForm => {
|
||||
sKeys.push(aForm.GetFormKey());
|
||||
});
|
||||
var json = JSON.stringify(sKeys);
|
||||
GlobalVariable["json"] = json;
|
||||
builder.CloseFile();
|
||||
|
||||
builder.CreateFile("docx");
|
||||
var json = GlobalVariable["json"];
|
||||
var oDocument = Api.GetDocument();
|
||||
var oParagraph = oDocument.GetElement(0);
|
||||
oParagraph.AddText(json);
|
||||
oDocument.Push(oParagraph);
|
||||
Api.Save();
|
||||
builder.SaveFile("txt", "keys.txt");
|
||||
builder.CloseFile();
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" ?>
|
||||
<odoo>
|
||||
<function model="eurooffice.odoo.templates" name="_create_demo_data" />
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
Prerequisites
|
||||
=============
|
||||
|
||||
To be able to work with office files within Odoo Enterprise, you will need an instance of `Euro-Office Docs <https://www.eurooffice.com/download-docs.aspx>`_.
|
||||
|
||||
**Please note:** You need to obtain a license for Euro-Office Docs with the included Automation API option.
|
||||
|
||||
**Please note**: Euro-Office demo templates will only be added to the Odoo modules that are already installed. That's why we strongly recommend installing Euro-Office Templates after installing other Odoo modules such as CRM, Sales, Calendar, etc.
|
||||
|
||||
Euro-Office app configuration
|
||||
============================
|
||||
|
||||
All the settings are configured from the `main Euro-Office app for Odoo <https://apps.odoo.com/apps/modules/16.0/eurooffice_odoo>`_.
|
||||
|
||||
To adjust the main app settings within your Odoo, go to *Home menu -> Settings -> Euro-Office*.
|
||||
|
||||
In the **Document Server Url**, specify the URL of the installed Euro-Office Docs or the address of Euro-Office Docs Cloud.
|
||||
|
||||
**Document Server JWT Secret**: JWT is enabled by default and the secret key is generated automatically to restrict the access to Euro-Office Docs. if you want to specify your own secret key in this field, also specify the same secret key in the Euro-Office Docs `config file <https://api.eurooffice.com/docs/docs-api/additional-api/signature/>`_ to enable the validation.
|
||||
|
||||
**Document Server JWT Header**: Standard JWT header used in Euro-Office is Authorization. In case this header is in conflict with your setup, you can change the header to the custom one.
|
||||
|
||||
In case your network configuration doesn't allow requests between the servers via public addresses, specify the Euro-Office Docs address for internal requests from the Odoo server and vice versa.
|
||||
|
||||
If you would like the editors to open in the same tab instead of a new one, check the corresponding setting "Open file in the same tab".
|
||||
|
||||
.. image:: settings.png
|
||||
:width: 800
|
||||
|
||||
|
||||
Contact us
|
||||
============================
|
||||
If you have any questions or suggestions regarding the Euro-Office app for Odoo, please let us know at `forum.eurooffice.com <https://forum.eurooffice.com>`_.
|
||||
|
After Width: | Height: | Size: 48 KiB |
|
|
@ -0,0 +1,560 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * eurooffice_odoo_templates
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0+e-20240216\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-03 08:20+0000\n"
|
||||
"PO-Revision-Date: 2025-10-01 16:09+0300\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: de_DE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 3.4.1\n"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ", select the desired Odoo module, and create or upload a PDF template with fillable fields."
|
||||
msgstr ", wählen Sie das gewünschte Odoo-Modul aus und erstellen oder laden Sie eine PDF-Vorlage mit ausfüllbaren Feldern hoch."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "<span class=\"o_form_label\">\n"
|
||||
" Templates gallery\n"
|
||||
" </span>"
|
||||
msgstr "<span class=\"o_form_label\">\n"
|
||||
" Vorlagengalerie\n"
|
||||
" </span>"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,name:eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin
|
||||
msgid "Administrator"
|
||||
msgstr "Administrator"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Are you sure you want to delete this record?"
|
||||
msgstr "Sind Sie sicher, dass Sie diesen Datensatz löschen wollen?"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__attachment_id
|
||||
msgid "Attachment"
|
||||
msgstr "Anhang"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,comment:eurooffice_odoo_templates.group_eurooffice_odoo_templates_user
|
||||
msgid "Can open Euro-Office templates for viewing and print them."
|
||||
msgstr "Kann Euro-Office-Vorlagen zur Ansicht öffnen und diese ausdrucken."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,comment:eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin
|
||||
msgid "Can open, create, edit and print Euro-Office templates."
|
||||
msgstr "Kann Euro-Office-Vorlagen öffnen, erstellen, bearbeiten und ausdrucken."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_demo_templates_form
|
||||
msgid "Check templates you want to export to the Euro-Office Templates module and press Export. You can do this as many times as you need."
|
||||
msgstr "Markieren Sie die Vorlagen, die Sie in das Modul Euro-Office Templates exportieren möchten, und klicken Sie auf Exportieren. Sie können dies beliebig oft wiederholen."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Choose the <span class=\"fw-bolder\">Odoo module </span>\n"
|
||||
" (e.g., Employee, Invoice, Sales Order) that the template will be linked to. The chosen\n"
|
||||
" model defines the data fields available for automatic form filling."
|
||||
msgstr "Wählen Sie das <span class=\"fw-bolder\">Odoo-Modul</span>\n"
|
||||
" (z. B. Mitarbeiter, Rechnung, Kundenauftrag), mit dem die Vorlage verknüpft werden soll. Das gewählte\n"
|
||||
" Modul definiert die für das automatische Ausfüllen des Formulars verfügbaren Datenfelder."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Choose the field below to paste selected parameter to the cursor"
|
||||
msgstr "Wählen Sie das nachstehende Feld, um den ausgewählten Parameter an der Cursorposition einzufügen"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Choose the required template to fill in with Odoo data."
|
||||
msgstr "Wählen Sie die gewünschte Vorlage zum Ausfüllen mit Odoo-Daten aus."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Click on the Action button."
|
||||
msgstr "Klicken Sie auf die Schaltfläche Aktion."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "Konfigurationseinstellungen"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.js:0
|
||||
#, python-format
|
||||
msgid "Couldn't insert the field. Please check Automation API."
|
||||
msgstr "Das Feld konnte nicht eingefügt werden. Bitte prüfen Sie die Automatisierungs-API."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Create or Upload"
|
||||
msgstr "Erstellen oder Hochladen"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Create template"
|
||||
msgstr "Vorlage erstellen"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Erstellt von"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Erstellt am"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Delete"
|
||||
msgstr "Löschen"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_res_config_settings__editable_form_fields
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Disable form fields after printing PDF form"
|
||||
msgstr "Formularfelder nach dem Drucken des PDF-Formulars deaktivieren"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Anzeigename"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Download"
|
||||
msgstr "Herunterladen"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr "Dropdown-Menü"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Edit"
|
||||
msgstr "Bearbeiten"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_demo_templates_form
|
||||
msgid "Export"
|
||||
msgstr "Exportieren"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Export templates to the Euro-Office Templates module"
|
||||
msgstr "Vorlagen in das Modul Euro-Office Templates exportieren"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Failed to download converted PDF form"
|
||||
msgstr "Konvertiertes PDF-Formular konnte nicht heruntergeladen werden"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Failed to download form"
|
||||
msgstr "Das Herunterladen des Formulars ist fehlgeschlagen"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Fields"
|
||||
msgstr "Felder"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Form fields cannot be filled in manually if they were not automatically filled in\n"
|
||||
" with data from Odoo"
|
||||
msgstr "Formularfelder können nicht manuell ausgefüllt werden, wenn sie nicht automatisch\n"
|
||||
" mit Daten aus Odoo ausgefüllt wurden"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Go to the relevant Odoo module (e.g., Sales, Invoices)."
|
||||
msgstr "Gehen Sie zum entsprechenden Odoo-Modul (z.B. Verkäufe, Rechnungen)."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban_search
|
||||
msgid "Group By"
|
||||
msgstr "Gruppieren nach"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.js:0
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Help"
|
||||
msgstr "Hilfe"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__hide_file_field
|
||||
msgid "Hide File Field"
|
||||
msgstr "Dateifeld ausblenden"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "If you already have a <span class=\"fw-bolder\">prepared\n"
|
||||
" PDF file</span> with fillable fields, you can upload it here"
|
||||
msgstr "Wenn Sie bereits eine <span class=\"fw-bolder\">vorbereitete\n"
|
||||
" PDF-Datei</span> mit ausfüllbaren Feldern haben, können Sie diese hier hochladen"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Invalid file format."
|
||||
msgstr "Ungültiges Dateiformat."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Kanban: no action for type: "
|
||||
msgstr "Kanban: keine Aktion für Typ: "
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Zuletzt geändert am"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Zuletzt aktualisiert von"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Zuletzt aktualisiert am"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/widget/eurooffice_templates_tree.xml:0
|
||||
#, python-format
|
||||
msgid "Loading templates..."
|
||||
msgstr "Vorlagen werden geladen..."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Locate your newly created template and set up the connections between the form\n"
|
||||
" fields in the Euro-Office editor and the corresponding data fields from the selected\n"
|
||||
" Odoo model."
|
||||
msgstr "Suchen Sie Ihre neu erstellte Vorlage und richten Sie die Verbindungen zwischen den Formularfeldern\n"
|
||||
" im Euro-Office-Editor und den entsprechenden Datenfeldern aus dem ausgewählten\n"
|
||||
" Odoo-Modell ein."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.actions.act_window,name:eurooffice_odoo_templates.action_eurooffice_demo_templates
|
||||
msgid "Manage Templates"
|
||||
msgstr "Vorlagen verwalten"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Manage templates"
|
||||
msgstr "Vorlagen verwalten"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__mimetype
|
||||
msgid "Mimetype"
|
||||
msgstr "Mimetyp"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_model
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban_search
|
||||
msgid "Model"
|
||||
msgstr "Modell"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_name
|
||||
msgid "Model Description"
|
||||
msgstr "Modellbeschreibung"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Model for which the template is being created."
|
||||
msgstr "Modell, für das die Vorlage erstellt werden soll."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Module/ section"
|
||||
msgstr "Modul/Sektion"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "No match found."
|
||||
msgstr "Keine Übereinstimmung gefunden."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_eurooffice_odoo_demo_templates
|
||||
msgid "Euro-Office Demo Templates"
|
||||
msgstr "Euro-Office Demo-Vorlagen"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.actions.act_window,name:eurooffice_odoo_templates.action_eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_eurooffice_odoo_templates
|
||||
#: model:ir.ui.menu,name:eurooffice_odoo_templates.eurooffice_menu
|
||||
msgid "Euro-Office Templates"
|
||||
msgstr "Euro-Office-Vorlagen"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office Templates module"
|
||||
msgstr "Euro-Office Vorlagenmodul"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office cannot be reached. Please contact admin."
|
||||
msgstr "Euro-Office kann nicht erreicht werden. Bitte wenden Sie sich an den Administrator."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office logo"
|
||||
msgstr "Euro-Office-Logo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.module.category,name:eurooffice_odoo_templates.module_category_eurooffice_odoo_templates
|
||||
msgid "Euro-Office templates"
|
||||
msgstr "Euro-Office-Vorlagen"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Ok"
|
||||
msgstr "OK"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "On this page, you can create form templates for any Odoo module, such as Invoice, Receipt, Employee Leave Form, etc. Just click"
|
||||
msgstr "Auf dieser Seite können Sie Formularvorlagen für jedes Odoo-Modul erstellen, z. B. Rechnung, Quittung, Urlaubsformular usw. Klicken Sie einfach auf"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Once you've saved the template, return to the Euro-Office Templates list."
|
||||
msgstr "Nachdem Sie die Vorlage gespeichert haben, kehren Sie zur Euro-Office-Vorlagenliste zurück."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Open Document templates"
|
||||
msgstr "Dokumentvorlagen öffnen"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Open a record."
|
||||
msgstr "Datensatz öffnen."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Press the Print button."
|
||||
msgstr "Drücken Sie die Schaltfläche Drucken."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Preview"
|
||||
msgstr "Vorschau"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Print"
|
||||
msgstr "Drucken"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.js:0
|
||||
#, python-format
|
||||
msgid "Print from template"
|
||||
msgstr "Aus Vorlage drucken"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/form/eurooffice_form_view.js:0
|
||||
#, python-format
|
||||
msgid "Print with Euro-Office"
|
||||
msgstr "Mit Euro-Office drucken"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_id
|
||||
msgid "Select Model"
|
||||
msgstr "Modell auswählen"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Select Print with Euro-Office."
|
||||
msgstr "Wählen Sie „Mit Euro-Office drucken“."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Select an existing template. Leave the field blank to create a blank template."
|
||||
msgstr "Wählen Sie eine vorhandene Vorlage aus. Lassen Sie das Feld leer, um eine leere Vorlage zu erstellen."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_demo_templates__selected_templates
|
||||
msgid "Selected Templates"
|
||||
msgstr "Ausgewählte Vorlagen"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Show sub-fields"
|
||||
msgstr "Unterfelder anzeigen"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__name
|
||||
msgid "Template Name"
|
||||
msgstr "Vorlagenname"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Template creation"
|
||||
msgstr "Erstellung der Vorlage"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Template removed"
|
||||
msgstr "Vorlage gelöscht"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Template uploading"
|
||||
msgstr "Hochladen der Vorlage"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "The Euro-Office Templates module allows you to create, manage, and use fillable PDF"
|
||||
msgstr "Mit dem Euro-Office-Vorlagenmodul können Sie ausfüllbare PDF-Dateien erstellen, verwalten und verwenden."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "This will generate a PDF document with your template, automatically filled with the corresponding record's data."
|
||||
msgstr "Dadurch wird ein PDF-Dokument mit Ihrer Vorlage generiert, das automatisch mit den entsprechenden Datensatzdaten gefüllt wird."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "To fill in a template with Odoo data:"
|
||||
msgstr "So füllen Sie eine Vorlage mit Odoo-Daten aus:"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__file
|
||||
msgid "Upload an existing template"
|
||||
msgstr "Vorhandene Vorlage hochladen"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Use a technical name"
|
||||
msgstr "Einen technischen Namen verwenden"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Use this form to create a new fillable PDF template\n"
|
||||
" for your Odoo modules. Start by entering a <span class=\"fw-bolder\">name </span> for\n"
|
||||
" your template to easily identify it later in the Euro-Office Templates list."
|
||||
msgstr "Verwenden Sie dieses Formular, um eine neue ausfüllbare PDF-Vorlage\n"
|
||||
" für Ihre Odoo-Module zu erstellen. Geben Sie zunächst einen <span class=\"fw-bolder\">Namen</span>\n"
|
||||
" für Ihre Vorlage ein, um sie später in der Euro-Office-Vorlagenliste leicht zu identifizieren."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,name:eurooffice_odoo_templates.group_eurooffice_odoo_templates_user
|
||||
msgid "User"
|
||||
msgstr "Benutzer"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.js:0
|
||||
#, python-format
|
||||
msgid "You don't have any templates yet. Please go to the Euro-Office Templates app to create a new template or ask your admin to create it."
|
||||
msgstr "Sie haben noch keine Vorlagen. Bitte gehen Sie zur Euro-Office-Vorlagen-App, um eine neue Vorlage zu erstellen oder bitten Sie Ihren Administrator, sie zu erstellen."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "for any installed Odoo module (e.g., Sales, Invoicing, CRM). These templates can then be filled in automatically with real-time data from your Odoo system — no manual input needed."
|
||||
msgstr "für jedes installierte Odoo-Modul (z. B. Vertrieb, Rechnungsstellung, CRM). Diese Vorlagen können dann automatisch mit Echtzeitdaten aus Ihrem Odoo-System ausgefüllt werden – keine manuelle Eingabe erforderlich."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "templates"
|
||||
msgstr "Vorlagen"
|
||||
|
||||
|
|
@ -0,0 +1,583 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * eurooffice_odoo_templates
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0+e-20250909\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-29 05:15+0000\n"
|
||||
"PO-Revision-Date: 2025-09-29 05:15+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
", select the desired Odoo module, and create or upload a PDF template with "
|
||||
"fillable fields."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span class=\"o_form_label\">\n"
|
||||
" Templates gallery\n"
|
||||
" </span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,name:eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin
|
||||
msgid "Administrator"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Are you sure you want to delete this record?"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__attachment_id
|
||||
msgid "Attachment"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,comment:eurooffice_odoo_templates.group_eurooffice_odoo_templates_user
|
||||
msgid "Can open Euro-Office templates for viewing and print them."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,comment:eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin
|
||||
msgid "Can open, create, edit and print Euro-Office templates."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_demo_templates_form
|
||||
#, python-format
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_demo_templates_form
|
||||
msgid ""
|
||||
"Check templates you want to export to the Euro-Office Templates module and "
|
||||
"press Export. You can do this as many times as you need."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Choose the <span class=\"fw-bolder\">Odoo module </span>\n"
|
||||
" (e.g., Employee, Invoice, Sales Order) that the template will be linked to. The chosen\n"
|
||||
" model defines the data fields available for automatic form filling."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Choose the field below to paste selected parameter to the cursor"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Choose the required template to fill in with Odoo data."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Click on the Action button."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.js:0
|
||||
#, python-format
|
||||
msgid "Couldn't insert the field. Please check Automation API."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Create or Upload"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Create template"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_demo_templates__create_uid
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_demo_templates__create_date
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_res_config_settings__editable_form_fields
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Disable form fields after printing PDF form"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_demo_templates__display_name
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Download"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_demo_templates_form
|
||||
msgid "Export"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Export templates to the Euro-Office Templates module"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Failed to download converted PDF form"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Failed to download form"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Fields"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Form fields cannot be filled in manually if they were not automatically filled in\n"
|
||||
" with data from Odoo"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Go to the relevant Odoo module (e.g., Sales, Invoices)."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban_search
|
||||
msgid "Group By"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.js:0
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__hide_file_field
|
||||
msgid "Hide File Field"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_demo_templates__id
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"If you already have a <span class=\"fw-bolder\">prepared\n"
|
||||
" PDF file</span> with fillable fields, you can upload it here"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Invalid file format."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Kanban: no action for type: "
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_demo_templates____last_update
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_demo_templates__write_uid
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_demo_templates__write_date
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/widget/eurooffice_templates_tree.xml:0
|
||||
#, python-format
|
||||
msgid "Loading templates..."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Locate your newly created template and set up the connections between the form\n"
|
||||
" fields in the Euro-Office editor and the corresponding data fields from the selected\n"
|
||||
" Odoo model."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.actions.act_window,name:eurooffice_odoo_templates.action_eurooffice_demo_templates
|
||||
msgid "Manage Templates"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Manage templates"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__mimetype
|
||||
msgid "Mimetype"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban_search
|
||||
msgid "Model"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_name
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_related_name
|
||||
msgid "Model Description"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Model for which the template is being created."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Module/ section"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "No match found."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_eurooffice_odoo_demo_templates
|
||||
msgid "Euro-Office Demo Templates"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.actions.act_window,name:eurooffice_odoo_templates.action_eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_eurooffice_odoo_templates
|
||||
#: model:ir.ui.menu,name:eurooffice_odoo_templates.eurooffice_menu
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Euro-Office Templates"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office Templates module"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office cannot be reached. Please contact admin."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office logo"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.module.category,name:eurooffice_odoo_templates.module_category_eurooffice_odoo_templates
|
||||
msgid "Euro-Office templates"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Ok"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"On this page, you can create form templates for any Odoo module, such as "
|
||||
"Invoice, Receipt, Employee Leave Form, etc. Just click"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Once you've saved the template, return to the Euro-Office Templates list."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Open Document templates"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Open a record."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Press the Print button."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Preview"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Print"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.js:0
|
||||
#, python-format
|
||||
msgid "Print from template"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/form/eurooffice_form_view.js:0
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/list/eurooffice_list_view.js:0
|
||||
#, python-format
|
||||
msgid "Print with Euro-Office"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_id
|
||||
msgid "Select Model"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Select Print with Euro-Office."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Select an existing template. Leave the field blank to create a blank "
|
||||
"template."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_demo_templates__selected_templates
|
||||
msgid "Selected Templates"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Show sub-fields"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__name
|
||||
msgid "Template Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Template creation"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Template removed"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Template uploading"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The Euro-Office Templates module allows you to create, manage, and use "
|
||||
"fillable PDF"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This will generate a PDF document with your template, automatically filled "
|
||||
"with the corresponding record's data."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "To fill in a template with Odoo data:"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__file
|
||||
msgid "Upload an existing template"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Use a technical name"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Use this form to create a new fillable PDF template\n"
|
||||
" for your Odoo modules. Start by entering a <span class=\"fw-bolder\">name </span> for\n"
|
||||
" your template to easily identify it later in the Euro-Office Templates list."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,name:eurooffice_odoo_templates.group_eurooffice_odoo_templates_user
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.js:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You don't have any templates yet. Please go to the Euro-Office Templates app "
|
||||
"to create a new template or ask your admin to create it."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"for any installed Odoo module (e.g., Sales, Invoicing, CRM). These templates"
|
||||
" can then be filled in automatically with real-time data from your Odoo "
|
||||
"system — no manual input needed."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "templates"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,611 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * eurooffice_odoo_templates
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0+e-20240216\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-03 08:20+0000\n"
|
||||
"PO-Revision-Date: 2025-10-01 16:37+0300\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: es_ES\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 3.4.1\n"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
", select the desired Odoo module, and create or upload a PDF template with fillable "
|
||||
"fields."
|
||||
msgstr ""
|
||||
", seleccione el módulo Odoo deseado y cree o cargue una plantilla PDF con campos "
|
||||
"rellenables."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span class=\"o_form_label\">\n"
|
||||
" Templates gallery\n"
|
||||
" </span>"
|
||||
msgstr ""
|
||||
"<span class=\"o_form_label\">\n"
|
||||
" Galería de plantillas\n"
|
||||
" </span>"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,name:eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin
|
||||
msgid "Administrator"
|
||||
msgstr "Administrador"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Are you sure you want to delete this record?"
|
||||
msgstr "¿Está seguro de que desea eliminar este registro?"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__attachment_id
|
||||
msgid "Attachment"
|
||||
msgstr "Archivo adjunto"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,comment:eurooffice_odoo_templates.group_eurooffice_odoo_templates_user
|
||||
msgid "Can open Euro-Office templates for viewing and print them."
|
||||
msgstr "Puede abrir las plantillas de Euro-Office para verlas e imprimirlas."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,comment:eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin
|
||||
msgid "Can open, create, edit and print Euro-Office templates."
|
||||
msgstr "Puede abrir, crear, editar e imprimir plantillas de Euro-Office."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_demo_templates_form
|
||||
msgid ""
|
||||
"Check templates you want to export to the Euro-Office Templates module and press Export. "
|
||||
"You can do this as many times as you need."
|
||||
msgstr ""
|
||||
"Marque las plantillas que quiere exportar al módulo Plantillas de Euro-Office y pulse "
|
||||
"Exportar. Puede hacerlo tantas veces como necesite."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Choose the <span class=\"fw-bolder\">Odoo module </span>\n"
|
||||
" (e.g., Employee, Invoice, Sales Order) that the template will be linked "
|
||||
"to. The chosen\n"
|
||||
" model defines the data fields available for automatic form filling."
|
||||
msgstr ""
|
||||
"Elija el <span class=\"fw-bolder\">módulo Odoo </span>\n"
|
||||
" (por ejemplo, Empleado, Facturas, Pedido de venta) al que se vinculará la "
|
||||
"plantilla. El modelo elegido\n"
|
||||
" define los campos de datos disponibles para el rellenado automático del "
|
||||
"formulario."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Choose the field below to paste selected parameter to the cursor"
|
||||
msgstr "Elija el campo siguiente para pegar el parámetro seleccionado en el cursor"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Choose the required template to fill in with Odoo data."
|
||||
msgstr "Elija la plantilla requerida para rellenarla con los datos de Odoo."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Click on the Action button."
|
||||
msgstr "Haga clic en el botón Acción."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "Ajustes de configuración"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.js:0
|
||||
#, python-format
|
||||
msgid "Couldn't insert the field. Please check Automation API."
|
||||
msgstr "No se ha podido insertar el campo. Por favor, compruebe la API de automatización."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Create or Upload"
|
||||
msgstr "Crear o subir"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Create template"
|
||||
msgstr "Crear plantilla"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Creado por"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Creado"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Delete"
|
||||
msgstr "Eliminar"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_res_config_settings__editable_form_fields
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Disable form fields after printing PDF form"
|
||||
msgstr "Desactivar los campos del formulario después de imprimir el formulario PDF"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Mostrar nombre"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Download"
|
||||
msgstr "Descargar"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr "Menú desplegable"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Edit"
|
||||
msgstr "Editar"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_demo_templates_form
|
||||
msgid "Export"
|
||||
msgstr "Exportar"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Export templates to the Euro-Office Templates module"
|
||||
msgstr "Exportar plantillas al módulo Plantillas de Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Failed to download converted PDF form"
|
||||
msgstr "No se ha podido descargar el formulario PDF convertido"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Failed to download form"
|
||||
msgstr "No se ha podido descargar el formulario"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Fields"
|
||||
msgstr "Campos"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Form fields cannot be filled in manually if they were not automatically filled in\n"
|
||||
" with data from Odoo"
|
||||
msgstr ""
|
||||
"Los campos del formulario no se pueden rellenar manualmente si no se han rellenado "
|
||||
"automáticamente\n"
|
||||
" con datos de Odoo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Go to the relevant Odoo module (e.g., Sales, Invoices)."
|
||||
msgstr "Vaya al módulo Odoo correspondiente (por ejemplo, Ventas, Facturas)."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban_search
|
||||
msgid "Group By"
|
||||
msgstr "Agrupar por"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.js:0
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Help"
|
||||
msgstr "Ayuda"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__hide_file_field
|
||||
msgid "Hide File Field"
|
||||
msgstr "Ocultar campo de archivo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"If you already have a <span class=\"fw-bolder\">prepared\n"
|
||||
" PDF file</span> with fillable fields, you can upload it here"
|
||||
msgstr ""
|
||||
"Si ya tiene un <span class=\"fw-bolder\">archivo PDF preparado\n"
|
||||
" </span> con campos rellenables, puede cargarlo aquí."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Invalid file format."
|
||||
msgstr "Formato de archivo no válido."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Kanban: no action for type: "
|
||||
msgstr "Kanban: ninguna acción para el tipo: "
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Última modificación"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Última actualización por"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Última actualización"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/widget/eurooffice_templates_tree.xml:0
|
||||
#, python-format
|
||||
msgid "Loading templates..."
|
||||
msgstr "Cargando plantillas..."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Locate your newly created template and set up the connections between the form\n"
|
||||
" fields in the Euro-Office editor and the corresponding data fields from "
|
||||
"the selected\n"
|
||||
" Odoo model."
|
||||
msgstr ""
|
||||
"Localice la plantilla recién creada y configure las conexiones entre los campos del "
|
||||
"formulario\n"
|
||||
" en el editor Euro-Office y los campos de datos correspondientes del "
|
||||
"modelo Odoo\n"
|
||||
" seleccionado."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.actions.act_window,name:eurooffice_odoo_templates.action_eurooffice_demo_templates
|
||||
msgid "Manage Templates"
|
||||
msgstr "Gestionar plantillas"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Manage templates"
|
||||
msgstr "Gestionar plantillas"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__mimetype
|
||||
msgid "Mimetype"
|
||||
msgstr "Tipo Mime"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_model
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban_search
|
||||
msgid "Model"
|
||||
msgstr "Modelo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_name
|
||||
msgid "Model Description"
|
||||
msgstr "Descripción del modelo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Model for which the template is being created."
|
||||
msgstr "Modelo para el que se está creando la plantilla."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Module/ section"
|
||||
msgstr "Módulo/ sección"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "No match found."
|
||||
msgstr "No se ha encontrado ninguna coincidencia."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_eurooffice_odoo_demo_templates
|
||||
msgid "Euro-Office Demo Templates"
|
||||
msgstr "Demostración de Euro-Office Templates"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.actions.act_window,name:eurooffice_odoo_templates.action_eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_eurooffice_odoo_templates
|
||||
#: model:ir.ui.menu,name:eurooffice_odoo_templates.eurooffice_menu
|
||||
msgid "Euro-Office Templates"
|
||||
msgstr "Plantillas de Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office Templates module"
|
||||
msgstr "Módulo Euro-Office Templates"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office cannot be reached. Please contact admin."
|
||||
msgstr ""
|
||||
"No se puede acceder a Euro-Office. Por favor, póngase en contacto con el administrador."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office logo"
|
||||
msgstr "Logotipo de Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.module.category,name:eurooffice_odoo_templates.module_category_eurooffice_odoo_templates
|
||||
msgid "Euro-Office templates"
|
||||
msgstr "Plantillas de Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Ok"
|
||||
msgstr "OK"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"On this page, you can create form templates for any Odoo module, such as Invoice, "
|
||||
"Receipt, Employee Leave Form, etc. Just click"
|
||||
msgstr ""
|
||||
"En esta página, puede crear plantillas de formularios para cualquier módulo Odoo, como "
|
||||
"Facturas, Recibo, Formulario de baja laboral, etc. Solo tiene que hacer clic en"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Once you've saved the template, return to the Euro-Office Templates list."
|
||||
msgstr "Una vez guardada la plantilla, vuelva a la lista de plantillas de Euro-Office."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Open Document templates"
|
||||
msgstr "Abrir plantillas de documento"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Open a record."
|
||||
msgstr "Abrir un registro."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Press the Print button."
|
||||
msgstr "Pulse el botón Imprimir."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Preview"
|
||||
msgstr "Vista previa"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Print"
|
||||
msgstr "Imprimir"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.js:0
|
||||
#, python-format
|
||||
msgid "Print from template"
|
||||
msgstr "Imprimir desde plantilla"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/form/eurooffice_form_view.js:0
|
||||
#, python-format
|
||||
msgid "Print with Euro-Office"
|
||||
msgstr "Imprimir con Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_id
|
||||
msgid "Select Model"
|
||||
msgstr "Seleccionar modelo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Select Print with Euro-Office."
|
||||
msgstr "Seleccione Imprimir con Euro-Office."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Select an existing template. Leave the field blank to create a blank template."
|
||||
msgstr ""
|
||||
"Seleccione una plantilla existente. Deje el campo en blanco para crear una \"plantilla\" "
|
||||
"en blanco."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_demo_templates__selected_templates
|
||||
msgid "Selected Templates"
|
||||
msgstr "Plantillas seleccionadas"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Show sub-fields"
|
||||
msgstr "Mostrar subcampos"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__name
|
||||
msgid "Template Name"
|
||||
msgstr "Nombre de la plantilla"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Template creation"
|
||||
msgstr "Creación de la plantilla"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Template removed"
|
||||
msgstr "Plantilla eliminada"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Template uploading"
|
||||
msgstr "Carga de plantillas"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "The Euro-Office Templates module allows you to create, manage, and use fillable PDF"
|
||||
msgstr ""
|
||||
"El módulo Euro-Office Templates le permite crear, gestionar y utilizar archivos PDF "
|
||||
"rellenables"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This will generate a PDF document with your template, automatically filled with the "
|
||||
"corresponding record's data."
|
||||
msgstr ""
|
||||
"Esto generará un documento PDF con su plantilla, rellenado automáticamente con los datos "
|
||||
"del registro correspondiente."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "To fill in a template with Odoo data:"
|
||||
msgstr "Para rellenar una plantilla con datos de Odoo:"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__file
|
||||
msgid "Upload an existing template"
|
||||
msgstr "Cargar una plantilla existente"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Use a technical name"
|
||||
msgstr "Utilizar un nombre técnico"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Use this form to create a new fillable PDF template\n"
|
||||
" for your Odoo modules. Start by entering a <span class=\"fw-bolder\">name "
|
||||
"</span> for\n"
|
||||
" your template to easily identify it later in the Euro-Office Templates list."
|
||||
msgstr ""
|
||||
"Utilice este formulario para crear una nueva plantilla PDF rellenable\n"
|
||||
" para sus módulos Odoo. Comience introduciendo un <span class=\"fw-"
|
||||
"bolder\">nombre </span> para\n"
|
||||
" su plantilla, de modo que pueda identificarla fácilmente más adelante en "
|
||||
"la lista de plantillas de Euro-Office."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,name:eurooffice_odoo_templates.group_eurooffice_odoo_templates_user
|
||||
msgid "User"
|
||||
msgstr "Usuario"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.js:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You don't have any templates yet. Please go to the Euro-Office Templates app to create a "
|
||||
"new template or ask your admin to create it."
|
||||
msgstr ""
|
||||
"Todavía no tiene plantillas. Por favor, acceda a la aplicación Plantillas de Euro-Office "
|
||||
"para crear una plantilla nueva o pida a su administrador que la cree."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"for any installed Odoo module (e.g., Sales, Invoicing, CRM). These templates can then be "
|
||||
"filled in automatically with real-time data from your Odoo system — no manual input "
|
||||
"needed."
|
||||
msgstr ""
|
||||
"para cualquier módulo Odoo instalado (por ejemplo, Ventas, Facturas, CRM). Estas "
|
||||
"plantillas se pueden rellenar automáticamente con datos en tiempo real de su sistema "
|
||||
"Odoo, sin necesidad de introducirlos manualmente."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "templates"
|
||||
msgstr "plantillas"
|
||||
|
|
@ -0,0 +1,609 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * eurooffice_odoo_templates
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0+e-20240216\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-03 08:20+0000\n"
|
||||
"PO-Revision-Date: 2025-10-01 16:44+0300\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: fr_FR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Generator: Poedit 3.4.1\n"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
", select the desired Odoo module, and create or upload a PDF template with fillable "
|
||||
"fields."
|
||||
msgstr ""
|
||||
", sélectionnez le module Odoo souhaité et créez ou téléchargez un modèle PDF avec des "
|
||||
"champs à remplir."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span class=\"o_form_label\">\n"
|
||||
" Templates gallery\n"
|
||||
" </span>"
|
||||
msgstr ""
|
||||
"<span class=\"o_form_label\">\n"
|
||||
" Galerie de modèles\n"
|
||||
" </span>"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,name:eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin
|
||||
msgid "Administrator"
|
||||
msgstr "Administrateur"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Are you sure you want to delete this record?"
|
||||
msgstr "Souhaitez-vous vraiment supprimer cet enregistrement ?"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__attachment_id
|
||||
msgid "Attachment"
|
||||
msgstr "Pièce jointe"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,comment:eurooffice_odoo_templates.group_eurooffice_odoo_templates_user
|
||||
msgid "Can open Euro-Office templates for viewing and print them."
|
||||
msgstr "Peut ouvrir des modèles Euro-Office pour les afficher et les imprimer."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,comment:eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin
|
||||
msgid "Can open, create, edit and print Euro-Office templates."
|
||||
msgstr "Peut ouvrir, créer, éditer et imprimer des modèles Euro-Office."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_demo_templates_form
|
||||
msgid ""
|
||||
"Check templates you want to export to the Euro-Office Templates module and press Export. "
|
||||
"You can do this as many times as you need."
|
||||
msgstr ""
|
||||
"Cochez les modèles que vous souhaitez exporter vers le module Euro-Office Templates et "
|
||||
"cliquez sur Exporter. Vous pouvez effectuer cette opération autant de fois que "
|
||||
"nécessaire."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Choose the <span class=\"fw-bolder\">Odoo module </span>\n"
|
||||
" (e.g., Employee, Invoice, Sales Order) that the template will be linked "
|
||||
"to. The chosen\n"
|
||||
" model defines the data fields available for automatic form filling."
|
||||
msgstr ""
|
||||
"Choisissez le <span class=\"fw-bolder\">module Odoo </span>\n"
|
||||
" (par ex. Employés, Facturation, Commande client) auquel le modèle sera "
|
||||
"lié. Le modèle choisi\n"
|
||||
" définit les champs de données disponibles pour le remplissage automatique "
|
||||
"du formulaire."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Choose the field below to paste selected parameter to the cursor"
|
||||
msgstr "Sélectionnez la zone ci-dessous pour coller le paramètre sélectionné au curseur"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Choose the required template to fill in with Odoo data."
|
||||
msgstr "Choisissez le modèle requis à remplir avec les données Odoo."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Click on the Action button."
|
||||
msgstr "Cliquez sur le bouton Action."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "Paramètres de configuration"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.js:0
|
||||
#, python-format
|
||||
msgid "Couldn't insert the field. Please check Automation API."
|
||||
msgstr "Impossible d'insérer le champ. Veuillez vérifier l'API d'automatisation."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Create or Upload"
|
||||
msgstr "Créer ou télécharger"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Create template"
|
||||
msgstr "Créer un modèle"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Créé par"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Créé le"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Delete"
|
||||
msgstr "Supprimer"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_res_config_settings__editable_form_fields
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Disable form fields after printing PDF form"
|
||||
msgstr "Désactiver les champs du formulaire après l'impression du formulaire PDF"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Afficher le nom"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Download"
|
||||
msgstr "Télécharger"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr "Menu déroulant"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Edit"
|
||||
msgstr "Modifier"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_demo_templates_form
|
||||
msgid "Export"
|
||||
msgstr "Exporter"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Export templates to the Euro-Office Templates module"
|
||||
msgstr "Exporter des modèles vers le module Euro-Office Templates"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Failed to download converted PDF form"
|
||||
msgstr "Échec du téléchargement du formulaire PDF converti"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Failed to download form"
|
||||
msgstr "Échec du téléchargement du formulaire"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Fields"
|
||||
msgstr "Champs"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Form fields cannot be filled in manually if they were not automatically filled in\n"
|
||||
" with data from Odoo"
|
||||
msgstr ""
|
||||
"Les champs du formulaire ne peuvent pas être remplis manuellement s'ils n'ont pas été "
|
||||
"remplis automatiquement\n"
|
||||
" avec les données d'Odoo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Go to the relevant Odoo module (e.g., Sales, Invoices)."
|
||||
msgstr "Accédez au module Odoo concerné (par ex. Ventes, Facturation)."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban_search
|
||||
msgid "Group By"
|
||||
msgstr "Groupe par"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.js:0
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Help"
|
||||
msgstr "Aide"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__hide_file_field
|
||||
msgid "Hide File Field"
|
||||
msgstr "Masquer le champ Fichier"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"If you already have a <span class=\"fw-bolder\">prepared\n"
|
||||
" PDF file</span> with fillable fields, you can upload it here"
|
||||
msgstr ""
|
||||
"Si vous disposez déjà d'un <span class=\"fw-bolder\">fichier PDF\n"
|
||||
" prêt</span> avec des champs à remplir, vous pouvez le télécharger ici"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Invalid file format."
|
||||
msgstr "Format de fichier non valide."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Kanban: no action for type: "
|
||||
msgstr "Kanban : aucune action pour le type : "
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Dernière modification le"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Dernière mise à jour par"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Dernière mise à jour le"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/widget/eurooffice_templates_tree.xml:0
|
||||
#, python-format
|
||||
msgid "Loading templates..."
|
||||
msgstr "Chargement des modèles..."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Locate your newly created template and set up the connections between the form\n"
|
||||
" fields in the Euro-Office editor and the corresponding data fields from "
|
||||
"the selected\n"
|
||||
" Odoo model."
|
||||
msgstr ""
|
||||
"Localisez votre modèle nouvellement créé et configurez les connexions entre les champs "
|
||||
"du formulaire\n"
|
||||
" dans l'éditeur Euro-Office et les champs de données correspondants du "
|
||||
"modèle\n"
|
||||
" Odoo sélectionné."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.actions.act_window,name:eurooffice_odoo_templates.action_eurooffice_demo_templates
|
||||
msgid "Manage Templates"
|
||||
msgstr "Gérer les modèles"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Manage templates"
|
||||
msgstr "Gérer les modèles"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__mimetype
|
||||
msgid "Mimetype"
|
||||
msgstr "Mimetype"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_model
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban_search
|
||||
msgid "Model"
|
||||
msgstr "Modèle"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_name
|
||||
msgid "Model Description"
|
||||
msgstr "Description du modèle"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Model for which the template is being created."
|
||||
msgstr "Modèle pour lequel le formulaire est créé."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Module/ section"
|
||||
msgstr "Module/ section"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "No match found."
|
||||
msgstr "Aucune correspondance trouvée."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_eurooffice_odoo_demo_templates
|
||||
msgid "Euro-Office Demo Templates"
|
||||
msgstr "Modèles de démonstration de Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.actions.act_window,name:eurooffice_odoo_templates.action_eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_eurooffice_odoo_templates
|
||||
#: model:ir.ui.menu,name:eurooffice_odoo_templates.eurooffice_menu
|
||||
msgid "Euro-Office Templates"
|
||||
msgstr "Modèles Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office Templates module"
|
||||
msgstr "Module Euro-Office Templates"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office cannot be reached. Please contact admin."
|
||||
msgstr "Euro-Office n'est pas joignable. Veuillez contacter l'administration."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office logo"
|
||||
msgstr "Logo Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.module.category,name:eurooffice_odoo_templates.module_category_eurooffice_odoo_templates
|
||||
msgid "Euro-Office templates"
|
||||
msgstr "Modèles Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Ok"
|
||||
msgstr "OK"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"On this page, you can create form templates for any Odoo module, such as Invoice, "
|
||||
"Receipt, Employee Leave Form, etc. Just click"
|
||||
msgstr ""
|
||||
"Sur cette page, vous pouvez créer des modèles de formulaires pour tout module Odoo, par "
|
||||
"exemple, Facture, Reçu, Formulaire de congé employé, etc. Il suffit de cliquer"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Once you've saved the template, return to the Euro-Office Templates list."
|
||||
msgstr "Une fois le modèle enregistré, retournez à la liste des modèles Euro-Office."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Open Document templates"
|
||||
msgstr "Ouvrir les modèles de documents"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Open a record."
|
||||
msgstr "Ouvrir un enregistrement."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Press the Print button."
|
||||
msgstr "Appuyez sur le bouton Imprimer."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Preview"
|
||||
msgstr "Aperçu"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Print"
|
||||
msgstr "Imprimer"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.js:0
|
||||
#, python-format
|
||||
msgid "Print from template"
|
||||
msgstr "Imprimer à partir du modèle"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/form/eurooffice_form_view.js:0
|
||||
#, python-format
|
||||
msgid "Print with Euro-Office"
|
||||
msgstr "Imprimer avec Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_id
|
||||
msgid "Select Model"
|
||||
msgstr "Sélectionner un modèle"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Select Print with Euro-Office."
|
||||
msgstr "Sélectionnez Imprimer avec Euro-Office."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Select an existing template. Leave the field blank to create a blank template."
|
||||
msgstr ""
|
||||
"Sélectionnez un modèle existant. Laissez le champ vide pour créer un « modèle » vierge."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_demo_templates__selected_templates
|
||||
msgid "Selected Templates"
|
||||
msgstr "Modèles sélectionnés"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Show sub-fields"
|
||||
msgstr "Afficher les sous-champs"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__name
|
||||
msgid "Template Name"
|
||||
msgstr "Nom du modèle"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Template creation"
|
||||
msgstr "Création du modèle"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Template removed"
|
||||
msgstr "Modèle supprimé"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Template uploading"
|
||||
msgstr "Chargement du modèle"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "The Euro-Office Templates module allows you to create, manage, and use fillable PDF"
|
||||
msgstr ""
|
||||
"Le module Euro-Office Templates vous permet de créer, gérer et utiliser des PDF à remplir"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This will generate a PDF document with your template, automatically filled with the "
|
||||
"corresponding record's data."
|
||||
msgstr ""
|
||||
"Cela générera un document PDF avec votre modèle, automatiquement rempli avec les données "
|
||||
"de l'enregistrement correspondant."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "To fill in a template with Odoo data:"
|
||||
msgstr "Pour remplir un modèle avec les données Odoo :"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__file
|
||||
msgid "Upload an existing template"
|
||||
msgstr "Charger un modèle existant"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Use a technical name"
|
||||
msgstr "Utiliser un nom technique"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Use this form to create a new fillable PDF template\n"
|
||||
" for your Odoo modules. Start by entering a <span class=\"fw-bolder\">name "
|
||||
"</span> for\n"
|
||||
" your template to easily identify it later in the Euro-Office Templates list."
|
||||
msgstr ""
|
||||
"Utilisez ce formulaire pour créer un nouveau modèle PDF\n"
|
||||
" à remplir pour vos modules Odoo. Commencez par saisir un <span class=\"fw-"
|
||||
"bolder\">nom </span> pour\n"
|
||||
" votre modèle afin de l'identifier facilement plus tard dans la liste des "
|
||||
"modèles Euro-Office."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,name:eurooffice_odoo_templates.group_eurooffice_odoo_templates_user
|
||||
msgid "User"
|
||||
msgstr "Utilisateur"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.js:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You don't have any templates yet. Please go to the Euro-Office Templates app to create a "
|
||||
"new template or ask your admin to create it."
|
||||
msgstr ""
|
||||
"Vous n'avez pas encore de modèles. Veuillez vous rendre sur l'application Euro-Office "
|
||||
"Templates pour créer un nouveau modèle ou demander à votre administrateur de le faire."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"for any installed Odoo module (e.g., Sales, Invoicing, CRM). These templates can then be "
|
||||
"filled in automatically with real-time data from your Odoo system — no manual input "
|
||||
"needed."
|
||||
msgstr ""
|
||||
"pour tout module Odoo installé (par ex. Ventes, Facturation, CRM). Ces modèles peuvent "
|
||||
"ensuite être remplis automatiquement avec les données en temps réel de votre système "
|
||||
"Odoo — aucune saisie manuelle nécessaire."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "templates"
|
||||
msgstr "modèles"
|
||||
|
|
@ -0,0 +1,557 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * eurooffice_odoo_templates
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0+e-20240216\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-03 08:20+0000\n"
|
||||
"PO-Revision-Date: 2025-10-02 20:38+0300\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: it_IT\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 3.4.1\n"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ", select the desired Odoo module, and create or upload a PDF template with fillable fields."
|
||||
msgstr ", seleziona il modulo Odoo desiderato e crea o carica un modello PDF con campi compilabili."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "<span class=\"o_form_label\">\n"
|
||||
" Templates gallery\n"
|
||||
" </span>"
|
||||
msgstr "<span class=\"o_form_label\">\n"
|
||||
" Galleria modelli\n"
|
||||
" </span>"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,name:eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin
|
||||
msgid "Administrator"
|
||||
msgstr "Amministratore"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Are you sure you want to delete this record?"
|
||||
msgstr "Sei sicuro di voler eliminare questo record?"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__attachment_id
|
||||
msgid "Attachment"
|
||||
msgstr "Allegato"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,comment:eurooffice_odoo_templates.group_eurooffice_odoo_templates_user
|
||||
msgid "Can open Euro-Office templates for viewing and print them."
|
||||
msgstr "Può aprire i modelli di Euro-Office per visualizzarli e stamparli."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,comment:eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin
|
||||
msgid "Can open, create, edit and print Euro-Office templates."
|
||||
msgstr "Può aprire, creare, modificare e stampare modelli di Euro-Office."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Cancel"
|
||||
msgstr "Annulla"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_demo_templates_form
|
||||
msgid "Check templates you want to export to the Euro-Office Templates module and press Export. You can do this as many times as you need."
|
||||
msgstr "Seleziona i modelli che desideri esportare nel modulo Euro-Office Templates e clicca su Esporta. Puoi ripetere questa operazione tutte le volte che vuoi."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Choose the <span class=\"fw-bolder\">Odoo module </span>\n"
|
||||
" (e.g., Employee, Invoice, Sales Order) that the template will be linked to. The chosen\n"
|
||||
" model defines the data fields available for automatic form filling."
|
||||
msgstr "Scegli il <span class=\"fw-bolder\">modulo Odoo</span>\n"
|
||||
"(ad es., Dipendente, Fattura, Ordine di vendita) a cui il modello sarà collegato. Il modello scelto\n"
|
||||
"definisce i campi dati disponibili per la compilazione automatica del modulo."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Choose the field below to paste selected parameter to the cursor"
|
||||
msgstr "Scegli il campo sottostante per incollare il parametro selezionato nel cursore"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Choose the required template to fill in with Odoo data."
|
||||
msgstr "Scegli il modello richiesto da compilare con i dati di Odoo."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Click on the Action button."
|
||||
msgstr "Fai clic sul pulsante Azione."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "Impostazioni di configurazione"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.js:0
|
||||
#, python-format
|
||||
msgid "Couldn't insert the field. Please check Automation API."
|
||||
msgstr "Impossibile inserire il campo. Controlla l'API di automazione."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Create or Upload"
|
||||
msgstr "Crea o carica"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Create template"
|
||||
msgstr "Crea modello"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Creato da"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Creato il"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Delete"
|
||||
msgstr "Elimina"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_res_config_settings__editable_form_fields
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Disable form fields after printing PDF form"
|
||||
msgstr "Disabilita i campi del modulo dopo la stampa del PDF"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Visualizza nome"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Download"
|
||||
msgstr "Scarica"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr "Menu a discesa"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Edit"
|
||||
msgstr "Modifica"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_demo_templates_form
|
||||
msgid "Export"
|
||||
msgstr "Esporta"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Export templates to the Euro-Office Templates module"
|
||||
msgstr "Esporta i modelli nel modulo Euro-Office Templates"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Failed to download converted PDF form"
|
||||
msgstr "Impossibile scaricare il PDF convertito"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Failed to download form"
|
||||
msgstr "Impossibile scaricare il modulo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Fields"
|
||||
msgstr "Campi"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Form fields cannot be filled in manually if they were not automatically filled in\n"
|
||||
" with data from Odoo"
|
||||
msgstr "I campi del modulo non possono essere compilati manualmente se non sono stati compilati automaticamente\n"
|
||||
" con i dati provenienti da Odoo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Go to the relevant Odoo module (e.g., Sales, Invoices)."
|
||||
msgstr "Vai al modulo Odoo corrispondente (ad es., Vendite, Fatture)."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban_search
|
||||
msgid "Group By"
|
||||
msgstr "Raggruppa per"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.js:0
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Help"
|
||||
msgstr "Aiuto"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__hide_file_field
|
||||
msgid "Hide File Field"
|
||||
msgstr "Nascondi campo file"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "If you already have a <span class=\"fw-bolder\">prepared\n"
|
||||
" PDF file</span> with fillable fields, you can upload it here"
|
||||
msgstr "Se hai già un <span class=\"fw-bolder\">file PDF preparato\n"
|
||||
" con campi compilabili</span>, puoi caricarlo qui"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Invalid file format."
|
||||
msgstr "Formato file non valido."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Kanban: no action for type: "
|
||||
msgstr "Kanban: nessuna azione per tipo: "
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Ultima modifica effettuata il"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Ultimo aggiornamento effettuato da"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Ultimo aggiornamento effettuato il"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/widget/eurooffice_templates_tree.xml:0
|
||||
#, python-format
|
||||
msgid "Loading templates..."
|
||||
msgstr "Caricamento dei modelli in corso..."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Locate your newly created template and set up the connections between the form\n"
|
||||
" fields in the Euro-Office editor and the corresponding data fields from the selected\n"
|
||||
" Odoo model."
|
||||
msgstr ""
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.actions.act_window,name:eurooffice_odoo_templates.action_eurooffice_demo_templates
|
||||
msgid "Manage Templates"
|
||||
msgstr "Gestisci modelli"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Manage templates"
|
||||
msgstr "Gestisci modelli"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__mimetype
|
||||
msgid "Mimetype"
|
||||
msgstr "Mimetype"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_model
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban_search
|
||||
msgid "Model"
|
||||
msgstr "Modello"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_name
|
||||
msgid "Model Description"
|
||||
msgstr "Descrizione del modello"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Model for which the template is being created."
|
||||
msgstr "Modulo per il quale viene creato il modello."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Module/ section"
|
||||
msgstr "Modulo/sezione"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "No match found."
|
||||
msgstr "Nessuna corrispondeza trovata."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_eurooffice_odoo_demo_templates
|
||||
msgid "Euro-Office Demo Templates"
|
||||
msgstr "Modelli demo di Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.actions.act_window,name:eurooffice_odoo_templates.action_eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_eurooffice_odoo_templates
|
||||
#: model:ir.ui.menu,name:eurooffice_odoo_templates.eurooffice_menu
|
||||
msgid "Euro-Office Templates"
|
||||
msgstr "Modelli Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office Templates module"
|
||||
msgstr "Modulo modelli Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office cannot be reached. Please contact admin."
|
||||
msgstr "Impossibile raggiungere Euro-Office. Si prega di contattare l'amministratore."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office logo"
|
||||
msgstr "Logo Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.module.category,name:eurooffice_odoo_templates.module_category_eurooffice_odoo_templates
|
||||
msgid "Euro-Office templates"
|
||||
msgstr "Modelli di Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Ok"
|
||||
msgstr "OK"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "On this page, you can create form templates for any Odoo module, such as Invoice, Receipt, Employee Leave Form, etc. Just click"
|
||||
msgstr "In questa pagina puoi creare modelli di modulo per qualsiasi modulo Odoo, come Fattura, Ricevuta, Modulo ferie dipendente, ecc. Basta fare clic"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Once you've saved the template, return to the Euro-Office Templates list."
|
||||
msgstr "Una volta salvato il modello, torna all’elenco dei modelli di Euro-Office."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Open Document templates"
|
||||
msgstr "Apri modelli di documento"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Open a record."
|
||||
msgstr "Apri un record."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Press the Print button."
|
||||
msgstr "Premi il pulsante Stampa."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Preview"
|
||||
msgstr "Anteprima"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Print"
|
||||
msgstr "Stampa"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.js:0
|
||||
#, python-format
|
||||
msgid "Print from template"
|
||||
msgstr "Stampa da modello"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/form/eurooffice_form_view.js:0
|
||||
#, python-format
|
||||
msgid "Print with Euro-Office"
|
||||
msgstr "Stampa con Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_id
|
||||
msgid "Select Model"
|
||||
msgstr "Seleziona modello"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Select Print with Euro-Office."
|
||||
msgstr "Seleziona Stampa con Euro-Office."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Select an existing template. Leave the field blank to create a blank template."
|
||||
msgstr "Seleziona un modello esistente. Lascia il campo vuoto per creare un \"modello\" vuoto."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_demo_templates__selected_templates
|
||||
msgid "Selected Templates"
|
||||
msgstr "Modelli selezionati"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Show sub-fields"
|
||||
msgstr "Mostra sotto-campi"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__name
|
||||
msgid "Template Name"
|
||||
msgstr "Nome del modello"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Template creation"
|
||||
msgstr "Creazione del modello"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Template removed"
|
||||
msgstr "Modello eliminato"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Template uploading"
|
||||
msgstr "Caricamento del modello"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "The Euro-Office Templates module allows you to create, manage, and use fillable PDF"
|
||||
msgstr "Il modulo Modelli di Euro-Office consente di creare, gestire e usare PDF compilabili"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "This will generate a PDF document with your template, automatically filled with the corresponding record's data."
|
||||
msgstr "Questo genererà un documento PDF con il tuo modello, compilato automaticamente con i dati del record corrispondente."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "To fill in a template with Odoo data:"
|
||||
msgstr "Per compilare un modello con i dati di Odoo:"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__file
|
||||
msgid "Upload an existing template"
|
||||
msgstr "Carica un modello esistente"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Use a technical name"
|
||||
msgstr "Usa un nome tecnico"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Use this form to create a new fillable PDF template\n"
|
||||
" for your Odoo modules. Start by entering a <span class=\"fw-bolder\">name </span> for\n"
|
||||
" your template to easily identify it later in the Euro-Office Templates list."
|
||||
msgstr "Usa questo modulo per creare un nuovo modello PDF compilabile\n"
|
||||
" per i tuoi moduli Odoo. Inizia inserendo un <span class=\"fw-bolder\">nome</span> per\n"
|
||||
" il tuo modello, così da identificarlo facilmente in seguito nell’elenco dei modelli di Euro-Office."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,name:eurooffice_odoo_templates.group_eurooffice_odoo_templates_user
|
||||
msgid "User"
|
||||
msgstr "Utente"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.js:0
|
||||
#, python-format
|
||||
msgid "You don't have any templates yet. Please go to the Euro-Office Templates app to create a new template or ask your admin to create it."
|
||||
msgstr "Non hai ancora alcun modello. Vai all'app Modelli di Euro-Office per creare un nuovo modello o chiedi al tuo amministratore di crearlo."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "for any installed Odoo module (e.g., Sales, Invoicing, CRM). These templates can then be filled in automatically with real-time data from your Odoo system — no manual input needed."
|
||||
msgstr "per qualsiasi modulo Odoo installato (ad es., Vendite, Fatturazione, CRM). Questi modelli possono poi essere compilati automaticamente con i dati in tempo reale dal tuo sistema Odoo, senza necessità di inserimento manuale."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "templates"
|
||||
msgstr "modelli"
|
||||
|
|
@ -0,0 +1,595 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * eurooffice_odoo_templates
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0+e-20240216\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-03 08:20+0000\n"
|
||||
"PO-Revision-Date: 2025-11-14 11:15+0300\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: ja_JP\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Poedit 3.4.1\n"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
", select the desired Odoo module, and create or upload a PDF template with fillable "
|
||||
"fields."
|
||||
msgstr ""
|
||||
"必要なOdooモジュールを選択し、入力可能フィールド付きPDFテンプレートを作成またはアップロー"
|
||||
"ドしてください。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span class=\"o_form_label\">\n"
|
||||
" Templates gallery\n"
|
||||
" </span>"
|
||||
msgstr ""
|
||||
"<span class=\"o_form_label\">\n"
|
||||
" テンプレートギャラリー\n"
|
||||
" </span>"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,name:eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin
|
||||
msgid "Administrator"
|
||||
msgstr "管理者"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Are you sure you want to delete this record?"
|
||||
msgstr "本当にこのレコードを削除しますか?"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__attachment_id
|
||||
msgid "Attachment"
|
||||
msgstr "添付ファイル"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,comment:eurooffice_odoo_templates.group_eurooffice_odoo_templates_user
|
||||
msgid "Can open Euro-Office templates for viewing and print them."
|
||||
msgstr "Euro-Officeテンプレートを開いて閲覧・印刷できます。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,comment:eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin
|
||||
msgid "Can open, create, edit and print Euro-Office templates."
|
||||
msgstr "Euro-Officeテンプレートを開き、作成、編集、印刷することができます。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Cancel"
|
||||
msgstr "キャンセル"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_demo_templates_form
|
||||
msgid ""
|
||||
"Check templates you want to export to the Euro-Office Templates module and press Export. "
|
||||
"You can do this as many times as you need."
|
||||
msgstr ""
|
||||
"エクスポートしたいテンプレートを 「Euro-Officeテンプレート」モジュールで選択し、「エクス"
|
||||
"ポート」をクリックします。この操作は必要な回数だけ繰り返すことができます。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Choose the <span class=\"fw-bolder\">Odoo module </span>\n"
|
||||
" (e.g., Employee, Invoice, Sales Order) that the template will be linked "
|
||||
"to. The chosen\n"
|
||||
" model defines the data fields available for automatic form filling."
|
||||
msgstr ""
|
||||
"テンプレートを紐づける <span class=\"fw-bolder\">Odooモジュール </span>\n"
|
||||
" (例:従業員、請求書、販売注文)を選択します。\n"
|
||||
" 選択したモデルにより、自動入力に使用できるデータフィールドが定義されます。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Choose the field below to paste selected parameter to the cursor"
|
||||
msgstr "選択したパラメータをカーソルに貼り付けるには、下のフィールドを選択してください"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Choose the required template to fill in with Odoo data."
|
||||
msgstr "Odooデータで入力するテンプレートを選択します。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Click on the Action button."
|
||||
msgstr "アクションボタンをクリックします。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "設定"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.js:0
|
||||
#, python-format
|
||||
msgid "Couldn't insert the field. Please check Automation API."
|
||||
msgstr "フィールドを挿入できません。Automation APIを確認してください。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Create or Upload"
|
||||
msgstr "作成またはアップロード"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Create template"
|
||||
msgstr "テンプレートの作成"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "作成者"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__create_date
|
||||
msgid "Created on"
|
||||
msgstr "作成日"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Delete"
|
||||
msgstr "削除"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_res_config_settings__editable_form_fields
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Disable form fields after printing PDF form"
|
||||
msgstr "PDFフォーム印刷後にフォームフィールドを無効化"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "表示名"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Download"
|
||||
msgstr "ダウンロード"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr "ドロップダウンメニュー"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Edit"
|
||||
msgstr "編集"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_demo_templates_form
|
||||
msgid "Export"
|
||||
msgstr "エクスポート"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Export templates to the Euro-Office Templates module"
|
||||
msgstr "テンプレートを「Euro-Officeテンプレート」モジュールにエクスポートします。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Failed to download converted PDF form"
|
||||
msgstr "変換済みPDFフォームのダウンロードに失敗しました"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Failed to download form"
|
||||
msgstr "フォームのダウンロードに失敗しました"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Fields"
|
||||
msgstr "フィールド"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Form fields cannot be filled in manually if they were not automatically filled in\n"
|
||||
" with data from Odoo"
|
||||
msgstr ""
|
||||
"Odooのデータで自動入力されなかったフィールドは、\n"
|
||||
" 手動で入力できません"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Go to the relevant Odoo module (e.g., Sales, Invoices)."
|
||||
msgstr "該当するOdooモジュール(例:販売、請求)に移動します。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban_search
|
||||
msgid "Group By"
|
||||
msgstr "グループ分け"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.js:0
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Help"
|
||||
msgstr "ヘルプ"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__hide_file_field
|
||||
msgid "Hide File Field"
|
||||
msgstr "ファイルフィールドを非表示"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"If you already have a <span class=\"fw-bolder\">prepared\n"
|
||||
" PDF file</span> with fillable fields, you can upload it here"
|
||||
msgstr ""
|
||||
"入力可能フィールド付きの <span class=\"fw-bolder\">準備済み\n"
|
||||
" PDFファイル</span> がある場合は、ここにアップロードできます"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Invalid file format."
|
||||
msgstr "無効なファイル形式です。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Kanban: no action for type: "
|
||||
msgstr "カンバン:タイプに対するアクションがありません:"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "最終編集日"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "最終更新したユーザー"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "最終更新日"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/widget/eurooffice_templates_tree.xml:0
|
||||
#, python-format
|
||||
msgid "Loading templates..."
|
||||
msgstr "テンプレートを読み込み中..."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Locate your newly created template and set up the connections between the form\n"
|
||||
" fields in the Euro-Office editor and the corresponding data fields from "
|
||||
"the selected\n"
|
||||
" Odoo model."
|
||||
msgstr ""
|
||||
"作成したテンプレートを開き、\n"
|
||||
" Euro-Officeエディター内のフォームフィールドと選択した\n"
|
||||
" Odooモデルの対応フィールドを接続します。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.actions.act_window,name:eurooffice_odoo_templates.action_eurooffice_demo_templates
|
||||
msgid "Manage Templates"
|
||||
msgstr "テンプレートの管理"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Manage templates"
|
||||
msgstr "テンプレートの管理"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__mimetype
|
||||
msgid "Mimetype"
|
||||
msgstr "Mimetype"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Ok"
|
||||
msgstr "OK"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"On this page, you can create form templates for any Odoo module, such as Invoice, "
|
||||
"Receipt, Employee Leave Form, etc. Just click"
|
||||
msgstr ""
|
||||
"このページでは、請求書、領収書、休暇申請など、任意のOdooモジュール用にフォームテンプレー"
|
||||
"トを作成できます。クリックして開始してください。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Once you've saved the template, return to the Euro-Office Templates list."
|
||||
msgstr "テンプレートを保存したら、Euro-Officeテンプレートリストに戻ります。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Open Document templates"
|
||||
msgstr "ドキュメントテンプレートを開く"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Open a record."
|
||||
msgstr "レコードを開きます。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Press the Print button."
|
||||
msgstr "印刷ボタンを押します。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Preview"
|
||||
msgstr "プレビュー"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_model
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban_search
|
||||
msgid "Model"
|
||||
msgstr "モデル"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_name
|
||||
msgid "Model Description"
|
||||
msgstr "モデルの説明"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Model for which the template is being created."
|
||||
msgstr "テンプレートが作成されるモデル。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Module/ section"
|
||||
msgstr "モジュール/セクション"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "No match found."
|
||||
msgstr "一致しているものはありません"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_eurooffice_odoo_demo_templates
|
||||
msgid "Euro-Office Demo Templates"
|
||||
msgstr "Euro-Officeデモテンプレート"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.actions.act_window,name:eurooffice_odoo_templates.action_eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_eurooffice_odoo_templates
|
||||
#: model:ir.ui.menu,name:eurooffice_odoo_templates.eurooffice_menu
|
||||
msgid "Euro-Office Templates"
|
||||
msgstr "Euro-Officeテンプレート"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office cannot be reached. Please contact admin."
|
||||
msgstr "Euro-Officeにアクセスできません。管理者にご連絡ください。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office logo"
|
||||
msgstr "Euro-Officeロゴ"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.module.category,name:eurooffice_odoo_templates.module_category_eurooffice_odoo_templates
|
||||
msgid "Euro-Office templates"
|
||||
msgstr "Euro-Officeテンプレート"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Print"
|
||||
msgstr "印刷"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.js:0
|
||||
#, python-format
|
||||
msgid "Print from template"
|
||||
msgstr "テンプレートから印刷"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/form/eurooffice_form_view.js:0
|
||||
#, python-format
|
||||
msgid "Print with Euro-Office"
|
||||
msgstr "Euro-Officeで印刷"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_id
|
||||
msgid "Select Model"
|
||||
msgstr "モデルを選択"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Select Print with Euro-Office."
|
||||
msgstr "Euro-Officeで印刷を選択します。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Select an existing template. Leave the field blank to create a blank template."
|
||||
msgstr ""
|
||||
"既存のテンプレートを選択してください。空白の「テンプレート」を作成するには、フィールドを"
|
||||
"空白のままにしてください。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_demo_templates__selected_templates
|
||||
msgid "Selected Templates"
|
||||
msgstr "選択されたテンプレート"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Show sub-fields"
|
||||
msgstr "サブフィールドを表示"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__name
|
||||
msgid "Template Name"
|
||||
msgstr "テンプレート名"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Template creation"
|
||||
msgstr "テンプレート作成"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Template removed"
|
||||
msgstr "テンプレートが削除されました"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Template uploading"
|
||||
msgstr "テンプレートがアップロードされています"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "The Euro-Office Templates module allows you to create, manage, and use fillable PDF"
|
||||
msgstr "Euro-Officeテンプレートモジュールでは、入力可能なPDFの作成、管理、利用が可能です"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This will generate a PDF document with your template, automatically filled with the "
|
||||
"corresponding record's data."
|
||||
msgstr ""
|
||||
"これにより、テンプレートに基づいたPDF文書が生成され、対応するレコードのデータが自動的に入"
|
||||
"力されます。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "To fill in a template with Odoo data:"
|
||||
msgstr "テンプレートにOdooデータを入力する手順:"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__file
|
||||
msgid "Upload an existing template"
|
||||
msgstr "既存のテンプレートをアップロード"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Use a technical name"
|
||||
msgstr "技術的な名称を使用"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Use this form to create a new fillable PDF template\n"
|
||||
" for your Odoo modules. Start by entering a <span class=\"fw-bolder\">name "
|
||||
"</span> for\n"
|
||||
" your template to easily identify it later in the Euro-Office Templates list."
|
||||
msgstr ""
|
||||
"このフォームを使用して、\n"
|
||||
" Odooモジュール用の新しい入力可能PDFテンプレートを作成します。まずテンプレー"
|
||||
"トに <span class=\"fw-bolder\">名前</span> を付け、\n"
|
||||
" Euro-Officeテンプレート一覧で識別しやすくします。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,name:eurooffice_odoo_templates.group_eurooffice_odoo_templates_user
|
||||
msgid "User"
|
||||
msgstr "ユーザー"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.js:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You don't have any templates yet. Please go to the Euro-Office Templates app to create a "
|
||||
"new template or ask your admin to create it."
|
||||
msgstr ""
|
||||
"まだテンプレートがありません。Euro-Officeテンプレートアプリから新しいテンプレートを作成す"
|
||||
"るか、管理者に作成を依頼してください。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"for any installed Odoo module (e.g., Sales, Invoicing, CRM). These templates can then be "
|
||||
"filled in automatically with real-time data from your Odoo system — no manual input "
|
||||
"needed."
|
||||
msgstr ""
|
||||
"インストール済みのOdooモジュール(例:販売、請求書発行、CRM)向けに用意されています。これ"
|
||||
"らのテンプレートには、Odooシステムからのリアルタイムデータが自動的に入力されるため、手動"
|
||||
"入力は不要です。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "templates"
|
||||
msgstr "テンプレート"
|
||||
|
|
@ -0,0 +1,606 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * eurooffice_odoo_templates
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0+e-20240216\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-03 08:20+0000\n"
|
||||
"PO-Revision-Date: 2025-10-01 16:58+0300\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: pt_BR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Generator: Poedit 3.4.1\n"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
", select the desired Odoo module, and create or upload a PDF template with fillable "
|
||||
"fields."
|
||||
msgstr ""
|
||||
", selecione o módulo Odoo desejado e crie ou carregue um modelo em PDF com campos "
|
||||
"preenchíveis."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span class=\"o_form_label\">\n"
|
||||
" Templates gallery\n"
|
||||
" </span>"
|
||||
msgstr ""
|
||||
"<span class=\"o_form_label\">\n"
|
||||
" Galeria de templates\n"
|
||||
" </span>"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,name:eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin
|
||||
msgid "Administrator"
|
||||
msgstr "Administrador"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Are you sure you want to delete this record?"
|
||||
msgstr "Tem certeza de que deseja excluir este registro?"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__attachment_id
|
||||
msgid "Attachment"
|
||||
msgstr "Anexo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,comment:eurooffice_odoo_templates.group_eurooffice_odoo_templates_user
|
||||
msgid "Can open Euro-Office templates for viewing and print them."
|
||||
msgstr "Pode abrir modelos do Euro-Office para visualizá-los e imprimi-los."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,comment:eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin
|
||||
msgid "Can open, create, edit and print Euro-Office templates."
|
||||
msgstr "Pode abrir, criar, editar e imprimir modelos do Euro-Office."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_demo_templates_form
|
||||
msgid ""
|
||||
"Check templates you want to export to the Euro-Office Templates module and press Export. "
|
||||
"You can do this as many times as you need."
|
||||
msgstr ""
|
||||
"Marque os templates que deseja exportar para o módulo de modelos do Euro-Office e clique "
|
||||
"em Exportar. Você pode fazer isso quantas vezes precisar."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Choose the <span class=\"fw-bolder\">Odoo module </span>\n"
|
||||
" (e.g., Employee, Invoice, Sales Order) that the template will be linked "
|
||||
"to. The chosen\n"
|
||||
" model defines the data fields available for automatic form filling."
|
||||
msgstr ""
|
||||
"Escolha o <span class=\"fw-bolder\">módulo Odoo</span>\n"
|
||||
" (por exemplo, Funcionário, Fatura, Pedido de Venda) ao qual o modelo será "
|
||||
"vinculado. O modelo escolhido\n"
|
||||
" define os campos de dados disponíveis para preenchimento automático do "
|
||||
"formulário."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Choose the field below to paste selected parameter to the cursor"
|
||||
msgstr "Escolha o campo abaixo para colar o parâmetro selecionado no cursor"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Choose the required template to fill in with Odoo data."
|
||||
msgstr "Escolha o modelo desejado para preencher com os dados do Odoo."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Click on the Action button."
|
||||
msgstr "Clique no botão Ação."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "Configurações"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.js:0
|
||||
#, python-format
|
||||
msgid "Couldn't insert the field. Please check Automation API."
|
||||
msgstr "Não foi possível inserir o campo. Verifique a API de automação."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Create or Upload"
|
||||
msgstr "Criar ou fazer upload"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Create template"
|
||||
msgstr "Criar modelo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Criado por"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Criado em"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Delete"
|
||||
msgstr "Excluir"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_res_config_settings__editable_form_fields
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Disable form fields after printing PDF form"
|
||||
msgstr "Desabilite os campos do formulário após imprimir o formulário em PDF"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nome de exibição"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Download"
|
||||
msgstr "Baixar"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr "Menu suspenso"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Edit"
|
||||
msgstr "Editar"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_demo_templates_form
|
||||
msgid "Export"
|
||||
msgstr "Exportar"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Export templates to the Euro-Office Templates module"
|
||||
msgstr "Exportar templates para o módulo de templates do Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Failed to download converted PDF form"
|
||||
msgstr "Falha ao baixar o formulário em PDF convertido"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Failed to download form"
|
||||
msgstr "Falha ao baixar o formulário"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Fields"
|
||||
msgstr "Campos"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Form fields cannot be filled in manually if they were not automatically filled in\n"
|
||||
" with data from Odoo"
|
||||
msgstr ""
|
||||
"Os campos do formulário não podem ser preenchidos manualmente se não foram preenchidos\n"
|
||||
" automaticamente com dados do Odoo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Go to the relevant Odoo module (e.g., Sales, Invoices)."
|
||||
msgstr "Acesse o módulo Odoo relevante (por exemplo, Vendas, Faturas)."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban_search
|
||||
msgid "Group By"
|
||||
msgstr "Agrupar por"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.js:0
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Help"
|
||||
msgstr "Ajuda"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__hide_file_field
|
||||
msgid "Hide File Field"
|
||||
msgstr "Ocultar Campo de Arquivo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"If you already have a <span class=\"fw-bolder\">prepared\n"
|
||||
" PDF file</span> with fillable fields, you can upload it here"
|
||||
msgstr ""
|
||||
"Se você já possui um <span class=\"fw-bolder\">arquivo\n"
|
||||
"PDF</span> preparado com campos preenchíveis, pode enviá-lo aqui"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Invalid file format."
|
||||
msgstr "Formato de arquivo inválido."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Kanban: no action for type: "
|
||||
msgstr "Kanban: nenhuma ação para o tipo: "
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Última modificação em"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Última atualização por"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Última atualização em"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/widget/eurooffice_templates_tree.xml:0
|
||||
#, python-format
|
||||
msgid "Loading templates..."
|
||||
msgstr "Carregando templates..."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Locate your newly created template and set up the connections between the form\n"
|
||||
" fields in the Euro-Office editor and the corresponding data fields from "
|
||||
"the selected\n"
|
||||
" Odoo model."
|
||||
msgstr ""
|
||||
"Localize o modelo recém-criado e configure as conexões entre os campos do formulário\n"
|
||||
" no editor Euro-Office e os campos de dados correspondentes do modelo "
|
||||
"Odoo\n"
|
||||
" selecionado."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.actions.act_window,name:eurooffice_odoo_templates.action_eurooffice_demo_templates
|
||||
msgid "Manage Templates"
|
||||
msgstr "Gerenciar templates"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Manage templates"
|
||||
msgstr "Gerenciar templates"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__mimetype
|
||||
msgid "Mimetype"
|
||||
msgstr "Mimetype"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_model
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban_search
|
||||
msgid "Model"
|
||||
msgstr "Modelo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_name
|
||||
msgid "Model Description"
|
||||
msgstr "Descrição do modelo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Model for which the template is being created."
|
||||
msgstr "Modelo para o qual o modelo está sendo criado."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Module/ section"
|
||||
msgstr "Módulo/seção"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "No match found."
|
||||
msgstr "Nenhuma correspondência encontrada."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_eurooffice_odoo_demo_templates
|
||||
msgid "Euro-Office Demo Templates"
|
||||
msgstr "Templates de demonstração do Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.actions.act_window,name:eurooffice_odoo_templates.action_eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_eurooffice_odoo_templates
|
||||
#: model:ir.ui.menu,name:eurooffice_odoo_templates.eurooffice_menu
|
||||
msgid "Euro-Office Templates"
|
||||
msgstr "Modelos Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office Templates module"
|
||||
msgstr "Módulo de Modelos do Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office cannot be reached. Please contact admin."
|
||||
msgstr "Euro-Office não pode ser alcançado. Entre em contato com o administrador."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office logo"
|
||||
msgstr "Logotipo do Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.module.category,name:eurooffice_odoo_templates.module_category_eurooffice_odoo_templates
|
||||
msgid "Euro-Office templates"
|
||||
msgstr "Modelos Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Ok"
|
||||
msgstr "ОК"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"On this page, you can create form templates for any Odoo module, such as Invoice, "
|
||||
"Receipt, Employee Leave Form, etc. Just click"
|
||||
msgstr ""
|
||||
"Nesta página, você pode criar modelos de formulário para qualquer módulo do Odoo, como "
|
||||
"Fatura, Recibo, Formulário de Licença de Funcionário, etc. Basta clicar em"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Once you've saved the template, return to the Euro-Office Templates list."
|
||||
msgstr "Após salvar o modelo, retorne à lista de Modelos do Euro-Office."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Open Document templates"
|
||||
msgstr "Abrir Modelos de Documentos"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Open a record."
|
||||
msgstr "Abra um registro."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Press the Print button."
|
||||
msgstr "Pressione o botão Imprimir."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Preview"
|
||||
msgstr "Visualizar"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Print"
|
||||
msgstr "Imprimir"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.js:0
|
||||
#, python-format
|
||||
msgid "Print from template"
|
||||
msgstr "Imprimir a partir do modelo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/form/eurooffice_form_view.js:0
|
||||
#, python-format
|
||||
msgid "Print with Euro-Office"
|
||||
msgstr "Imprimir com Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_id
|
||||
msgid "Select Model"
|
||||
msgstr "Selecione o modelo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Select Print with Euro-Office."
|
||||
msgstr "Selecione Imprimir com o Euro-Office."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Select an existing template. Leave the field blank to create a blank template."
|
||||
msgstr ""
|
||||
"Selecione um modelo existente. Deixe o campo em branco para criar um \"modelo\" em "
|
||||
"branco."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_demo_templates__selected_templates
|
||||
msgid "Selected Templates"
|
||||
msgstr "Templates selecionados"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Show sub-fields"
|
||||
msgstr "Mostrar subcampos"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__name
|
||||
msgid "Template Name"
|
||||
msgstr "Nome do modelo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Template creation"
|
||||
msgstr "Criação de modelo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Template removed"
|
||||
msgstr "Modelo removido"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Template uploading"
|
||||
msgstr "Carregamento de modelo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "The Euro-Office Templates module allows you to create, manage, and use fillable PDF"
|
||||
msgstr "O módulo de Modelos do Euro-Office permite criar, gerenciar e usar PDF preenchível."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This will generate a PDF document with your template, automatically filled with the "
|
||||
"corresponding record's data."
|
||||
msgstr ""
|
||||
"Isso gerará um documento PDF com o seu modelo, preenchido automaticamente com os dados "
|
||||
"do registro correspondente."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "To fill in a template with Odoo data:"
|
||||
msgstr "Para preencher um modelo com dados do Odoo:"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__file
|
||||
msgid "Upload an existing template"
|
||||
msgstr "Carregar um modelo existente"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Use a technical name"
|
||||
msgstr "Usar um nome técnico"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Use this form to create a new fillable PDF template\n"
|
||||
" for your Odoo modules. Start by entering a <span class=\"fw-bolder\">name "
|
||||
"</span> for\n"
|
||||
" your template to easily identify it later in the Euro-Office Templates list."
|
||||
msgstr ""
|
||||
"Use este formulário para criar um novo modelo de PDF\n"
|
||||
" preenchível para seus módulos do Odoo. Comece inserindo um <span "
|
||||
"class=\"fw-bolder\">nome</span> para\n"
|
||||
" o seu modelo para identificá-lo facilmente mais tarde na lista de Modelos "
|
||||
"do Euro-Office."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,name:eurooffice_odoo_templates.group_eurooffice_odoo_templates_user
|
||||
msgid "User"
|
||||
msgstr "Do utilizador"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.js:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You don't have any templates yet. Please go to the Euro-Office Templates app to create a "
|
||||
"new template or ask your admin to create it."
|
||||
msgstr ""
|
||||
"Você ainda não tem nenhum modelo. Acesse o aplicativo Euro-Office Templates para criar um "
|
||||
"novo modelo ou peça ao seu administrador para criá-lo."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"for any installed Odoo module (e.g., Sales, Invoicing, CRM). These templates can then be "
|
||||
"filled in automatically with real-time data from your Odoo system — no manual input "
|
||||
"needed."
|
||||
msgstr ""
|
||||
"para qualquer módulo Odoo instalado (por exemplo, Vendas, Faturamento, CRM). Esses "
|
||||
"modelos podem ser preenchidos automaticamente com dados em tempo real do seu sistema "
|
||||
"Odoo — sem necessidade de entrada manual."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "templates"
|
||||
msgstr "modelos"
|
||||
|
|
@ -0,0 +1,603 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * eurooffice_odoo_templates
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0+e-20240216\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-03 08:20+0000\n"
|
||||
"PO-Revision-Date: 2025-10-02 20:51+0300\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: ru_RU\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && "
|
||||
"(n%100<12 || n%100>14) ? 1 : 2);\n"
|
||||
"X-Generator: Poedit 3.4.1\n"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
", select the desired Odoo module, and create or upload a PDF template with fillable "
|
||||
"fields."
|
||||
msgstr ""
|
||||
", выберите нужный модуль Odoo, создайте или загрузите PDF-шаблон с заполняемыми полями."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span class=\"o_form_label\">\n"
|
||||
" Templates gallery\n"
|
||||
" </span>"
|
||||
msgstr ""
|
||||
"<span class=\"o_form_label\">\n"
|
||||
" Галерея шаблонов\n"
|
||||
" </span>"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,name:eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin
|
||||
msgid "Administrator"
|
||||
msgstr "Администратор"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Are you sure you want to delete this record?"
|
||||
msgstr "Вы уверены, что хотите удалить эту запись?"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__attachment_id
|
||||
msgid "Attachment"
|
||||
msgstr "Вложение"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,comment:eurooffice_odoo_templates.group_eurooffice_odoo_templates_user
|
||||
msgid "Can open Euro-Office templates for viewing and print them."
|
||||
msgstr "Вы можете открыть шаблоны Euro-Office для просмотра и распечатать их."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,comment:eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin
|
||||
msgid "Can open, create, edit and print Euro-Office templates."
|
||||
msgstr "Вы можете открывать, создавать, редактировать и распечатывать шаблоны Euro-Office."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Cancel"
|
||||
msgstr "Отменить"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_demo_templates_form
|
||||
msgid ""
|
||||
"Check templates you want to export to the Euro-Office Templates module and press Export. "
|
||||
"You can do this as many times as you need."
|
||||
msgstr ""
|
||||
"Отметьте шаблоны, которые вы хотите экспортировать в модуль шаблонов Euro-Office, и "
|
||||
"нажмите «Экспортировать». Вы можете сделать это столько раз, сколько необходимо."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Choose the <span class=\"fw-bolder\">Odoo module </span>\n"
|
||||
" (e.g., Employee, Invoice, Sales Order) that the template will be linked "
|
||||
"to. The chosen\n"
|
||||
" model defines the data fields available for automatic form filling."
|
||||
msgstr ""
|
||||
"Выберите <span class=\"fw-bolder\">модуль Odoo</span>\n"
|
||||
" (например, Сотрудники, Выставление счетов, Продажи), с которым будет "
|
||||
"связан шаблон. Выбранная\n"
|
||||
" модель определяет поля данных, доступные для автоматического заполнения "
|
||||
"формы."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Choose the field below to paste selected parameter to the cursor"
|
||||
msgstr "Выберите поле ниже, чтобы вставить выбранный параметр"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Choose the required template to fill in with Odoo data."
|
||||
msgstr "Выберите нужный шаблон для заполнения данными Odoo."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Click on the Action button."
|
||||
msgstr "Нажмите кнопку «Действие»."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "Настройки конфигурации"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.js:0
|
||||
#, python-format
|
||||
msgid "Couldn't insert the field. Please check Automation API."
|
||||
msgstr "Не удалось вставить поле. Проверьте API автоматизации."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Create or Upload"
|
||||
msgstr "Создать или загрузить"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Create template"
|
||||
msgstr "Создать шаблон"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Создано"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Дата создания:"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Delete"
|
||||
msgstr "Удалить"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_res_config_settings__editable_form_fields
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Disable form fields after printing PDF form"
|
||||
msgstr "Отключить поля формы после печати PDF-формы"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Отображаемое имя"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Download"
|
||||
msgstr "Скачать"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr "Выпадающее меню"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Edit"
|
||||
msgstr "Редактировать"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_demo_templates_form
|
||||
msgid "Export"
|
||||
msgstr "Экспортировать"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Export templates to the Euro-Office Templates module"
|
||||
msgstr "Экспортировать шаблоны в модуль шаблонов Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Failed to download converted PDF form"
|
||||
msgstr "Не удалось загрузить сконвертированную PDF-форму"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Failed to download form"
|
||||
msgstr "Не удалось загрузить форму"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Fields"
|
||||
msgstr "Поля"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Form fields cannot be filled in manually if they were not automatically filled in\n"
|
||||
" with data from Odoo"
|
||||
msgstr ""
|
||||
"Нельзя заполнить поля формы вручную, если они не были автоматически заполнены\n"
|
||||
" данными из Odoo."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Go to the relevant Odoo module (e.g., Sales, Invoices)."
|
||||
msgstr "Перейдите в соответствующий модуль Odoo (например, Продажи, Выставление счетов)."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban_search
|
||||
msgid "Group By"
|
||||
msgstr "Группировать по"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.js:0
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Help"
|
||||
msgstr "Помощь"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__hide_file_field
|
||||
msgid "Hide File Field"
|
||||
msgstr "Скрыть поле файла"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"If you already have a <span class=\"fw-bolder\">prepared\n"
|
||||
" PDF file</span> with fillable fields, you can upload it here"
|
||||
msgstr ""
|
||||
"Если у вас уже есть <span class=\"fw-bolder\">готовый\n"
|
||||
" PDF-файл</span> с заполняемыми полями, вы можете загрузить его здесь"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Invalid file format."
|
||||
msgstr "Неверный формат файла."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Kanban: no action for type: "
|
||||
msgstr "Канбан: нет действий для типа: "
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Дата последнего изменения:"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Последнее обновление"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Дата последнего обновления:"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/widget/eurooffice_templates_tree.xml:0
|
||||
#, python-format
|
||||
msgid "Loading templates..."
|
||||
msgstr "Загрузка шаблонов..."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Locate your newly created template and set up the connections between the form\n"
|
||||
" fields in the Euro-Office editor and the corresponding data fields from "
|
||||
"the selected\n"
|
||||
" Odoo model."
|
||||
msgstr ""
|
||||
"Найдите вновь созданный шаблон и настройте связи между полями\n"
|
||||
" формы в редакторе Euro-Office и соответствующими полями данных из "
|
||||
"выбранной\n"
|
||||
" модели Odoo."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.actions.act_window,name:eurooffice_odoo_templates.action_eurooffice_demo_templates
|
||||
msgid "Manage Templates"
|
||||
msgstr "Управление шаблонами"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Manage templates"
|
||||
msgstr "Управление шаблонами"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__mimetype
|
||||
msgid "Mimetype"
|
||||
msgstr "Mimetype"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_model
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban_search
|
||||
msgid "Model"
|
||||
msgstr "Модель"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_name
|
||||
msgid "Model Description"
|
||||
msgstr "Описание модели"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Model for which the template is being created."
|
||||
msgstr "Модель, для которой был создан шаблон."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Module/ section"
|
||||
msgstr "Модуль / раздел"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "No match found."
|
||||
msgstr "Совпадения не найдены."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_eurooffice_odoo_demo_templates
|
||||
msgid "Euro-Office Demo Templates"
|
||||
msgstr "Демо-шаблоны Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.actions.act_window,name:eurooffice_odoo_templates.action_eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_eurooffice_odoo_templates
|
||||
#: model:ir.ui.menu,name:eurooffice_odoo_templates.eurooffice_menu
|
||||
msgid "Euro-Office Templates"
|
||||
msgstr "Шаблоны Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office Templates module"
|
||||
msgstr "Модуль «Шаблоны Euro-Office»"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office cannot be reached. Please contact admin."
|
||||
msgstr "Приложение Euro-Office недоступно. Пожалуйста, свяжитесь с администратором."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office logo"
|
||||
msgstr "Логотип Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.module.category,name:eurooffice_odoo_templates.module_category_eurooffice_odoo_templates
|
||||
msgid "Euro-Office templates"
|
||||
msgstr "Шаблоны Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Ok"
|
||||
msgstr "OK"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"On this page, you can create form templates for any Odoo module, such as Invoice, "
|
||||
"Receipt, Employee Leave Form, etc. Just click"
|
||||
msgstr ""
|
||||
"На этой странице вы можете создать шаблоны форм для любого модуля Odoo, например: "
|
||||
"Выставление счетов, Чеки, Отпуска и так далее. Просто нажмите"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Once you've saved the template, return to the Euro-Office Templates list."
|
||||
msgstr "После сохранения шаблона вернитесь к списку шаблонов Euro-Office."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Open Document templates"
|
||||
msgstr "Открыть шаблоны документов"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Open a record."
|
||||
msgstr "Открыть запись."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Press the Print button."
|
||||
msgstr "Нажмите кнопку «Печать»."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Preview"
|
||||
msgstr "Предварительный просмотр"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Print"
|
||||
msgstr "Печать"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.js:0
|
||||
#, python-format
|
||||
msgid "Print from template"
|
||||
msgstr "Распечатать из шаблона"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/form/eurooffice_form_view.js:0
|
||||
#, python-format
|
||||
msgid "Print with Euro-Office"
|
||||
msgstr "Распечатать с помощью Euro-Office"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_id
|
||||
msgid "Select Model"
|
||||
msgstr "Выбрать модель"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Select Print with Euro-Office."
|
||||
msgstr "Выберите «Печать с помощью Euro-Office»."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Select an existing template. Leave the field blank to create a blank template."
|
||||
msgstr "Выберите существующий шаблон. Оставьте поле пустым, чтобы создать пустой шаблон."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_demo_templates__selected_templates
|
||||
msgid "Selected Templates"
|
||||
msgstr "Выбранные шаблоны"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Show sub-fields"
|
||||
msgstr "Показать дополнительные поля"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__name
|
||||
msgid "Template Name"
|
||||
msgstr "Имя шаблона"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Template creation"
|
||||
msgstr "Создание шаблона"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Template removed"
|
||||
msgstr "Шаблон удален"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Template uploading"
|
||||
msgstr "Загрузка шаблона"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "The Euro-Office Templates module allows you to create, manage, and use fillable PDF"
|
||||
msgstr "Модуль «Шаблоны Euro-Office» позволяет создавать, использовать заполняемые PDF-"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This will generate a PDF document with your template, automatically filled with the "
|
||||
"corresponding record's data."
|
||||
msgstr ""
|
||||
"Будет создан PDF-документ с вашим шаблоном, автоматически заполненный данными "
|
||||
"соответствующей записи."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "To fill in a template with Odoo data:"
|
||||
msgstr "Чтобы заполнить шаблон данными Odoo:"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__file
|
||||
msgid "Upload an existing template"
|
||||
msgstr "Загрузить существующий шаблон"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Use a technical name"
|
||||
msgstr "Использовать техническое имя"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Use this form to create a new fillable PDF template\n"
|
||||
" for your Odoo modules. Start by entering a <span class=\"fw-bolder\">name "
|
||||
"</span> for\n"
|
||||
" your template to easily identify it later in the Euro-Office Templates list."
|
||||
msgstr ""
|
||||
"Используйте эту форму для создания нового заполняемого PDF-шаблона\n"
|
||||
" для ваших модулей Odoo. Начните с ввода <span class=\"fw-bolder\">имени</"
|
||||
"span>\n"
|
||||
" вашего шаблона, чтобы его было проще найти в списке шаблонов Euro-Office."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,name:eurooffice_odoo_templates.group_eurooffice_odoo_templates_user
|
||||
msgid "User"
|
||||
msgstr "Пользователь"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.js:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You don't have any templates yet. Please go to the Euro-Office Templates app to create a "
|
||||
"new template or ask your admin to create it."
|
||||
msgstr ""
|
||||
"У вас пока нет шаблонов. Перейдите в приложение Шаблоны Euro-Office, чтобы создать новый "
|
||||
"шаблон, или попросите администратора создать его."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"for any installed Odoo module (e.g., Sales, Invoicing, CRM). These templates can then be "
|
||||
"filled in automatically with real-time data from your Odoo system — no manual input "
|
||||
"needed."
|
||||
msgstr ""
|
||||
"для любого установленного модуля Odoo и управлять ими (например, Продажи, Выставление "
|
||||
"счетов, CRM). Эти шаблоны можно затем автоматически заполнять данными из вашей системы "
|
||||
"Odoo в режиме реального времени — ввод данных вручную не требуется."
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "templates"
|
||||
msgstr "шаблоны"
|
||||
|
|
@ -0,0 +1,590 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * eurooffice_odoo_templates
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0+e-20240216\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-03 08:20+0000\n"
|
||||
"PO-Revision-Date: 2025-10-02 20:45+0300\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: zh_CN\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Poedit 3.4.1\n"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
", select the desired Odoo module, and create or upload a PDF template with fillable "
|
||||
"fields."
|
||||
msgstr ",选择所需的 Odoo 模块,并创建或上传带有可填写字段的 PDF 模板。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span class=\"o_form_label\">\n"
|
||||
" Templates gallery\n"
|
||||
" </span>"
|
||||
msgstr ""
|
||||
"<span class=\"o_form_label\">\n"
|
||||
" 模板库\n"
|
||||
" </span>"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,name:eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin
|
||||
msgid "Administrator"
|
||||
msgstr "管理员"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Are you sure you want to delete this record?"
|
||||
msgstr "您确实要删除该记录?"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__attachment_id
|
||||
msgid "Attachment"
|
||||
msgstr "附件"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,comment:eurooffice_odoo_templates.group_eurooffice_odoo_templates_user
|
||||
msgid "Can open Euro-Office templates for viewing and print them."
|
||||
msgstr "打开 Euro-Office 模板进行查看和打印。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,comment:eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin
|
||||
msgid "Can open, create, edit and print Euro-Office templates."
|
||||
msgstr "打开、创建、编辑和打印 Euro-Office 模板。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Cancel"
|
||||
msgstr "取消"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_demo_templates_form
|
||||
msgid ""
|
||||
"Check templates you want to export to the Euro-Office Templates module and press Export. "
|
||||
"You can do this as many times as you need."
|
||||
msgstr ""
|
||||
"要导出模板至 Euro-Office 模板模块,请勾选然后点击“导出”。您可以根据需求多次执行此操作。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Choose the <span class=\"fw-bolder\">Odoo module </span>\n"
|
||||
" (e.g., Employee, Invoice, Sales Order) that the template will be linked "
|
||||
"to. The chosen\n"
|
||||
" model defines the data fields available for automatic form filling."
|
||||
msgstr ""
|
||||
"选择 <span class=\"fw-bolder\"> Odoo 模块</span>\n"
|
||||
" (例如,员工、发票、销售),模板将与该模块关联。\n"
|
||||
" 所选模块定义了可用于自动填写的字段。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Choose the field below to paste selected parameter to the cursor"
|
||||
msgstr "选择以下字段将选定的参数粘贴到光标处"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Choose the required template to fill in with Odoo data."
|
||||
msgstr "选择要用 Odoo 数据填写的模板。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Click on the Action button."
|
||||
msgstr "点击“操作”按钮。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "配置设置"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.js:0
|
||||
#, python-format
|
||||
msgid "Couldn't insert the field. Please check Automation API."
|
||||
msgstr "无法插入字段,请检查自动化 API。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Create or Upload"
|
||||
msgstr "创建或上传"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Create template"
|
||||
msgstr "创建模板"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "创建者"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__create_date
|
||||
msgid "Created on"
|
||||
msgstr "创建于"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Delete"
|
||||
msgstr "删除"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_res_config_settings__editable_form_fields
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Disable form fields after printing PDF form"
|
||||
msgstr "打印 PDF 表单后禁用表单字段"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "显示名称"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Download"
|
||||
msgstr "下载"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Dropdown menu"
|
||||
msgstr "下拉菜单"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban
|
||||
msgid "Edit"
|
||||
msgstr "编辑"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_demo_templates_form
|
||||
msgid "Export"
|
||||
msgstr "导出"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Export templates to the Euro-Office Templates module"
|
||||
msgstr "导出模板至 Euro-Office 模板模块"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Failed to download converted PDF form"
|
||||
msgstr "下载转换后的 PDF 表单失败"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Failed to download form"
|
||||
msgstr "下载表单失败"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Fields"
|
||||
msgstr "字段"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Form fields cannot be filled in manually if they were not automatically filled in\n"
|
||||
" with data from Odoo"
|
||||
msgstr ""
|
||||
"如果字段没有通过 Odoo 数据自动填写,\n"
|
||||
" 则无法手动填写。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Go to the relevant Odoo module (e.g., Sales, Invoices)."
|
||||
msgstr "进入相关的 Odoo 模块(例如,销售、发票)。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban_search
|
||||
msgid "Group By"
|
||||
msgstr "分组依据"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.js:0
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Help"
|
||||
msgstr "帮助"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__hide_file_field
|
||||
msgid "Hide File Field"
|
||||
msgstr "隐藏“文件”字段"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"If you already have a <span class=\"fw-bolder\">prepared\n"
|
||||
" PDF file</span> with fillable fields, you can upload it here"
|
||||
msgstr ""
|
||||
"如果您已有带有可填写字段的 <span class=\"fw-bolder\">PDF 文件</span>,可以在此上传。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-python
|
||||
#: code:addons/eurooffice_odoo_templates/models/eurooffice_odoo_templates.py:0
|
||||
#, python-format
|
||||
msgid "Invalid file format."
|
||||
msgstr "文件格式无效。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Kanban: no action for type: "
|
||||
msgstr "看板:无操作类型:"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "上次修改日期"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "上次更新者"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "上次更新日期"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/widget/eurooffice_templates_tree.xml:0
|
||||
#, python-format
|
||||
msgid "Loading templates..."
|
||||
msgstr "正在加载模板…"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Locate your newly created template and set up the connections between the form\n"
|
||||
" fields in the Euro-Office editor and the corresponding data fields from "
|
||||
"the selected\n"
|
||||
" Odoo model."
|
||||
msgstr ""
|
||||
"找到新建的模板,并在 \n"
|
||||
" Euro-Office 编辑器中将表单字段与所选 \n"
|
||||
" Odoo 模块中的数据字段建立连接。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.actions.act_window,name:eurooffice_odoo_templates.action_eurooffice_demo_templates
|
||||
msgid "Manage Templates"
|
||||
msgstr "管理模板"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.res_config_settings_view_form
|
||||
msgid "Manage templates"
|
||||
msgstr "管理模板"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__mimetype
|
||||
msgid "Mimetype"
|
||||
msgstr "Mimetype"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_model
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_kanban_search
|
||||
msgid "Model"
|
||||
msgstr "类型"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_name
|
||||
msgid "Model Description"
|
||||
msgstr "类型描述"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Model for which the template is being created."
|
||||
msgstr "正在为其创建模板的类型。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Module/ section"
|
||||
msgstr "模块/部分"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "No match found."
|
||||
msgstr "未找到匹配项"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_eurooffice_odoo_demo_templates
|
||||
msgid "Euro-Office Demo Templates"
|
||||
msgstr "Euro-Office 示例模板"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.actions.act_window,name:eurooffice_odoo_templates.action_eurooffice_odoo_templates
|
||||
#: model:ir.model,name:eurooffice_odoo_templates.model_eurooffice_odoo_templates
|
||||
#: model:ir.ui.menu,name:eurooffice_odoo_templates.eurooffice_menu
|
||||
msgid "Euro-Office Templates"
|
||||
msgstr "Euro-Office 模板"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office Templates module"
|
||||
msgstr "Euro-Office 模板模块"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office cannot be reached. Please contact admin."
|
||||
msgstr "无法访问 Euro-Office。请联系管理员。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor.xml:0
|
||||
#, python-format
|
||||
msgid "Euro-Office logo"
|
||||
msgstr "Euro-Office logo"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.module.category,name:eurooffice_odoo_templates.module_category_eurooffice_odoo_templates
|
||||
msgid "Euro-Office templates"
|
||||
msgstr "Euro-Office 模板"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Ok"
|
||||
msgstr "好的"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"On this page, you can create form templates for any Odoo module, such as Invoice, "
|
||||
"Receipt, Employee Leave Form, etc. Just click"
|
||||
msgstr ""
|
||||
"在此页面,您可以为任何 Odoo 模块(如发票、收据、员工请假单等)创建表单模板。只需点击"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Once you've saved the template, return to the Euro-Office Templates list."
|
||||
msgstr "保存模板后,返回 Euro-Office 模板列表。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_controller.xml:0
|
||||
#, python-format
|
||||
msgid "Open Document templates"
|
||||
msgstr "打开文档模板"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Open a record."
|
||||
msgstr "打开记录。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Press the Print button."
|
||||
msgstr "点击打印按钮。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Preview"
|
||||
msgstr "预览"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Print"
|
||||
msgstr "打印"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.js:0
|
||||
#, python-format
|
||||
msgid "Print from template"
|
||||
msgstr "从模板打印"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/form/eurooffice_form_view.js:0
|
||||
#, python-format
|
||||
msgid "Print with Euro-Office"
|
||||
msgstr "使用 Euro-Office 打印"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__template_model_id
|
||||
msgid "Select Model"
|
||||
msgstr "选择类型"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "Select Print with Euro-Office."
|
||||
msgstr "选择使用 Euro-Office 打印。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Select an existing template. Leave the field blank to create a blank template."
|
||||
msgstr "选择现有模板。保留字段空白以创建空白模板"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_demo_templates__selected_templates
|
||||
msgid "Selected Templates"
|
||||
msgstr "已选模板"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Show sub-fields"
|
||||
msgstr "显示子字段"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__name
|
||||
msgid "Template Name"
|
||||
msgstr "模板名称"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Template creation"
|
||||
msgstr "模板创建"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_kanban_record.js:0
|
||||
#, python-format
|
||||
msgid "Template removed"
|
||||
msgstr "模板已移除"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid "Template uploading"
|
||||
msgstr "模板上传"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "The Euro-Office Templates module allows you to create, manage, and use fillable PDF"
|
||||
msgstr "Euro-Office 模板模块允许您创建、管理并使用可填写的 PDF"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This will generate a PDF document with your template, automatically filled with the "
|
||||
"corresponding record's data."
|
||||
msgstr "这将根据您的模板生成一份 PDF 文档,并自动填充相应记录的数据。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "To fill in a template with Odoo data:"
|
||||
msgstr "用 Odoo 数据填写模板:"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:ir.model.fields,field_description:eurooffice_odoo_templates.field_eurooffice_odoo_templates__file
|
||||
msgid "Upload an existing template"
|
||||
msgstr "上传现有模板"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/editor/eurooffice_editor_export_data.xml:0
|
||||
#, python-format
|
||||
msgid "Use a technical name"
|
||||
msgstr "使用技术名称"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model_terms:ir.ui.view,arch_db:eurooffice_odoo_templates.view_eurooffice_form
|
||||
msgid ""
|
||||
"Use this form to create a new fillable PDF template\n"
|
||||
" for your Odoo modules. Start by entering a <span class=\"fw-bolder\">name "
|
||||
"</span> for\n"
|
||||
" your template to easily identify it later in the Euro-Office Templates list."
|
||||
msgstr ""
|
||||
"使用此表单为您的 \n"
|
||||
" Odoo 模块创建新的可填写 PDF 模板。首先输入模板的<span class=\"fw-bolder\">"
|
||||
"名称</span>,\n"
|
||||
" 以便之后在 Euro-Office 模板列表中轻松找到它。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#: model:res.groups,name:eurooffice_odoo_templates.group_eurooffice_odoo_templates_user
|
||||
msgid "User"
|
||||
msgstr "用户"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/dialog/eurooffice_dialog.js:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You don't have any templates yet. Please go to the Euro-Office Templates app to create a "
|
||||
"new template or ask your admin to create it."
|
||||
msgstr "您还没有任何模板。请进入 Euro-Office 模板应用创建新模板,或让管理员创建。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"for any installed Odoo module (e.g., Sales, Invoicing, CRM). These templates can then be "
|
||||
"filled in automatically with real-time data from your Odoo system — no manual input "
|
||||
"needed."
|
||||
msgstr ""
|
||||
"适用于任意已安装的 Odoo 模块(如销售、发票、CRM 等)。这些模板可以自动填充 Odoo 系统的实"
|
||||
"时数据,无需手动输入。"
|
||||
|
||||
#. module: eurooffice_odoo_templates
|
||||
#. odoo-javascript
|
||||
#: code:addons/eurooffice_odoo_templates/static/src/views/kanban/eurooffice_dialog_help.xml:0
|
||||
#, python-format
|
||||
msgid "templates"
|
||||
msgstr "模板,"
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
from . import eurooffice_odoo_templates
|
||||
from . import eurooffice_odoo_demo_templates
|
||||
from . import res_config_settings
|
||||
|
|
@ -0,0 +1,105 @@
|
|||
import base64
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
|
||||
from odoo import api, fields, models
|
||||
from odoo.modules import get_module_path
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class EuroOfficeDemoTemplate(models.Model):
|
||||
_name = "eurooffice.odoo.demo.templates"
|
||||
_description = "Euro-Office Demo Templates"
|
||||
|
||||
selected_templates = fields.Text(string="Selected Templates")
|
||||
|
||||
def _get_template_structure(self):
|
||||
templates_dir = self._get_templates_dir()
|
||||
structure = {}
|
||||
|
||||
for root, _dirs, files in os.walk(templates_dir):
|
||||
if files:
|
||||
model = os.path.basename(root)
|
||||
|
||||
model_exists = bool(self.env["ir.model"].search([("model", "=", model)], limit=1))
|
||||
if not model_exists:
|
||||
continue
|
||||
|
||||
name = self._get_model_name(model)
|
||||
|
||||
rel_path = os.path.relpath(root, templates_dir)
|
||||
|
||||
structure[model] = {
|
||||
"model": model,
|
||||
"name": name,
|
||||
"files": [
|
||||
{
|
||||
"name": f,
|
||||
"path": os.path.join(rel_path, f) if rel_path != "." else f,
|
||||
}
|
||||
for f in files
|
||||
],
|
||||
}
|
||||
|
||||
return structure
|
||||
|
||||
def _get_model_name(self, model_name):
|
||||
model = self.env["ir.model"].search([("model", "=", model_name)], limit=1)
|
||||
return model.name if model else model_name
|
||||
|
||||
def _get_templates_dir(self):
|
||||
module_path = get_module_path(self._module)
|
||||
return os.path.join(module_path, "data", "templates")
|
||||
|
||||
@api.model
|
||||
def get_template_data(self):
|
||||
structure = self._get_template_structure()
|
||||
selected = json.loads(self.selected_templates or "[]")
|
||||
|
||||
return {"structure": structure, "selected": selected}
|
||||
|
||||
def action_save(self):
|
||||
selected_templates = json.loads(self.selected_templates or "[]")
|
||||
if len(selected_templates) == 0:
|
||||
return
|
||||
templates_dir = self._get_templates_dir()
|
||||
template_model = self.env["eurooffice.odoo.templates"]
|
||||
|
||||
for template_path in selected_templates:
|
||||
model_name, filename = template_path.split("/")
|
||||
full_path = os.path.join(templates_dir, template_path)
|
||||
|
||||
try:
|
||||
with open(full_path, "rb") as f:
|
||||
template_data = base64.b64encode(f.read())
|
||||
|
||||
model = self.env["ir.model"].search([("model", "=", model_name)], limit=1)
|
||||
if not model:
|
||||
continue
|
||||
|
||||
template_model.create(
|
||||
{
|
||||
"name": os.path.splitext(filename)[0],
|
||||
"template_model_id": model.id,
|
||||
"file": template_data,
|
||||
"mimetype": "application/pdf",
|
||||
}
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
_logger.error("Failed to process template %s: %s", template_path, str(e))
|
||||
continue
|
||||
|
||||
return {
|
||||
"type": "ir.actions.client",
|
||||
"tag": "soft_reload",
|
||||
}
|
||||
|
||||
def get_template_content(self, template_path):
|
||||
templates_dir = self._get_templates_dir()
|
||||
file_path = os.path.join(templates_dir, template_path)
|
||||
|
||||
with open(file_path, "rb") as f:
|
||||
return f.read()
|
||||
|
|
@ -0,0 +1,344 @@
|
|||
import base64
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import time
|
||||
|
||||
from odoo import _, api, fields, models, tools
|
||||
from odoo.exceptions import UserError
|
||||
from odoo.modules import get_module_path
|
||||
|
||||
from odoo.addons.eurooffice_odoo.controllers.controllers import eurooffice_request
|
||||
from odoo.addons.eurooffice_odoo.utils import config_utils, file_utils, jwt_utils, url_utils
|
||||
from odoo.addons.eurooffice_odoo_templates.utils import pdf_utils
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class EuroOfficeTemplate(models.Model):
|
||||
_name = "eurooffice.odoo.templates"
|
||||
_description = "Euro-Office Templates"
|
||||
|
||||
name = fields.Char(required=True, string="Template Name")
|
||||
template_model_id = fields.Many2one("ir.model", string="Select Model")
|
||||
template_model_name = fields.Char(string="Model Description", compute="_compute_template_model_fields", store=True)
|
||||
template_model_related_name = fields.Char("Model Description", related="template_model_id.name")
|
||||
template_model_model = fields.Char(string=" ", compute="_compute_template_model_fields", store=True)
|
||||
file = fields.Binary(string="Upload an existing template")
|
||||
hide_file_field = fields.Boolean(string="Hide File Field", default=False)
|
||||
attachment_id = fields.Many2one("ir.attachment", readonly=True)
|
||||
mimetype = fields.Char(default="application/pdf")
|
||||
|
||||
@api.onchange("name")
|
||||
def _onchange_name(self):
|
||||
if self.attachment_id:
|
||||
self.attachment_id.name = self.name + ".pdf"
|
||||
self.attachment_id.display_name = self.name
|
||||
|
||||
@api.depends("template_model_id")
|
||||
def _compute_template_model_fields(self):
|
||||
for record in self:
|
||||
if record.template_model_id:
|
||||
record.template_model_name = record.template_model_id.name
|
||||
record.template_model_model = record.template_model_id.model
|
||||
else:
|
||||
record.template_model_name = False
|
||||
record.template_model_model = False
|
||||
|
||||
@api.onchange("file")
|
||||
def _onchange_file(self):
|
||||
if self.file and self.create_date: # if file exist
|
||||
decode_file = base64.b64decode(self.file)
|
||||
is_pdf_form = pdf_utils.is_pdf_form(decode_file)
|
||||
old_datas = self.attachment_id.datas
|
||||
self.attachment_id.write({"datas": self.file})
|
||||
self.file = False
|
||||
|
||||
if not is_pdf_form:
|
||||
self.env.cr.commit()
|
||||
converted_result = self._convert_to_form(self.attachment_id)
|
||||
if converted_result.get("error"):
|
||||
self.attachment_id.write({"datas": old_datas})
|
||||
self.env.cr.commit()
|
||||
raise UserError(converted_result.get("message"))
|
||||
if converted_result.get("fileUrl"):
|
||||
try:
|
||||
response = eurooffice_request(
|
||||
url=converted_result["fileUrl"],
|
||||
method="get",
|
||||
)
|
||||
new_datas = base64.b64encode(response.content)
|
||||
self.attachment_id.write({"datas": new_datas})
|
||||
self.env.cr.commit()
|
||||
except Exception as e:
|
||||
logger.error("Failed to download and update PDF form: %s", str(e))
|
||||
self.attachment_id.write({"datas": old_datas})
|
||||
self.env.cr.commit()
|
||||
raise UserError(_("Failed to download converted PDF form")) from e
|
||||
|
||||
@api.model
|
||||
def _create_demo_data(self):
|
||||
module_path = get_module_path(self._module)
|
||||
templates_dir = os.path.join(module_path, "data", "templates")
|
||||
if not os.path.exists(templates_dir):
|
||||
return
|
||||
|
||||
model_folders = [name for name in os.listdir(templates_dir) if os.path.isdir(os.path.join(templates_dir, name))]
|
||||
|
||||
installed_models = self.env["ir.model"].search([])
|
||||
installed_models_list = [(model.model, model.name) for model in installed_models]
|
||||
|
||||
for model_name in model_folders:
|
||||
if any(model_name == model[0] for model in installed_models_list):
|
||||
templates_path = os.path.join(templates_dir, model_name)
|
||||
templates_name = [
|
||||
name
|
||||
for name in os.listdir(templates_path)
|
||||
if os.path.isfile(os.path.join(templates_path, name)) and name.lower().endswith(".pdf")
|
||||
]
|
||||
for template_name in templates_name:
|
||||
template_path = os.path.join(templates_path, template_name)
|
||||
template = open(template_path, "rb")
|
||||
try:
|
||||
template_data = template.read()
|
||||
template_data = base64.encodebytes(template_data)
|
||||
model = self.env["ir.model"].search([("model", "=", model_name)], limit=1)
|
||||
name = template_name.rstrip(".pdf")
|
||||
self.create(
|
||||
{
|
||||
"name": name,
|
||||
"template_model_id": model.id,
|
||||
"file": template_data,
|
||||
}
|
||||
)
|
||||
finally:
|
||||
template.close()
|
||||
return
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
url = self._context.get("url", None)
|
||||
if isinstance(url, str) and url.startswith(("http://", "https://")) and url.endswith(".pdf"):
|
||||
try:
|
||||
response = eurooffice_request(
|
||||
url=url,
|
||||
method="get",
|
||||
)
|
||||
|
||||
file_content = response.content
|
||||
vals["file"] = base64.b64encode(file_content)
|
||||
except Exception as e:
|
||||
raise UserError(_("Failed to download form")) from e
|
||||
|
||||
is_pdf_form = None
|
||||
if "file" in vals and vals["file"]:
|
||||
try:
|
||||
decode_file = base64.b64decode(vals["file"])
|
||||
is_pdf_form = pdf_utils.is_pdf_form(decode_file)
|
||||
except Exception as e:
|
||||
raise UserError(_("Invalid file format.")) from e
|
||||
else:
|
||||
vals["file"] = base64.encodebytes(file_utils.get_default_file_template(self.env.user.lang, "pdf"))
|
||||
is_pdf_form = True
|
||||
|
||||
model = self.env["ir.model"].search([("id", "=", vals["template_model_id"])], limit=1)
|
||||
vals["template_model_name"] = model.name
|
||||
vals["template_model_model"] = model.model
|
||||
vals["mimetype"] = file_utils.get_mime_by_ext("pdf")
|
||||
|
||||
datas = vals.pop("file")
|
||||
vals.pop("hide_file_field", None)
|
||||
vals.pop("datas", None)
|
||||
|
||||
record = super().create(
|
||||
{
|
||||
"name": vals.get("name", "New Template"),
|
||||
"template_model_id": vals.get("template_model_id"),
|
||||
"mimetype": vals.get("mimetype", "application/pdf"),
|
||||
"template_model_name": vals.get("template_model_name", ""),
|
||||
"template_model_model": vals.get("template_model_model", ""),
|
||||
}
|
||||
)
|
||||
|
||||
attachment = self.env["ir.attachment"].create(
|
||||
{
|
||||
"name": vals.get("name", record.name) + ".pdf",
|
||||
"display_name": vals.get("name", record.name),
|
||||
"mimetype": vals.get("mimetype"),
|
||||
"datas": datas,
|
||||
"res_model": self._name,
|
||||
"res_id": record.id,
|
||||
}
|
||||
)
|
||||
record.attachment_id = attachment.id
|
||||
|
||||
if not is_pdf_form:
|
||||
self.env.cr.commit()
|
||||
converted_result = self._convert_to_form(attachment)
|
||||
if converted_result.get("error"):
|
||||
attachment.unlink()
|
||||
record.unlink()
|
||||
super().unlink()
|
||||
self.env.cr.commit()
|
||||
raise UserError(converted_result.get("message"))
|
||||
if converted_result.get("fileUrl"):
|
||||
try:
|
||||
response = eurooffice_request(
|
||||
url=converted_result["fileUrl"],
|
||||
method="get",
|
||||
)
|
||||
new_datas = base64.b64encode(response.content)
|
||||
attachment.write({"datas": new_datas, "mimetype": vals.get("mimetype")})
|
||||
self.env.cr.commit()
|
||||
except Exception as e:
|
||||
logger.error("Failed to download and update PDF form: %s", str(e))
|
||||
attachment.unlink()
|
||||
record.unlink()
|
||||
super().unlink()
|
||||
self.env.cr.commit()
|
||||
raise UserError(_("Failed to download converted PDF form")) from e
|
||||
return record
|
||||
|
||||
@api.model
|
||||
def _convert_to_form(self, attachment):
|
||||
jwt_header = config_utils.get_jwt_header(self.env)
|
||||
jwt_secret = config_utils.get_jwt_secret(self.env)
|
||||
docserver_url = config_utils.get_doc_server_public_url(self.env)
|
||||
docserver_url = url_utils.replace_public_url_to_internal(self.env, docserver_url)
|
||||
|
||||
odoo_url = config_utils.get_base_or_odoo_url(self.env)
|
||||
internal_jwt_secret = config_utils.get_internal_jwt_secret(self.env)
|
||||
|
||||
oo_security_token = jwt_utils.encode_payload(self.env, {"id": self.env.user.id}, internal_jwt_secret)
|
||||
oo_security_token = (
|
||||
oo_security_token.decode("utf-8") if isinstance(oo_security_token, bytes) else oo_security_token
|
||||
)
|
||||
|
||||
conversion_url = os.path.join(docserver_url, "ConvertService.ashx")
|
||||
|
||||
payload = {
|
||||
"url": f"{odoo_url}eurooffice/template/download/{attachment.id}?oo_security_token={oo_security_token}",
|
||||
"key": int(time.time()),
|
||||
"filetype": "pdf",
|
||||
"outputtype": "pdf",
|
||||
"pdf": {
|
||||
"form": True,
|
||||
},
|
||||
}
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"Accept": "application/json",
|
||||
}
|
||||
|
||||
if bool(jwt_secret):
|
||||
payload = {"payload": payload}
|
||||
token = jwt_utils.encode_payload(self.env, payload, jwt_secret)
|
||||
headers[jwt_header] = "Bearer " + token
|
||||
payload["token"] = token
|
||||
|
||||
try:
|
||||
response = eurooffice_request(
|
||||
url=conversion_url,
|
||||
method="get",
|
||||
opts={
|
||||
"data": json.dumps(payload),
|
||||
"headers": headers,
|
||||
},
|
||||
)
|
||||
if response.status_code == 200:
|
||||
response_json = response.json()
|
||||
if "error" in response_json:
|
||||
return {
|
||||
"error": response_json.get("error"),
|
||||
"message": self._get_conversion_error_message(response_json.get("error")),
|
||||
}
|
||||
else:
|
||||
return response_json
|
||||
else:
|
||||
return {
|
||||
"error": response.status_code,
|
||||
"message": f"Document conversion service returned status {response.status_code}",
|
||||
}
|
||||
except Exception:
|
||||
return {
|
||||
"error": 1,
|
||||
"message": "Document conversion service cannot be reached",
|
||||
}
|
||||
|
||||
def _get_conversion_error_message(self, error_code):
|
||||
error_dictionary = {
|
||||
-1: "Unknown error",
|
||||
-2: "Conversion timeout error",
|
||||
-3: "Conversion error",
|
||||
-4: "Error while downloading the document file to be converted",
|
||||
-5: "Incorrect password",
|
||||
-6: "Error while accessing the conversion result database",
|
||||
-7: "Input error",
|
||||
-8: "Invalid token",
|
||||
}
|
||||
try:
|
||||
return error_dictionary[error_code]
|
||||
except Exception:
|
||||
return "Undefined error code"
|
||||
|
||||
@api.model
|
||||
def get_fields_for_model(self, model, prefix="", parent_name="", exclude=None):
|
||||
try:
|
||||
m = self.env[model]
|
||||
fields = m.fields_get()
|
||||
except Exception:
|
||||
return []
|
||||
|
||||
fields = sorted(fields.items(), key=lambda field: tools.ustr(field[1].get("string", "").lower()))
|
||||
records = []
|
||||
for field_name, field in fields:
|
||||
if exclude and field_name in exclude:
|
||||
continue
|
||||
if field.get("type") in ("properties", "properties_definition", "html", "json"):
|
||||
continue
|
||||
if not field.get("exportable", True):
|
||||
continue
|
||||
|
||||
ident = prefix + ("/" if prefix else "") + field_name
|
||||
val = ident
|
||||
name = parent_name + (parent_name and "/" or "") + field["string"]
|
||||
record = {
|
||||
"id": ident,
|
||||
"string": name,
|
||||
"value": val,
|
||||
"children": False,
|
||||
"field_type": field.get("type"),
|
||||
"required": field.get("required"),
|
||||
"relation_field": field.get("relation_field"),
|
||||
}
|
||||
records.append(record)
|
||||
|
||||
if len(ident.split("/")) < 4 and "relation" in field:
|
||||
ref = field.pop("relation")
|
||||
record["value"] += "/id"
|
||||
record["params"] = {"model": ref, "prefix": ident, "name": name}
|
||||
record["children"] = True
|
||||
|
||||
return records
|
||||
|
||||
@api.model
|
||||
def update_relationship(self, template_model_id, model):
|
||||
"""
|
||||
If the module was uninstalled and reinstalled, its model id may have changed.
|
||||
Update the model id in the template record
|
||||
"""
|
||||
if not template_model_id or not model:
|
||||
return
|
||||
|
||||
model_id = self.sudo().env["ir.model"].search([("model", "=", model)]).id
|
||||
if not model_id:
|
||||
return
|
||||
|
||||
record = self.sudo().env["eurooffice.odoo.templates"].browse(template_model_id)
|
||||
if not record:
|
||||
return
|
||||
|
||||
if record.template_model_id != model_id:
|
||||
record.template_model_id = model_id
|
||||
return
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
from odoo import fields, models
|
||||
|
||||
from odoo.addons.eurooffice_odoo_templates.utils import config_utils
|
||||
|
||||
|
||||
class ResConfigSettings(models.TransientModel):
|
||||
_inherit = "res.config.settings"
|
||||
editable_form_fields = fields.Boolean("Disable form fields after printing PDF form")
|
||||
|
||||
def set_values(self):
|
||||
res = super().set_values()
|
||||
previous_disable_form_fields = config_utils.get_editable_form_fields(self.env)
|
||||
if previous_disable_form_fields != self.editable_form_fields:
|
||||
config_utils.set_editable_form_fields(self.env, self.editable_form_fields)
|
||||
return res
|
||||
|
||||
def get_values(self):
|
||||
res = super().get_values()
|
||||
editable_form_fields = config_utils.get_editable_form_fields(self.env)
|
||||
res.update(editable_form_fields=editable_form_fields)
|
||||
return res
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
[build-system]
|
||||
requires = ["whool"]
|
||||
build-backend = "whool.buildapi"
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
<?xml version="1.0" ?>
|
||||
<odoo>
|
||||
<record id="module_category_eurooffice_odoo_templates" model="ir.module.category">
|
||||
<field name="name">Euro-Office templates</field>
|
||||
<field name="sequence">30</field>
|
||||
</record>
|
||||
|
||||
<!-- User role with read-only access -->
|
||||
<record id="group_eurooffice_odoo_templates_user" model="res.groups">
|
||||
<field name="name">User</field>
|
||||
<field name="category_id" ref="module_category_eurooffice_odoo_templates" />
|
||||
<field name="comment">Can open Euro-Office templates for viewing and print them.</field>
|
||||
</record>
|
||||
|
||||
<!-- Administrator role with full access -->
|
||||
<record id="group_eurooffice_odoo_templates_admin" model="res.groups">
|
||||
<field name="name">Administrator</field>
|
||||
<field name="category_id" ref="module_category_eurooffice_odoo_templates" />
|
||||
<field name="implied_ids" eval="[(4, ref('group_eurooffice_odoo_templates_user'))]" />
|
||||
<field name="comment">Can open, create, edit and print Euro-Office templates.</field>
|
||||
</record>
|
||||
|
||||
<record id="base.user_root" model="res.users">
|
||||
<field name="groups_id" eval="[(4, ref('eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin'))]" />
|
||||
</record>
|
||||
|
||||
<record id="base.default_user" model="res.users">
|
||||
<field name="groups_id" eval="[(4, ref('eurooffice_odoo_templates.group_eurooffice_odoo_templates_user'))]" />
|
||||
</record>
|
||||
|
||||
<record id="base.user_admin" model="res.users">
|
||||
<field name="groups_id" eval="[(4, ref('eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin'))]" />
|
||||
</record>
|
||||
|
||||
<!-- Access control rules -->
|
||||
<record id="access_eurooffice_odoo_templates_user" model="ir.model.access">
|
||||
<field name="name">User Access</field>
|
||||
<field name="model_id" ref="eurooffice_odoo_templates.model_eurooffice_odoo_templates" />
|
||||
<field name="group_id" ref="group_eurooffice_odoo_templates_user" />
|
||||
<field name="perm_read" eval="1" />
|
||||
<field name="perm_write" eval="0" />
|
||||
<field name="perm_create" eval="0" />
|
||||
<field name="perm_unlink" eval="0" />
|
||||
</record>
|
||||
|
||||
<record id="access_eurooffice_odoo_templates_admin" model="ir.model.access">
|
||||
<field name="name">Administrator Access</field>
|
||||
<field name="model_id" ref="eurooffice_odoo_templates.model_eurooffice_odoo_templates" />
|
||||
<field name="group_id" ref="group_eurooffice_odoo_templates_admin" />
|
||||
<field name="perm_read" eval="1" />
|
||||
<field name="perm_write" eval="1" />
|
||||
<field name="perm_create" eval="1" />
|
||||
<field name="perm_unlink" eval="1" />
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_eurooffice_odoo_templates_user,EuroOffice Template User Access,eurooffice_odoo_templates.model_eurooffice_odoo_templates,group_eurooffice_odoo_templates_user,1,0,0,0
|
||||
access_eurooffice_odoo_templates_admin,EuroOffice Template Admin Access,eurooffice_odoo_templates.model_eurooffice_odoo_templates,group_eurooffice_odoo_templates_admin,1,1,1,1
|
||||
access_eurooffice_odoo_templates,EuroOffice Template,eurooffice_odoo_templates.model_eurooffice_odoo_templates,,0,0,0,0
|
||||
access_eurooffice_demo_templates,eurooffice.demo.templates.access,model_eurooffice_odoo_demo_templates,base.group_system,1,1,1,1
|
||||
|
|
After Width: | Height: | Size: 154 KiB |
|
After Width: | Height: | Size: 141 KiB |
|
After Width: | Height: | Size: 422 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
|
|
@ -0,0 +1,23 @@
|
|||
<svg width="144" height="144" viewBox="0 0 144 144" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_1648_12465)">
|
||||
<rect width="144" height="144" rx="8" fill="#F5F5F5"/>
|
||||
<path opacity="0.12" d="M24.6858 31.8856L41 119L96.5 119L117 109L123.419 112.105L43.3679 192.46L-46.2607 102.831L24.6858 31.8856Z" fill="#808080"/>
|
||||
<path d="M25 34C25 32.3431 26.3431 31 28 31H37V113H28C26.3431 113 25 111.657 25 110V34Z" fill="white"/>
|
||||
<path d="M47 31H28C26.3431 31 25 32.3431 25 34V110C25 111.657 26.3431 113 28 113H47" stroke="#666666" stroke-width="4" stroke-linecap="round"/>
|
||||
<path d="M37 30C37 28.3431 38.3431 27 40 27H83.5882L109 52.0909V116C109 117.657 107.657 119 106 119H40C38.3431 119 37 117.657 37 116V30Z" fill="white"/>
|
||||
<path d="M78.1765 117H40C38.3431 117 37 115.657 37 114V30C37 28.3431 38.3431 27 40 27H82.2941L107 51.5455V76.0909" stroke="#666666" stroke-width="4" stroke-linecap="round"/>
|
||||
<path d="M82.2856 26.7429L106.971 51.4286H85.2856C83.6288 51.4286 82.2856 50.0855 82.2856 48.4286V26.7429Z" fill="#666666"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M102.602 120.161L87.3729 113.121C86.0756 112.507 86.0756 111.557 87.3729 110.998L92.6747 108.54L102.545 113.121C103.843 113.736 105.929 113.736 107.17 113.121L117.041 108.54L122.343 110.998C123.64 111.613 123.64 112.562 122.343 113.121L107.114 120.161C105.929 120.72 103.843 120.72 102.602 120.161Z" fill="#FF6F3D"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M102.602 111.501L87.3729 104.461C86.0756 103.846 86.0756 102.896 87.3729 102.338L92.5619 99.9351L102.602 104.573C103.899 105.187 105.986 105.187 107.227 104.573L117.266 99.9351L122.456 102.338C123.753 102.952 123.753 103.902 122.456 104.461L107.227 111.501C105.929 112.115 103.843 112.115 102.602 111.501Z" fill="#95C038"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M102.602 103.064L87.3729 96.024C86.0756 95.4094 86.0756 94.4596 87.3729 93.9008L102.602 86.8609C103.899 86.2463 105.986 86.2463 107.227 86.8609L122.456 93.9008C123.753 94.5154 123.753 95.4653 122.456 96.024L107.227 103.064C105.929 103.623 103.843 103.623 102.602 103.064Z" fill="#5DC0E8"/>
|
||||
<path d="M78 66C78 64.8954 78.9514 64 80.125 64H92.875C94.0486 64 95 64.8954 95 66C95 67.1046 94.0486 68 92.875 68H80.125C78.9514 68 78 67.1046 78 66Z" fill="#666666"/>
|
||||
<path d="M49 78C49 76.8954 49.9361 76 51.0909 76H92.9091C94.0639 76 95 76.8954 95 78C95 79.1046 94.0639 80 92.9091 80H51.0909C49.9361 80 49 79.1046 49 78Z" fill="#666666"/>
|
||||
<path d="M49 90C49 88.8954 49.9253 88 51.0667 88H77.9333C79.0747 88 80 88.8954 80 90C80 91.1046 79.0747 92 77.9333 92H51.0667C49.9253 92 49 91.1046 49 90Z" fill="#666666"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M66 51H53V64H66V51ZM53.2 47C50.8804 47 49 48.8804 49 51.2V63.8C49 66.1196 50.8804 68 53.2 68H65.8C68.1196 68 70 66.1196 70 63.8V51.2C70 48.8804 68.1196 47 65.8 47H53.2Z" fill="#666666"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_1648_12465">
|
||||
<rect width="144" height="144" rx="8" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
|
|
@ -0,0 +1,145 @@
|
|||
<section class="oe_container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2 class="oe_slogan">
|
||||
Automate form creation with inserting fields from Odoo in templates
|
||||
</h2>
|
||||
<div class="oe_span12">
|
||||
<span class="text-center">
|
||||
<p class="oe_mt16">
|
||||
Work with fillable templates in Odoo using Euro-Office. Create templates based
|
||||
on the data and fields available in Odoo, fill them out and print with several
|
||||
clicks.
|
||||
</p>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container mt-5">
|
||||
<div class="oe_row">
|
||||
<div class="oe_span12">
|
||||
<h6>Edit the existing templates</h6>
|
||||
</div>
|
||||
<div class="oe_span12">
|
||||
<p>
|
||||
<b>Please note</b>: Euro-Office demo templates will only be added to the Odoo
|
||||
modules that are already installed. That's why we strongly recommend installing
|
||||
Euro-Office Templates after installing other Odoo modules such as CRM, Sales,
|
||||
Calendar, etc.
|
||||
</p>
|
||||
<p>
|
||||
Launch the Euro-Office Templates app to open the page with the existing form
|
||||
templates. Each template has a tag indicating which Odoo module the template was
|
||||
created for.
|
||||
</p>
|
||||
<p>
|
||||
When you click the Edit button in the file context menu, a form template will
|
||||
open in the Euro-Office editor. The left panel dynamically displays the fields
|
||||
from Odoo that can be linked to the Euro-Office form fields. The Odoo field ID is
|
||||
written in the Key field of the editor in the right panel.
|
||||
</p>
|
||||
</div>
|
||||
<div class="oe_span12">
|
||||
<div class="oe_demo oe_screenshot">
|
||||
<img src="edit_templates.png" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container mt-5">
|
||||
<div class="oe_row">
|
||||
<div class="oe_span12">
|
||||
<h6>Create new templates</h6>
|
||||
</div>
|
||||
<div class="oe_span12">
|
||||
<p>
|
||||
To create a new template, click the Create&Upload button. In the pop-up window,
|
||||
specify the template name and select the Odoo module to which the template
|
||||
belongs.
|
||||
</p>
|
||||
</div>
|
||||
<div class="oe_span12">
|
||||
<div class="oe_demo oe_screenshot">
|
||||
<img src="create_templates.png" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_span12">
|
||||
<p class="oe_mt8">
|
||||
You can upload any existing form template from your local drive (using the
|
||||
Upload your file button), or save a new blank template (using the Create button
|
||||
in the upper right corner).
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container mt-5">
|
||||
<div class="oe_row">
|
||||
<div class="oe_span12">
|
||||
<h6>Work with ready templates</h6>
|
||||
</div>
|
||||
<div class="oe_span12">
|
||||
<p>
|
||||
Several standard templates are available when installing the Euro-Office Templates app, but certain Odoo modules
|
||||
must be installed first. Without these modules, the templates won't appear in the Euro-Office Templates module.
|
||||
After installing the required modules, you can export templates by navigating to Settings -> Euro-Office ->
|
||||
Manage Templates. Select the templates you want in the pop-up window and click Export to add them to the
|
||||
Euro-Office Templates module.
|
||||
</p>
|
||||
</div>
|
||||
<div class="oe_span12">
|
||||
<div class="oe_demo oe_screenshot">
|
||||
<img src="work_with_templates.png" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_span12">
|
||||
<p class="oe_mt8">
|
||||
Next, a window appears with a list of templates available for this section.
|
||||
Select the required template so that it is filled with the data taken from the
|
||||
linked Odoo page (deal, employee card, etc.).
|
||||
</p>
|
||||
</div>
|
||||
<div class="oe_span12">
|
||||
<p class="oe_mt8">
|
||||
You can also preview the form template a user wants to fill out by clicking the Preview button in the form
|
||||
templates list. This will display a preview of the template, but no data from Odoo will be included at this
|
||||
stage.
|
||||
</p>
|
||||
</div>
|
||||
<div class="oe_span12">
|
||||
<p class="oe_mt8">
|
||||
To print multiple records using a template, select the desired items in the list view, then click Action ->
|
||||
Print with Euro-Office. In the pop-up window, click Print, and a ZIP file containing the filled PDFs will be
|
||||
downloaded to your device.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container mt-5">
|
||||
<div class="oe_row">
|
||||
<div class="oe_span12">
|
||||
<h6>Access rights</h6>
|
||||
</div>
|
||||
<div class="oe_span12">
|
||||
<p>There are two types of roles for this app:</p>
|
||||
<ul>
|
||||
<li>
|
||||
<b>User:</b> can print templates and open them for viewing. Users cannot
|
||||
create new templates and cannot edit the current ones.
|
||||
</li>
|
||||
<li><b>Administrator:</b> can open, create, edit and print templates.</li>
|
||||
</ul>
|
||||
<p>
|
||||
The role type is specified in the user profile. By default, all users are
|
||||
assigned the User role.
|
||||
</p>
|
||||
</div>
|
||||
<div class="oe_span12">
|
||||
<div class="oe_demo oe_screenshot">
|
||||
<img src="access_rights.png" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
After Width: | Height: | Size: 188 KiB |
|
After Width: | Height: | Size: 152 KiB |
|
|
@ -0,0 +1,4 @@
|
|||
.o_eurooffice_kanban_record_selected {
|
||||
border-color: #017e84;
|
||||
box-shadow: 0 0 0 2px #017e84;
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
.o-eurooffice-template {
|
||||
display: flex;
|
||||
|
||||
.o-eurooffice-template-fields {
|
||||
width: 320px;
|
||||
height: 100%;
|
||||
background-color: var(--body-bg) !important;
|
||||
font-family: Arial !important;
|
||||
font-weight: 400 !important;
|
||||
font-size: 11px !important;
|
||||
line-height: 14px !important;
|
||||
letter-spacing: 2% !important;
|
||||
|
||||
.o-eurooffice-fields-title {
|
||||
display: flex;
|
||||
height: 54px;
|
||||
padding: 0 12px;
|
||||
align-items: center;
|
||||
|
||||
font-family: Arial;
|
||||
font-weight: 700;
|
||||
font-size: 11px;
|
||||
line-height: 16px;
|
||||
letter-spacing: 2%;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.o-eurooffice-template-separator {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
flex-shrink: 0;
|
||||
border-color: var(--gray-300);
|
||||
}
|
||||
}
|
||||
|
||||
.o-eurooffice-template-editor {
|
||||
width: calc(100% - 320px);
|
||||
height: 100%;
|
||||
|
||||
iframe {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,138 @@
|
|||
.o-eurooffice-fields-options {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
row-gap: 12px;
|
||||
padding: 12px 16px;
|
||||
justify-content: center;
|
||||
|
||||
.o-eurooffice-options-help {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.o-eurooffice-options-title {
|
||||
align-items: center;
|
||||
|
||||
font-family: Arial;
|
||||
font-weight: 700;
|
||||
font-size: 12px;
|
||||
line-height: 16px;
|
||||
letter-spacing: 2%;
|
||||
}
|
||||
|
||||
.o-eurooffice-options-search {
|
||||
position: relative;
|
||||
background-color: var(--o-cc1-btn-primary-text);
|
||||
|
||||
.o-eurooffice-search-field {
|
||||
position: relative;
|
||||
padding: 0 !important;
|
||||
border: 1px solid var(--gray-300) !important;
|
||||
|
||||
.o-eurooffice-search-input {
|
||||
width: 100% !important;
|
||||
height: 24px;
|
||||
font-family: Arial;
|
||||
font-weight: 400;
|
||||
font-size: 11px;
|
||||
line-height: 16px;
|
||||
letter-spacing: 2%;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
button {
|
||||
display: flex;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
align-items: center;
|
||||
border: none;
|
||||
height: 100%;
|
||||
background-color: transparent;
|
||||
|
||||
svg {
|
||||
path {
|
||||
fill: var(--gray-900);
|
||||
}
|
||||
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.o-eurooffice-options-technical-name {
|
||||
.o-checkbox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
column-gap: 6px;
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
input {
|
||||
margin: 0 !important;
|
||||
border: 1px solid var(--gray-300) !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.o-eurooffice-fields-list {
|
||||
height: calc(100% - 248px);
|
||||
margin: 0 16px 16px 16px;
|
||||
padding-right: 4px;
|
||||
overflow-y: scroll;
|
||||
user-select: none;
|
||||
scrollbar-width: thin;
|
||||
|
||||
h3 {
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.o-eurooffice-list-field {
|
||||
cursor: pointer;
|
||||
|
||||
.o-eurooffice-field {
|
||||
display: flex;
|
||||
position: relative;
|
||||
min-height: 22px;
|
||||
|
||||
.o-eurooffice-field-caret {
|
||||
display: flex;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translate(25%, -50%);
|
||||
font-size: 0.875em;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.o-eurooffice-field-title {
|
||||
padding-left: 12px;
|
||||
align-content: center;
|
||||
}
|
||||
|
||||
&:hover:not(.o-eurooffice-field_expanded) {
|
||||
background-color: var(--gray-200) !important;
|
||||
}
|
||||
|
||||
&.o-eurooffice-field_expanded {
|
||||
padding: 0 !important;
|
||||
border: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
&.o-eurooffice-list-field_expanded {
|
||||
/*border-bottom: 1px solid grey;*/
|
||||
}
|
||||
|
||||
.o-eurooffice-template-separator {
|
||||
margin: 2px 0px;
|
||||
}
|
||||
}
|
||||
|
||||
.o-eurooffice-list-field_children {
|
||||
padding-left: 18px !important;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
.oe_eurooffice_kanban_bottom_right {
|
||||
.o_m2o_avatar {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
.o-eurooffice-templates-tree {
|
||||
.o-eurooffice-tree-list {
|
||||
.o-eurooffice-list-item {
|
||||
.o-eurooffice-item-body {
|
||||
.o-eurooffice-body-template {
|
||||
label {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
column-gap: 6px;
|
||||
|
||||
.o-eurooffice-template-checkbox {
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
button {
|
||||
padding: 0 !important;
|
||||
border: none !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,170 @@
|
|||
/** @odoo-module **/
|
||||
import { EuroofficePreview } from "@eurooffice_odoo/views/preview/eurooffice_preview"
|
||||
import { AlertDialog } from "@web/core/confirmation_dialog/confirmation_dialog"
|
||||
import { Dialog } from "@web/core/dialog/dialog"
|
||||
import { useHotkey } from "@web/core/hotkeys/hotkey_hook"
|
||||
import { download } from "@web/core/network/download"
|
||||
import { Pager } from "@web/core/pager/pager"
|
||||
import { useService } from "@web/core/utils/hooks"
|
||||
import { SearchModel } from "@web/search/search_model"
|
||||
import { getDefaultConfig } from "@web/views/view"
|
||||
import { DropPrevious } from "web.concurrency"
|
||||
|
||||
const { Component, useState, useSubEnv, useChildSubEnv, onWillStart } = owl
|
||||
|
||||
export class TemplateDialog extends Component {
|
||||
setup() {
|
||||
this.orm = useService("orm")
|
||||
this.rpc = useService("rpc")
|
||||
this.viewService = useService("view")
|
||||
this.notificationService = useService("notification")
|
||||
this.dialog = useService("dialog")
|
||||
|
||||
this.data = this.env.dialogData
|
||||
useHotkey("escape", () => this.data.close())
|
||||
|
||||
this.dialogTitle = this.env._t("Print from template")
|
||||
this.limit = 8
|
||||
this.state = useState({
|
||||
currentOffset: 0,
|
||||
isOpen: true,
|
||||
isProcessing: false,
|
||||
selectedTemplateId: null,
|
||||
templates: [],
|
||||
totalTemplates: 0,
|
||||
})
|
||||
|
||||
useSubEnv({ config: { ...getDefaultConfig() } })
|
||||
|
||||
this.model = new SearchModel(this.env, {
|
||||
orm: this.orm,
|
||||
user: useService("user"),
|
||||
view: useService("view"),
|
||||
})
|
||||
|
||||
useChildSubEnv({ searchModel: this.model })
|
||||
|
||||
this.dp = new DropPrevious()
|
||||
|
||||
onWillStart(async () => {
|
||||
const { resModel } = this.props
|
||||
const views = await this.viewService.loadViews({
|
||||
context: this.props.context,
|
||||
resModel: "eurooffice.odoo.templates",
|
||||
views: [[false, "search"]],
|
||||
})
|
||||
await this.model.load({
|
||||
context: this.props.context,
|
||||
domain: [["template_model_model", "=", resModel]],
|
||||
orderBy: "id",
|
||||
resModel: "eurooffice.odoo.templates",
|
||||
searchMenuTypes: [],
|
||||
searchViewArch: views.views.search.arch,
|
||||
searchViewFields: views.fields,
|
||||
searchViewId: views.views.search.id,
|
||||
})
|
||||
await this.fetchTemplates()
|
||||
})
|
||||
}
|
||||
|
||||
async createTemplate() {
|
||||
// TODO: create template from dialog
|
||||
}
|
||||
|
||||
async fetchTemplates(offset = 0) {
|
||||
const { domain, context } = this.model
|
||||
const { records, length } = await this.dp.add(
|
||||
this.rpc("/web/dataset/search_read", {
|
||||
context,
|
||||
domain,
|
||||
fields: ["display_name", "name", "create_date", "create_uid", "attachment_id", "mimetype"],
|
||||
limit: this.limit,
|
||||
model: "eurooffice.odoo.templates",
|
||||
offset,
|
||||
sort: "id",
|
||||
}),
|
||||
)
|
||||
if (!length) {
|
||||
this.dialog.add(AlertDialog, {
|
||||
body: this.env._t(
|
||||
// eslint-disable-next-line @stylistic/max-len
|
||||
"You don't have any templates yet. Please go to the Euro-Office Templates app to create a new template or ask your admin to create it.",
|
||||
),
|
||||
title: this.dialogTitle,
|
||||
})
|
||||
return this.data.close()
|
||||
}
|
||||
this.state.templates = records
|
||||
this.state.totalTemplates = length
|
||||
}
|
||||
|
||||
async fillTemplate() {
|
||||
if (this.state.isProcessing) {
|
||||
return
|
||||
}
|
||||
this.state.isProcessing = true
|
||||
|
||||
const templateId = this.state.selectedTemplateId
|
||||
const { resId } = this.props
|
||||
|
||||
this.env.services.ui.block()
|
||||
try {
|
||||
await download({
|
||||
data: {
|
||||
record_ids: resId,
|
||||
template_id: templateId,
|
||||
},
|
||||
url: "/eurooffice/template/fill",
|
||||
})
|
||||
} finally {
|
||||
this.env.services.ui.unblock()
|
||||
}
|
||||
this.env.services.ui.unblock()
|
||||
this.data.close()
|
||||
}
|
||||
|
||||
selectTemplate(templateId) {
|
||||
this.state.selectedTemplateId = templateId
|
||||
}
|
||||
|
||||
isSelected(templateId) {
|
||||
return this.state.selectedTemplateId === templateId
|
||||
}
|
||||
|
||||
onPagerChange({ offset }) {
|
||||
this.state.currentOffset = offset
|
||||
this.state.selectedTemplateId = null
|
||||
return this.fetchTemplates(this.state.currentOffset)
|
||||
}
|
||||
|
||||
isButtonDisabled() {
|
||||
return this.state.isProcessing || this.state.selectedTemplateId === null
|
||||
}
|
||||
|
||||
previewTemplate() {
|
||||
const t = this.state.templates.find((item) => item.id === this.state.selectedTemplateId)
|
||||
const url = `/eurooffice/file/content/${t.attachment_id[0]}`
|
||||
|
||||
this.env.services.dialog.add(
|
||||
EuroofficePreview,
|
||||
{
|
||||
close: () => {
|
||||
this.env.services.dialog.close()
|
||||
},
|
||||
title: t.display_name + ".pdf",
|
||||
url: url,
|
||||
},
|
||||
{
|
||||
onClose: () => {
|
||||
return
|
||||
},
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
TemplateDialog.template = "eurooffice_odoo_templates.TemplateDialog"
|
||||
TemplateDialog.components = {
|
||||
Dialog,
|
||||
Pager,
|
||||
}
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates xml:space="preserve">
|
||||
<t t-name="eurooffice_odoo_templates.TemplateDialog" owl="1">
|
||||
<div>
|
||||
<Dialog
|
||||
t-if="state.isOpen"
|
||||
title="dialogTitle"
|
||||
contentClass="'o-spreadsheet-templates-dialog'"
|
||||
footer="true"
|
||||
modalRef="modalRef"
|
||||
>
|
||||
<div class="o-pager">
|
||||
<Pager
|
||||
t-if="state.totalTemplates"
|
||||
total="state.totalTemplates"
|
||||
offset="state.currentOffset"
|
||||
limit="limit"
|
||||
isEditable="false"
|
||||
onUpdate.bind="onPagerChange"
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
class="o_kanban_renderer o_renderer d-flex o_kanban_ungrouped align-content-start flex-wrap justify-content-start"
|
||||
>
|
||||
<t t-foreach="state.templates" t-as="template" t-key="template.id">
|
||||
<div
|
||||
class="o_kanban_record d-flex flex-grow-1 flex-md-shrink-1 flex-shrink-0"
|
||||
tabindex="0"
|
||||
t-att-class="isSelected(template.id) ? 'o_eurooffice_kanban_record_selected': ''"
|
||||
t-on-focus="() => this.selectTemplate(template.id)"
|
||||
t-on-dblclick="fillTemplate"
|
||||
>
|
||||
<div class="oe_kanban_global_area oe_kanban_global_click o_kanban_attachment">
|
||||
<div class="o_kanban_image">
|
||||
<div class="o_kanban_image_wrapper">
|
||||
<div class="o_image o_image_thumbnail" t-att-data-mimetype="template.mimetype" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="o_kanban_details">
|
||||
<div class="o_kanban_details_wrapper">
|
||||
<div class="o_kanban_record_title" t-att-title="template.name">
|
||||
<span class="o_text_overflow" t-esc="template.name" />
|
||||
</div>
|
||||
|
||||
<div class="o_kanban_record_body">
|
||||
<samp class="text-muted" />
|
||||
</div>
|
||||
|
||||
<div class="o_kanban_record_bottom">
|
||||
<time class="oe_kanban_bottom_left">
|
||||
<div name="create_date" class="o_field_widget o_readonly_modifier o_field_date">
|
||||
<span t-esc="template.create_date" />
|
||||
</div>
|
||||
</time>
|
||||
<div class="oe_kanban_bottom_right">
|
||||
<div
|
||||
name="create_uid"
|
||||
class="o_field_widget o_readonly_modifier o_field_many2one_avatar_user o_field_many2one_avatar"
|
||||
>
|
||||
<div class="d-flex" t-att-data-tooltip="template.create_uid[1]">
|
||||
<span class="o_m2o_avatar">
|
||||
<img t-att-src="'/web/image/res.users/' + template.create_uid[0] + '/avatar_128'" />
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
<t t-set-slot="footer">
|
||||
<button class="btn btn-primary o-template-fill" t-att-disabled="isButtonDisabled()" t-on-click="fillTemplate">
|
||||
<t>Print</t>
|
||||
</button>
|
||||
<button class="btn btn-secondary" t-att-disabled="isButtonDisabled()" t-on-click="previewTemplate">
|
||||
<t>Preview</t>
|
||||
</button>
|
||||
<button class="btn btn-secondary" t-on-click="data.close">
|
||||
<t>Cancel</t>
|
||||
</button>
|
||||
</t>
|
||||
</Dialog>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
|
|
@ -0,0 +1,169 @@
|
|||
/** @odoo-module **/
|
||||
|
||||
import { registry } from "@web/core/registry"
|
||||
import { useService } from "@web/core/utils/hooks"
|
||||
import { _t } from "web.core"
|
||||
import { ExportData } from "./eurooffice_editor_export_data"
|
||||
|
||||
const { Component, useState, onMounted, onWillUnmount } = owl
|
||||
|
||||
class TemplateEditor extends Component {
|
||||
setup() {
|
||||
super.setup()
|
||||
this.orm = useService("orm")
|
||||
this.rpc = useService("rpc")
|
||||
this.ExportData = ExportData
|
||||
this.notificationService = useService("notification")
|
||||
this.cookies = useService("cookie")
|
||||
this.router = useService("router")
|
||||
|
||||
this.state = useState({ resModel: "" })
|
||||
|
||||
this.config = null
|
||||
this.docApiJS = null
|
||||
this.documentReady = false
|
||||
this.hasLicense = false
|
||||
this.script = null
|
||||
this.unchangedModels = {}
|
||||
|
||||
this.env.bus.on("eurooffice-template-create-form", this, (field) => this.createForm(field))
|
||||
|
||||
onMounted(async () => {
|
||||
try {
|
||||
const attachment_id = this.props.action.params.attachment_id
|
||||
const template_model_model = this.props.action.params.template_model_model
|
||||
const id = this.props.action.params.id
|
||||
this.router.pushState({
|
||||
attachment_id: this.props.action.params.attachment_id,
|
||||
id: this.props.action.params.id,
|
||||
template_model_model: this.props.action.params.template_model_model,
|
||||
})
|
||||
|
||||
await this.orm.call("eurooffice.odoo.templates", "update_relationship", [id, template_model_model])
|
||||
|
||||
const response = await this.rpc("/eurooffice/template/editor", { attachment_id: attachment_id })
|
||||
const config = JSON.parse(response.editorConfig)
|
||||
config.events = {
|
||||
onDocumentReady: () => {
|
||||
if (window.docEditor && "createConnector" in window.docEditor) {
|
||||
window.connector = docEditor.createConnector()
|
||||
window.connector.executeMethod("GetVersion", [], () => {
|
||||
this.hasLicense = true
|
||||
})
|
||||
}
|
||||
// Render fields
|
||||
this.state.resModel = template_model_model
|
||||
this.documentReady = true
|
||||
},
|
||||
}
|
||||
const theme = this.cookies.current.color_scheme
|
||||
config.editorConfig.customization = {
|
||||
...config.editorConfig.customization,
|
||||
uiTheme: theme ? `default-${theme}` : "default-light",
|
||||
}
|
||||
this.config = config
|
||||
|
||||
this.docApiJS = response.docApiJS
|
||||
if (!window.DocsAPI) {
|
||||
await this.loadDocsAPI(this.docApiJS)
|
||||
}
|
||||
if (window.DocsAPI) {
|
||||
window.docEditor = new DocsAPI.DocEditor("doceditor", this.config)
|
||||
} else {
|
||||
throw new Error("window.DocsAPI is null")
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("onMounted TemplateEditor error:", error)
|
||||
document.getElementById("error").classList.remove("d-none")
|
||||
}
|
||||
})
|
||||
|
||||
onWillUnmount(() => {
|
||||
if (window.connector) {
|
||||
window.connector.disconnect()
|
||||
delete window.connector
|
||||
}
|
||||
if (window.docEditor) {
|
||||
window.docEditor.destroyEditor()
|
||||
delete window.docEditor
|
||||
}
|
||||
if (this.script && this.script.parentNode) {
|
||||
this.script.parentNode.removeChild(this.script)
|
||||
}
|
||||
if (window.DocsAPI) {
|
||||
delete window.DocsAPI
|
||||
}
|
||||
this.env.bus.off("eurooffice-template-create-form", this)
|
||||
})
|
||||
}
|
||||
|
||||
async loadDocsAPI(DocsAPI) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const script = document.createElement("script")
|
||||
script.src = DocsAPI
|
||||
script.onload = resolve
|
||||
script.onerror = reject
|
||||
document.body.appendChild(script)
|
||||
this.script = script
|
||||
})
|
||||
}
|
||||
|
||||
createForm(field) {
|
||||
if (this.documentReady) {
|
||||
if (!this.hasLicense) {
|
||||
this.notificationService.add(_t("Couldn't insert the field. Please check Automation API."), { type: "danger" })
|
||||
return
|
||||
}
|
||||
Asc.scope.data = field
|
||||
window.connector.callCommand(() => {
|
||||
var oDocument = Api.GetDocument()
|
||||
var oForm = null
|
||||
if (
|
||||
[
|
||||
"char",
|
||||
"text",
|
||||
"selection",
|
||||
"integer",
|
||||
"float",
|
||||
"monetary",
|
||||
"date",
|
||||
"datetime",
|
||||
"many2one",
|
||||
"one2many",
|
||||
"many2many",
|
||||
].includes(Asc.scope.data.field_type)
|
||||
) {
|
||||
oForm = Api.CreateTextForm({
|
||||
key: Asc.scope.data.id.replaceAll("/", " "),
|
||||
placeholder: Asc.scope.data.formattedString,
|
||||
tip: Asc.scope.data.formattedString,
|
||||
})
|
||||
}
|
||||
if (Asc.scope.data.field_type === "boolean") {
|
||||
oForm = Api.CreateCheckBoxForm({
|
||||
key: Asc.scope.data.id.replaceAll("/", " "),
|
||||
tip: Asc.scope.data.formattedString,
|
||||
})
|
||||
}
|
||||
if (Asc.scope.data.field_type === "binary") {
|
||||
oForm = Api.CreatePictureForm({
|
||||
key: Asc.scope.data.id.replaceAll("/", " "),
|
||||
tip: Asc.scope.data.formattedString,
|
||||
})
|
||||
}
|
||||
var oParagraph = Api.CreateParagraph()
|
||||
oParagraph.AddElement(oForm)
|
||||
oDocument.InsertContent([oParagraph], true, { KeepTextOnly: true })
|
||||
})
|
||||
|
||||
window.docEditor.grabFocus()
|
||||
}
|
||||
}
|
||||
}
|
||||
TemplateEditor.components = {
|
||||
...Component.components,
|
||||
ExportData,
|
||||
}
|
||||
TemplateEditor.template = "eurooffice_odoo_templates.TemplateEditor"
|
||||
|
||||
registry.category("actions").add("eurooffice_template_editor", TemplateEditor)
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates xml:space="preserve">
|
||||
<t t-name="eurooffice_odoo_templates.TemplateEditor" owl="1">
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title> Euro-Office </title>
|
||||
<style>
|
||||
html, body {
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="o-eurooffice-template">
|
||||
<div class="o-eurooffice-template-fields border-end">
|
||||
<div class="o-eurooffice-fields-title">
|
||||
<span> Fields </span>
|
||||
</div>
|
||||
<hr class="o-eurooffice-template-separator" />
|
||||
<t t-if="state.resModel">
|
||||
<ExportData resModel="state.resModel" />
|
||||
</t>
|
||||
</div>
|
||||
<div class="o-eurooffice-template-editor">
|
||||
<div id="doceditor" />
|
||||
<div id="error" class="w-25 m-auto my-5 py-5 d-flex flex-column d-none">
|
||||
<img src="/eurooffice_odoo_templates/static/svg/eurooffice_logo.svg" alt="Euro-Office logo" />
|
||||
<div class="my-3 alert alert-danger">
|
||||
<p> Euro-Office cannot be reached. Please contact admin. </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</t>
|
||||
</templates>
|
||||
|
|
@ -0,0 +1,200 @@
|
|||
/** @odoo-module **/
|
||||
|
||||
import { Component, useRef, useState, onWillStart } from "@odoo/owl"
|
||||
import { CheckBox } from "@web/core/checkbox/checkbox"
|
||||
import { unique } from "@web/core/utils/arrays"
|
||||
import { useService } from "@web/core/utils/hooks"
|
||||
import { fuzzyLookup } from "@web/core/utils/search"
|
||||
|
||||
class ExportDataItem extends Component {
|
||||
setup() {
|
||||
this.state = useState({ subfields: [] })
|
||||
onWillStart(() => {
|
||||
if (this.props.isExpanded) {
|
||||
return this.toggleItem(this.props.field, false)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
async toggleItem(field, isUserToggle) {
|
||||
const id = field.id
|
||||
if (this.props.isFieldExpandable(id)) {
|
||||
if (this.state.subfields.length) {
|
||||
this.state.subfields = []
|
||||
} else {
|
||||
const subfields = await this.props.loadFields(id, !isUserToggle)
|
||||
if (subfields) {
|
||||
this.state.subfields = isUserToggle ? subfields : this.props.filterSubfields(subfields)
|
||||
} else {
|
||||
this.state.subfields = []
|
||||
}
|
||||
}
|
||||
} else if (isUserToggle) {
|
||||
this.env.bus.trigger("eurooffice-template-create-form", field)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ExportDataItem.template = "eurooffice_odoo_templates.ExportDataItem"
|
||||
ExportDataItem.components = { ExportDataItem }
|
||||
ExportDataItem.props = {
|
||||
field: {
|
||||
optional: true,
|
||||
type: Object,
|
||||
},
|
||||
filterSubfields: Function,
|
||||
isExpanded: Boolean,
|
||||
isFieldExpandable: Function,
|
||||
isTechnicalName: Boolean,
|
||||
loadFields: Function,
|
||||
}
|
||||
|
||||
export class ExportData extends Component {
|
||||
setup() {
|
||||
this.dialog = useService("dialog")
|
||||
this.notification = useService("notification")
|
||||
this.orm = useService("orm")
|
||||
this.rpc = useService("rpc")
|
||||
this.searchRef = useRef("search")
|
||||
|
||||
this.knownFields = {}
|
||||
this.expandedFields = {}
|
||||
|
||||
this.state = useState({
|
||||
exportList: [],
|
||||
isTechnicalName: false,
|
||||
search: [],
|
||||
})
|
||||
|
||||
onWillStart(async () => {
|
||||
await this.fetchFields()
|
||||
})
|
||||
}
|
||||
|
||||
get fieldsAvailable() {
|
||||
if (this.searchRef.el && this.searchRef.el.value) {
|
||||
return this.state.search.length && Object.values(this.state.search)
|
||||
}
|
||||
return Object.values(this.knownFields)
|
||||
}
|
||||
|
||||
get rootFields() {
|
||||
if (this.searchRef.el && this.searchRef.el.value) {
|
||||
const rootFromSearchResults = this.fieldsAvailable.map((f) => {
|
||||
if (f.parent) {
|
||||
const parentEl = this.knownFields[f.parent.id]
|
||||
return this.knownFields[parentEl.parent ? parentEl.parent.id : parentEl.id]
|
||||
}
|
||||
return this.knownFields[f.id]
|
||||
})
|
||||
return unique(rootFromSearchResults)
|
||||
}
|
||||
|
||||
return this.fieldsAvailable.filter(({ parent }) => !parent)
|
||||
}
|
||||
|
||||
filterSubfields(subfields) {
|
||||
let subfieldsFromSearchResults = []
|
||||
let searchResults = null
|
||||
if (this.searchRef.el && this.searchRef.el.value) {
|
||||
searchResults = this.lookup(this.searchRef.el.value)
|
||||
}
|
||||
const fieldsAvailable = Object.values(searchResults || this.knownFields)
|
||||
if (this.searchRef.el && this.searchRef.el.value) {
|
||||
subfieldsFromSearchResults = fieldsAvailable
|
||||
.filter((f) => f.parent && this.knownFields[f.parent.id].parent)
|
||||
.map((f) => f.parent)
|
||||
}
|
||||
const availableSubFields = unique([...fieldsAvailable, ...subfieldsFromSearchResults])
|
||||
return subfields.filter((a) => availableSubFields.some((b) => a.id === b.id))
|
||||
}
|
||||
|
||||
async fetchFields() {
|
||||
this.state.search = []
|
||||
this.knownFields = {}
|
||||
this.expandedFields = {}
|
||||
await this.loadFields()
|
||||
if (this.searchRef.el) {
|
||||
this.searchRef.el.value = ""
|
||||
}
|
||||
}
|
||||
|
||||
isFieldExpandable(id) {
|
||||
return this.knownFields[id].children && id.split("/").length < 4
|
||||
}
|
||||
|
||||
async loadFields(id, preventLoad = false) {
|
||||
let model = this.props.resModel
|
||||
let parentField = null
|
||||
let parentParams = {}
|
||||
if (id) {
|
||||
if (this.expandedFields[id]) {
|
||||
return this.expandedFields[id].fields
|
||||
}
|
||||
parentField = this.knownFields[id]
|
||||
model = parentField.params && parentField.params.model
|
||||
parentParams = {
|
||||
exclude: [parentField.relation_field],
|
||||
...parentField.params,
|
||||
parent_name: parentField.string,
|
||||
}
|
||||
}
|
||||
if (preventLoad) {
|
||||
return
|
||||
}
|
||||
const fields = await this.getExportedFields(model, parentParams)
|
||||
for (const field of fields) {
|
||||
field.formattedString = field.string.split("/").pop()
|
||||
field.formattedId = field.id.split("/").pop()
|
||||
field.parent = parentField
|
||||
if (!this.knownFields[field.id]) {
|
||||
this.knownFields[field.id] = field
|
||||
}
|
||||
}
|
||||
if (id) {
|
||||
this.expandedFields[id] = { fields }
|
||||
}
|
||||
return fields
|
||||
}
|
||||
|
||||
async getExportedFields(model, parentParams = {}) {
|
||||
const fields = await this.orm.call("eurooffice.odoo.templates", "get_fields_for_model", [
|
||||
model,
|
||||
parentParams.prefix || "",
|
||||
parentParams.parent_name || "",
|
||||
parentParams.exclude,
|
||||
])
|
||||
|
||||
return fields
|
||||
}
|
||||
|
||||
onSearch(ev) {
|
||||
this.state.search = this.lookup(ev.target.value)
|
||||
}
|
||||
|
||||
onCleanSearch() {
|
||||
this.searchRef.el.value = ""
|
||||
this.state.search = []
|
||||
}
|
||||
|
||||
lookup(value) {
|
||||
let lookupResult = null
|
||||
if (this.state.isTechnicalName) {
|
||||
lookupResult = fuzzyLookup(value, Object.values(this.knownFields), (field) => field.id.replaceAll("/", " "))
|
||||
} else {
|
||||
lookupResult = fuzzyLookup(value, Object.values(this.knownFields), (field) => field.string.replaceAll("/", " "))
|
||||
}
|
||||
return lookupResult
|
||||
}
|
||||
|
||||
onToggleDisplayOption(value) {
|
||||
// This.onCleanSearch()
|
||||
this.state.isTechnicalName = value
|
||||
}
|
||||
}
|
||||
ExportData.components = {
|
||||
CheckBox,
|
||||
ExportDataItem,
|
||||
}
|
||||
ExportData.props = { resModel: String }
|
||||
ExportData.template = "eurooffice_odoo_templates.ExportData"
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates xml:space="preserve">
|
||||
<t t-name="eurooffice_odoo_templates.ExportDataItem" owl="1">
|
||||
<div
|
||||
t-att-data-field_id="props.field.id"
|
||||
t-attf-class="o-eurooffice-list-field {{ state.subfields.length ? 'o-eurooffice-list-field_expanded mb-2' : '' }} {{ props.field.parent ? 'o-eurooffice-list-field_children' : ''}}"
|
||||
role="treeitem"
|
||||
t-on-click.stop="() => this.toggleItem(props.field, true)"
|
||||
t-attf-data-tooltip="{{ props.isTechnicalName ? props.field.string : props.field.id }}"
|
||||
>
|
||||
<div
|
||||
t-attf-class="o-eurooffice-field list-group-item-action {{ state.subfields.length ? 'o-eurooffice-field_expanded list-group-item active' : '' }}"
|
||||
>
|
||||
<span
|
||||
t-if="props.isFieldExpandable(props.field.id)"
|
||||
t-attf-class="o-eurooffice-field-caret fa {{ state.subfields.length ? 'fa-caret-down' : 'fa-caret-right' }}"
|
||||
role="img"
|
||||
aria-label="Show sub-fields"
|
||||
title="Show sub-fields"
|
||||
/>
|
||||
<span t-if="props.isTechnicalName" class="o-eurooffice-field-title" t-esc="props.field.formattedId" />
|
||||
<span t-else="" class="o-eurooffice-field-title" t-esc="props.field.formattedString" />
|
||||
<!--<span
|
||||
t-if="props.field.field_type === 'binary'"
|
||||
title="Image"
|
||||
t-attf-class="o-eurooffice-field-type fa fa-picture-o float-end m-1"
|
||||
/>-->
|
||||
</div>
|
||||
<t t-foreach="state.subfields" t-as="field" t-key="field.id">
|
||||
<ExportDataItem t-props="props" field="field" />
|
||||
<t t-if="field_index === state.subfields.length-1">
|
||||
<hr class="o-eurooffice-template-separator" />
|
||||
</t>
|
||||
</t>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<t t-name="eurooffice_odoo_templates.ExportData" owl="1">
|
||||
<div class="o-eurooffice-fields-options">
|
||||
<div class="o-eurooffice-options-help">
|
||||
<span> Choose the field below to paste selected parameter to the cursor </span>
|
||||
</div>
|
||||
<div class="o-eurooffice-options-title">
|
||||
<span>Module/ section</span>
|
||||
</div>
|
||||
<div class="o-eurooffice-options-search">
|
||||
<div class="o-eurooffice-search-field o_searchview">
|
||||
<input
|
||||
t-ref="search"
|
||||
class="o-eurooffice-search-input o_searchview_input form-control"
|
||||
id="o-export-search-filter"
|
||||
t-attf-placeholder="{{ state.isTechnicalName ? 'Search technical name' : 'Search field' }}"
|
||||
t-on-input="onSearch"
|
||||
/>
|
||||
<button t-if="this.searchRef.el and this.searchRef.el.value" t-on-click="onCleanSearch">
|
||||
<svg width="12" height="11" viewBox="0 0 12 11" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M0.810547 0.707106L1.4718 1.36836L2.7943 2.69087L5.29585 5.19244L3.00452 7.48377L1.57703 8.91125L0.863283 9.625L1.57039 10.3321L2.28413 9.61836L3.71162 8.19087L6.00295 5.89954L8.2943 8.19089L9.7218 9.61839L10.4355 10.3321L11.1427 9.62503L10.4289 8.91128L9.0014 7.48378L6.71006 5.19244L9.21162 2.69087L10.5341 1.36836L11.1954 0.707108L10.4883 0L9.82703 0.661255L8.50452 1.98377L6.00295 4.48533L3.50141 1.98377L2.17891 0.661257L1.51766 0L0.810547 0.707106Z"
|
||||
fill="black"
|
||||
/>
|
||||
</svg>
|
||||
</button>
|
||||
<button t-else="">
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M10 5.5C10 7.98528 7.98528 10 5.5 10C3.01472 10 1 7.98528 1 5.5C1 3.01472 3.01472 1 5.5 1C7.98528 1 10 3.01472 10 5.5ZM9.01953 9.72663C8.06578 10.5217 6.83875 11 5.5 11C2.46243 11 0 8.53757 0 5.5C0 2.46243 2.46243 0 5.5 0C8.53757 0 11 2.46243 11 5.5C11 6.83875 10.5217 8.06578 9.72663 9.01953L13.8536 13.1465L13.1465 13.8536L9.01953 9.72663Z"
|
||||
fill="black"
|
||||
/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="o-eurooffice-options-technical-name">
|
||||
<CheckBox id="'o-display-option'" value="state.isTechnicalName" onChange.bind="onToggleDisplayOption">
|
||||
Use a technical name
|
||||
</CheckBox>
|
||||
</div>
|
||||
<hr class="o-eurooffice-template-separator" />
|
||||
</div>
|
||||
<div class="o-eurooffice-fields-list">
|
||||
<t t-if="fieldsAvailable">
|
||||
<t t-foreach="rootFields" t-as="field" t-key="field.id + '_' + state.search.length + '_' + state.isCompatible">
|
||||
<ExportDataItem
|
||||
field="field"
|
||||
filterSubfields.bind="filterSubfields"
|
||||
isExpanded="state.search.length > 0"
|
||||
isFieldExpandable.bind="isFieldExpandable"
|
||||
isTechnicalName="state.isTechnicalName"
|
||||
loadFields.bind="loadFields"
|
||||
/>
|
||||
</t>
|
||||
</t>
|
||||
<h3 t-else="" class="text-center text-muted mt-5 o_no_match">No match found.</h3>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
/** @odoo-module **/
|
||||
import { patch } from "@web/core/utils/patch"
|
||||
import { FormController } from "@web/views/form/form_controller"
|
||||
import { TemplateDialog } from "../dialog/eurooffice_dialog"
|
||||
|
||||
patch(FormController.prototype, "FormController.ActionButton", {
|
||||
/**
|
||||
* @override
|
||||
**/
|
||||
getActionMenuItems() {
|
||||
const menuItems = this._super()
|
||||
menuItems.other.push({
|
||||
callback: () => {
|
||||
this.env.services.dialog.add(TemplateDialog, {
|
||||
resId: this.model.root.resId,
|
||||
resModel: this.props.resModel,
|
||||
})
|
||||
},
|
||||
description: this.env._t("Print with Euro-Office"),
|
||||
skipSave: true,
|
||||
})
|
||||
return menuItems
|
||||
},
|
||||
})
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
/** @odoo-module **/
|
||||
import { Dialog } from "@web/core/dialog/dialog"
|
||||
import { _t } from "@web/core/l10n/translation"
|
||||
|
||||
const { Component } = owl
|
||||
|
||||
export class HelpDialog extends Component {
|
||||
setup() {
|
||||
this.title = _t("Help")
|
||||
console.log(this)
|
||||
}
|
||||
}
|
||||
|
||||
HelpDialog.template = "eurooffice_odoo_templates.HelpDialog"
|
||||
HelpDialog.components = { Dialog }
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates xml:space="preserve">
|
||||
<t t-name="eurooffice_odoo_templates.HelpDialog" owl="1">
|
||||
<div>
|
||||
<Dialog title="title" footer="true" size="'md'">
|
||||
<span class="fw-bolder">
|
||||
Euro-Office Templates module
|
||||
</span>
|
||||
<p>The Euro-Office Templates module allows you to create, manage, and use fillable PDF <span
|
||||
class="fw-bolder"
|
||||
>templates </span> for any installed Odoo module (e.g., Sales, Invoicing, CRM). These templates can then be filled in automatically with real-time data from your Odoo system — no manual input needed.</p>
|
||||
<p
|
||||
>On this page, you can create form templates for any Odoo module, such as Invoice, Receipt, Employee Leave Form, etc. Just click <span
|
||||
class="fw-bolder"
|
||||
>Create or Upload</span>, select the desired Odoo module, and create or upload a PDF template with fillable fields.</p>
|
||||
<br />
|
||||
<span class="fw-bolder">To fill in a template with Odoo data:</span>
|
||||
<ol>
|
||||
<li>Go to the relevant Odoo module (e.g., Sales, Invoices).</li>
|
||||
<li>Open a record.</li>
|
||||
<li>Click on the Action button.</li>
|
||||
<li>Select Print with Euro-Office.</li>
|
||||
<li>Choose the required template to fill in with Odoo data.</li>
|
||||
<li>Press the Print button.</li>
|
||||
</ol>
|
||||
<p
|
||||
>This will generate a PDF document with your template, automatically filled with the corresponding record's data.</p>
|
||||
<t t-set-slot="footer">
|
||||
<button class="btn btn-primary" t-on-click="props.close">
|
||||
<t>Ok</t>
|
||||
</button>
|
||||
</t>
|
||||
</Dialog>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
/** @odoo-module */
|
||||
import { FormGallery } from "@eurooffice_odoo/views/form_gallery/form_gallery"
|
||||
import { useService } from "@web/core/utils/hooks"
|
||||
import { KanbanController } from "@web/views/kanban/kanban_controller"
|
||||
import { HelpDialog } from "./eurooffice_dialog_help"
|
||||
|
||||
export class EuroofficeKanbanController extends KanbanController {
|
||||
setup() {
|
||||
super.setup()
|
||||
this.action = useService("action")
|
||||
this.orm = useService("orm")
|
||||
this.notificationService = useService("notification")
|
||||
this.dialog = useService("dialog")
|
||||
this.openedFormGallery = false
|
||||
}
|
||||
|
||||
async openFormGallery() {
|
||||
const download = (form) => {
|
||||
if (form) {
|
||||
this.action.doAction({
|
||||
context: {
|
||||
default_hide_file_field: true,
|
||||
default_name: form.attributes.name_form,
|
||||
url: form.attributes.file_oform.data[0].attributes.url,
|
||||
},
|
||||
res_model: "eurooffice.odoo.templates",
|
||||
target: "current",
|
||||
type: "ir.actions.act_window",
|
||||
view_mode: "form",
|
||||
views: [[false, "form"]],
|
||||
})
|
||||
}
|
||||
}
|
||||
this.dialog.add(FormGallery, {
|
||||
onDownload: download,
|
||||
showType: false,
|
||||
})
|
||||
}
|
||||
|
||||
async help() {
|
||||
this.dialog.add(HelpDialog, {})
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates>
|
||||
<t
|
||||
t-name="eurooffice_odoo_templates.EuroofficeKanbanController.Buttons"
|
||||
t-inherit="web.KanbanView.Buttons"
|
||||
t-inherit-mode="primary"
|
||||
owl="1"
|
||||
>
|
||||
<xpath expr="//button[hasclass('o-kanban-button-new')]" position="replace">
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-primary o-kanban-button-new"
|
||||
accesskey="c"
|
||||
t-on-click="() => this.createRecord(null)"
|
||||
data-bounce-button=""
|
||||
groups="eurooffice_odoo_templates.group_manager"
|
||||
>
|
||||
Create or Upload
|
||||
</button>
|
||||
</xpath>
|
||||
<xpath expr="//div[hasclass('o_cp_buttons')]" position="inside">
|
||||
<button class="btn btn-secondary ms-1" t-on-click="() => this.openFormGallery()" style="text-wrap: nowrap;">
|
||||
Open Document templates
|
||||
</button>
|
||||
<button class="btn btn-secondary ms-1" t-on-click="() => this.help()"> Help </button>
|
||||
</xpath>
|
||||
</t>
|
||||
</templates>
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
/** @odoo-module **/
|
||||
import { ConfirmationDialog } from "@web/core/confirmation_dialog/confirmation_dialog"
|
||||
import { useService } from "@web/core/utils/hooks"
|
||||
import { CANCEL_GLOBAL_CLICK, KanbanRecord } from "@web/views/kanban/kanban_record"
|
||||
|
||||
export class EuroofficeKanbanRecord extends KanbanRecord {
|
||||
setup() {
|
||||
super.setup()
|
||||
this.orm = useService("orm")
|
||||
this.actionService = useService("action")
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
*/
|
||||
triggerAction(params) {
|
||||
const env = this.env
|
||||
const { group, list, openRecord, record } = this.props
|
||||
const { type } = params
|
||||
switch (type) {
|
||||
case "edit": {
|
||||
return openRecord(record, "edit")
|
||||
}
|
||||
case "delete": {
|
||||
const listOrGroup = group || list
|
||||
if (listOrGroup.deleteRecords) {
|
||||
this.dialog.add(ConfirmationDialog, {
|
||||
body: env._t("Are you sure you want to delete this record?"),
|
||||
cancel: () => {
|
||||
return
|
||||
},
|
||||
confirm: async () => {
|
||||
await listOrGroup.deleteRecords([record])
|
||||
this.props.record.model.load()
|
||||
this.props.record.model.notify()
|
||||
return this.notification.add(env._t("Template removed"), {
|
||||
sticky: false,
|
||||
type: "info",
|
||||
})
|
||||
},
|
||||
})
|
||||
}
|
||||
return
|
||||
}
|
||||
default: {
|
||||
return this.notification.add(env._t("Kanban: no action for type: ") + type, { type: "danger" })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
*/
|
||||
async onGlobalClick(ev) {
|
||||
if (ev.target.closest(CANCEL_GLOBAL_CLICK) && !ev.target.classList.contains("o_eurooffice_download")) {
|
||||
return
|
||||
}
|
||||
if (ev.target.classList.contains("o_eurooffice_download")) {
|
||||
window.location.href = `/eurooffice/template/download/${this.props.record.data.attachment_id[0]}`
|
||||
return
|
||||
}
|
||||
return this.editTemplate()
|
||||
}
|
||||
|
||||
async editTemplate() {
|
||||
const action = {
|
||||
params: {
|
||||
attachment_id: this.props.record.data.attachment_id[0],
|
||||
id: this.props.record.data.id,
|
||||
template_model_model: this.props.record.data.template_model_model,
|
||||
},
|
||||
tag: "eurooffice_template_editor",
|
||||
target: "current",
|
||||
type: "ir.actions.client",
|
||||
}
|
||||
return this.actionService.doAction(action, { props: this.props.record.data })
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
/** @odoo-module **/
|
||||
|
||||
import { KanbanRenderer } from "@web/views/kanban/kanban_renderer"
|
||||
import { EuroofficeKanbanRecord } from "./eurooffice_kanban_record"
|
||||
|
||||
export class EuroofficeKanbanRenderer extends KanbanRenderer {
|
||||
setup() {
|
||||
super.setup()
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
**/
|
||||
canQuickCreate() {
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
**/
|
||||
canCreateGroup() {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
EuroofficeKanbanRenderer.components = {
|
||||
...KanbanRenderer.components,
|
||||
KanbanRecord: EuroofficeKanbanRecord,
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
/** @odoo-module */
|
||||
import { registry } from "@web/core/registry"
|
||||
import { kanbanView } from "@web/views/kanban/kanban_view"
|
||||
import { EuroofficeKanbanController } from "./eurooffice_kanban_controller"
|
||||
import { EuroofficeKanbanRenderer } from "./eurooffice_kanban_renderer"
|
||||
|
||||
export const euroofficeKanbanView = {
|
||||
...kanbanView,
|
||||
Controller: EuroofficeKanbanController,
|
||||
Renderer: EuroofficeKanbanRenderer,
|
||||
buttonTemplate: "eurooffice_odoo_templates.EuroofficeKanbanController.Buttons",
|
||||
}
|
||||
|
||||
registry.category("views").add("eurooffice_kanban", euroofficeKanbanView)
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
/** @odoo-module **/
|
||||
import { patch } from "@web/core/utils/patch"
|
||||
import { ListController } from "@web/views/list/list_controller"
|
||||
import { TemplateDialog } from "../dialog/eurooffice_dialog"
|
||||
|
||||
patch(ListController.prototype, "ListController.ActionButton", {
|
||||
/**
|
||||
* @override
|
||||
**/
|
||||
getActionMenuItems() {
|
||||
const menuItems = this._super()
|
||||
menuItems.other.push({
|
||||
callback: async () => {
|
||||
this.env.services.dialog.add(TemplateDialog, {
|
||||
resId: await this.model.root.getResIds(true),
|
||||
resModel: this.props.resModel,
|
||||
})
|
||||
},
|
||||
description: this.env._t("Print with Euro-Office"),
|
||||
skipSave: true,
|
||||
})
|
||||
return menuItems
|
||||
},
|
||||
})
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
/** @odoo-module **/
|
||||
|
||||
import { Component, useState, onWillStart } from "@odoo/owl"
|
||||
import { EuroofficePreview } from "@eurooffice_odoo/views/preview/eurooffice_preview"
|
||||
import { registry } from "@web/core/registry"
|
||||
import { useService } from "@web/core/utils/hooks"
|
||||
|
||||
export class TemplatesTree extends Component {
|
||||
setup() {
|
||||
this.orm = useService("orm")
|
||||
this.state = useState({
|
||||
loading: true,
|
||||
selected: [],
|
||||
structure: {},
|
||||
})
|
||||
|
||||
onWillStart(async () => {
|
||||
await this.loadTemplates()
|
||||
})
|
||||
}
|
||||
|
||||
async loadTemplates() {
|
||||
try {
|
||||
const data = await this.orm.call("eurooffice.odoo.demo.templates", "get_template_data")
|
||||
this.state.structure = data.structure || {}
|
||||
this.state.selected = data.selected || []
|
||||
} catch (error) {
|
||||
console.error("Failed to load templates:", error)
|
||||
} finally {
|
||||
this.state.loading = false
|
||||
}
|
||||
}
|
||||
|
||||
toggleTemplate(path, checked) {
|
||||
if (checked) {
|
||||
this.state.selected.push(path)
|
||||
} else {
|
||||
this.state.selected = this.state.selected.filter((p) => p !== path)
|
||||
}
|
||||
if (this.props.record) {
|
||||
this.props.record.update({ selected_templates: JSON.stringify(this.state.selected) })
|
||||
}
|
||||
}
|
||||
|
||||
async saveSelection() {
|
||||
const value = JSON.stringify({
|
||||
selected: this.state.selected,
|
||||
structure: this.state.structure,
|
||||
})
|
||||
|
||||
await this.orm.write("eurooffice.odoo.demo.templates", [this.props.record.resId], { selected_templates: value })
|
||||
|
||||
if (this.props.update) {
|
||||
this.props.update(value)
|
||||
}
|
||||
}
|
||||
|
||||
previewTemplate(path) {
|
||||
const url = `/eurooffice/template/template_content/${encodeURIComponent(path.replace("/", "_"))}`
|
||||
|
||||
this.env.services.dialog.add(
|
||||
EuroofficePreview,
|
||||
{
|
||||
close: () => {
|
||||
this.env.services.dialog.close()
|
||||
},
|
||||
title: path.split("/").pop(),
|
||||
url: url,
|
||||
},
|
||||
{
|
||||
onClose: () => {
|
||||
return
|
||||
},
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
TemplatesTree.template = "eurooffice_odoo_templates.TemplatesTree"
|
||||
|
||||
registry.category("fields").add("eurooffice_template_tree", TemplatesTree)
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates xml:space="preserve">
|
||||
<t t-name="eurooffice_odoo_templates.TemplatesTree" owl="1">
|
||||
<div class="o-eurooffice-templates-tree">
|
||||
<t t-if="state.loading">
|
||||
<div class="text-center p-4">
|
||||
<i class="fa fa-refresh fa-spin" />
|
||||
Loading templates...
|
||||
</div>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<div class="o-eurooffice-tree-list">
|
||||
<t t-foreach="Object.values(state.structure)" t-as="category" t-key="category.model">
|
||||
<div class="o-eurooffice-list-item">
|
||||
<h3 class="o-eurooffice-item-header">
|
||||
<t t-esc="category.name" />
|
||||
</h3>
|
||||
<div class="o-eurooffice-item-body">
|
||||
<t t-foreach="category.files" t-as="file" t-key="file.path">
|
||||
<div class="o-eurooffice-body-template">
|
||||
<label>
|
||||
<input
|
||||
type="checkbox"
|
||||
class="o-eurooffice-template-checkbox form-check-input"
|
||||
t-att-checked="state.selected.includes(file.path)"
|
||||
t-on-change="(ev) => this.toggleTemplate(file.path, ev.target.checked)"
|
||||
/>
|
||||
<button class="btn btn-sm btn-link" t-on-click="() => this.previewTemplate(file.path)">
|
||||
<i class="fa fa-eye" />
|
||||
</button>
|
||||
<span t-esc="file.name" />
|
||||
</label>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<svg width="433" height="70" viewBox="0 0 433 70" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M100.633 19.9039C96.3343 23.3872 94.2545 28.7462 94.2545 35.847C94.2545 42.9475 96.3343 48.3063 100.633 51.9237C104.931 55.541 109.784 57.2828 115.469 57.2828C121.016 57.2828 126.007 55.541 130.167 51.9237C134.327 48.4404 136.407 43.0813 136.407 35.9808C136.407 28.7462 134.327 23.5212 130.167 19.9039C126.007 16.2866 121.154 14.5449 115.469 14.5449C109.784 14.5449 104.793 16.2866 100.633 19.9039ZM106.179 46.5649C104.377 44.2874 103.406 40.8038 103.406 35.847C103.406 31.0237 104.377 27.5405 106.179 25.3969C108.12 23.1193 110.2 21.6456 112.419 21.1097L112.419 21.1097C112.973 20.9757 113.528 20.8418 113.944 20.8418C114.36 20.7078 114.776 20.7078 115.33 20.7078H115.331C115.608 20.7078 115.85 20.7413 116.093 20.7748C116.336 20.8083 116.578 20.8418 116.856 20.8418C117.272 20.8418 117.827 20.9757 118.381 21.1097C120.6 21.6456 122.68 23.1193 124.482 25.3969C126.285 27.6745 127.255 31.2919 127.255 35.9808C127.255 40.67 126.285 44.2874 124.482 46.5649C122.68 48.8425 120.6 50.3161 118.381 50.8522C118.286 50.8752 118.194 50.8983 118.105 50.9207C117.679 51.0282 117.315 51.1201 116.856 51.1201C116.301 51.2539 115.885 51.2539 115.331 51.2539H115.331C115.123 51.2539 114.88 51.2204 114.637 51.187C114.395 51.1535 114.152 51.1201 113.944 51.1201C113.485 51.1201 113.121 51.0282 112.695 50.9208C112.606 50.8983 112.514 50.8752 112.419 50.8522C110.2 50.3161 108.12 48.8425 106.179 46.5649Z" fill="#333333"/>
|
||||
<path d="M140.982 14.9468H152.352L167.327 41.3398L169.546 46.9668H169.685L169.546 39.598V14.9468H178.281V56.7469H166.912L151.936 29.416L149.718 24.7269H149.579L149.718 32.0954V56.7469H140.982V14.9468Z" fill="#333333"/>
|
||||
<path d="M185.908 14.9468H194.643V49.646H211.837V56.7469H185.908V14.9468Z" fill="#333333"/>
|
||||
<path d="M206.43 14.9468H216.552L225.426 29.684L226.812 32.4974H227.09L228.476 29.684L237.489 14.9468H246.779L231.111 39.7321V56.7469H222.375V39.7321L206.43 14.9468Z" fill="#333333"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M253.434 19.9039C249.136 23.3872 247.056 28.7462 247.056 35.847C247.056 42.9475 249.275 48.3063 253.434 51.9237C257.733 55.541 262.586 57.2828 268.271 57.2828C273.817 57.2828 278.809 55.541 282.969 51.9237C287.128 48.4404 289.208 43.0813 289.208 35.9808C289.208 28.7462 287.128 23.5212 282.969 19.9039C278.809 16.2866 273.956 14.5449 268.271 14.5449C262.586 14.5449 257.594 16.2866 253.434 19.9039ZM258.981 46.5649C257.178 44.2874 256.208 40.8038 256.208 35.847C256.208 31.0237 257.178 27.5405 258.981 25.3969C260.922 23.1193 263.002 21.6456 265.22 21.1097C265.775 20.9757 266.33 20.8418 266.746 20.8418C267.162 20.7078 267.577 20.7078 268.132 20.7078H268.132C268.41 20.7078 268.652 20.7413 268.895 20.7748C269.137 20.8083 269.38 20.8418 269.657 20.8418C270.073 20.8418 270.627 20.9755 271.182 21.1094L271.183 21.1097C273.401 21.6456 275.481 23.1193 277.284 25.3969C279.086 27.6745 280.057 31.2919 280.057 35.9808C280.057 40.67 279.086 44.2874 277.284 46.5649C275.481 48.8425 273.401 50.3161 271.183 50.8522C271.087 50.8753 270.995 50.8984 270.906 50.9209C270.48 51.0283 270.116 51.1201 269.657 51.1201C269.103 51.2539 268.687 51.2539 268.132 51.2539H268.132C267.924 51.2539 267.682 51.2204 267.439 51.187C267.196 51.1535 266.954 51.1201 266.746 51.1201C266.331 51.1201 265.778 50.9867 265.225 50.8533L265.22 50.8522C262.863 50.3161 260.922 48.8425 258.981 46.5649Z" fill="#333333"/>
|
||||
<path d="M293.923 14.9468H318.049V22.0474H302.658V32.0954H317.355V39.196H302.658V56.7469H293.923V14.9468Z" fill="#333333"/>
|
||||
<path d="M323.181 14.9468H347.307V22.0474H331.915V32.0954H346.613V39.196H331.915V56.7469H323.181V14.9468Z" fill="#333333"/>
|
||||
<path d="M352.436 56.7469V14.9468H361.173V56.7469H352.436Z" fill="#333333"/>
|
||||
<path d="M400.624 15.8843V23.1189C399.099 22.583 397.573 22.1811 395.91 21.9131C394.247 21.6452 392.444 21.5112 390.501 21.5112C385.927 21.5112 382.461 22.851 379.964 25.6644C377.469 28.3439 376.221 31.8272 376.221 35.9803C376.221 39.9997 377.329 43.3491 379.687 46.0287C382.044 48.7079 385.372 50.1818 389.67 50.1818C391.195 50.1818 392.721 50.0477 394.524 49.9139C396.324 49.6457 398.127 49.244 400.07 48.44L400.624 55.5406C400.347 55.6747 399.93 55.8088 399.516 55.9426C398.961 56.0767 398.404 56.2105 397.713 56.3446C396.604 56.6125 395.216 56.7466 393.553 57.0145C391.89 57.1483 390.224 57.2824 388.421 57.2824C388.144 57.2824 387.867 57.2824 387.73 57.2824C387.453 57.2824 387.175 57.2824 387.035 57.2824C382.044 57.0145 377.469 55.1389 373.309 51.9233C369.149 48.5741 367.069 43.3491 367.069 36.3823C367.069 29.5497 369.149 24.1907 373.169 20.4394C377.189 16.6881 382.738 14.8125 389.533 14.8125C391.333 14.8125 392.998 14.8125 394.384 14.9464C395.91 15.0804 397.296 15.3484 398.821 15.6163C399.099 15.7503 399.516 15.7503 399.793 15.8843C399.93 15.7503 400.207 15.8843 400.624 15.8843Z" fill="#333333"/>
|
||||
<path d="M406.08 14.9468H432.009V21.5115H414.955V31.9616H430.346V38.5264H414.955V50.1821H432.009V56.7469H406.08V14.9468Z" fill="#333333"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M33.3143 69.1577L2.00187 55.01C-0.665498 53.7748 -0.665498 51.8661 2.00187 50.7431L12.9033 45.8027L33.1986 55.01C35.8658 56.245 40.1569 56.245 42.7081 55.01L63.0033 45.8027L73.9049 50.7431C76.5721 51.9784 76.5721 53.8871 73.9049 55.01L42.5921 69.1577C40.1569 70.2807 35.8658 70.2807 33.3143 69.1577Z" fill="#FF6F3D"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M33.3143 51.0822L2.00187 36.9345C-0.665498 35.6993 -0.665498 33.7906 2.00187 32.6676L12.6713 27.8394L33.3143 37.1591C35.9818 38.3941 40.2726 38.3941 42.8241 37.1591L63.4674 27.8394L74.1366 32.6676C76.8042 33.9028 76.8042 35.8116 74.1366 36.9345L42.8241 51.0822C40.1569 52.3175 35.8658 52.3175 33.3143 51.0822Z" fill="#95C038"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M33.3131 33.4888L2.00052 19.341C-0.666841 18.1058 -0.666841 16.197 2.00052 15.0742L33.3131 0.926346C35.9803 -0.308782 40.2714 -0.308782 42.8229 0.926346L74.1354 15.0742C76.8027 16.3093 76.8027 18.2181 74.1354 19.341L42.8229 33.4888C40.1554 34.6117 35.8646 34.6117 33.3131 33.4888Z" fill="#5DC0E8"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6 KiB |
|
|
@ -0,0 +1 @@
|
|||
EDITABLE_FORM_FIELDS = "eurooffice_connector.editable_form_fields"
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
from odoo.addons.eurooffice_odoo_templates.utils import config_constants
|
||||
|
||||
|
||||
def set_editable_form_fields(env, value):
|
||||
env["ir.config_parameter"].sudo().set_param(config_constants.EDITABLE_FORM_FIELDS, value)
|
||||
return
|
||||
|
||||
|
||||
def get_editable_form_fields(env):
|
||||
return env["ir.config_parameter"].sudo().get_param(config_constants.EDITABLE_FORM_FIELDS)
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
# TODO: add convert docx to pdf
|
||||
|
||||
|
||||
def is_pdf_form(text):
|
||||
if not text:
|
||||
return False
|
||||
|
||||
index_first = text.find(b"%\xcd\xca\xd2\xa9\x0d")
|
||||
if index_first == -1:
|
||||
return False
|
||||
|
||||
p_first = text[index_first + 6 :]
|
||||
|
||||
if not p_first.startswith(b"1 0 obj\x0a<<\x0a"):
|
||||
return False
|
||||
|
||||
p_first = p_first[11:]
|
||||
|
||||
signature = b"Euro-OfficeFORM"
|
||||
index_stream = p_first.find(b"stream\x0d\x0a")
|
||||
index_meta = p_first.find(signature)
|
||||
|
||||
if index_stream == -1 or index_meta == -1 or index_stream < index_meta:
|
||||
return False
|
||||
|
||||
p_meta = p_first[index_meta:]
|
||||
p_meta = p_meta[len(signature) + 3 :]
|
||||
|
||||
index_meta_last = p_meta.find(b" ")
|
||||
if index_meta_last == -1:
|
||||
return False
|
||||
|
||||
p_meta = p_meta[index_meta_last + 1 :]
|
||||
|
||||
index_meta_last = p_meta.find(b" ")
|
||||
if index_meta_last == -1:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
|
@ -0,0 +1,157 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<odoo>
|
||||
<record id="view_eurooffice_form" model="ir.ui.view">
|
||||
<field name="name">eurooffice.odoo.templates.form</field>
|
||||
<field name="model">eurooffice.odoo.templates</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Create template">
|
||||
<sheet>
|
||||
<group string="Template creation">
|
||||
<div class="text-muted" colspan="2"> Use this form to create a new fillable PDF template
|
||||
for your Odoo modules. Start by entering a <span class="fw-bolder">name </span> for
|
||||
your template to easily identify it later in the Euro-Office Templates list. </div>
|
||||
<div class="text-muted" colspan="2"> Choose the <span class="fw-bolder">Odoo module </span>
|
||||
(e.g., Employee, Invoice, Sales Order) that the template will be linked to. The chosen
|
||||
model defines the data fields available for automatic form filling. </div>
|
||||
<field name="name" required="1" />
|
||||
<field
|
||||
name="template_model_id"
|
||||
options="{'no_create': True, 'no_create_edit':True, 'no_open':True}"
|
||||
help="Model for which the template is being created."
|
||||
required="1"
|
||||
/>
|
||||
<field name="template_model_related_name" invisible="1" />
|
||||
<field name="template_model_model" invisible="1" />
|
||||
<field name="hide_file_field" invisible="1" />
|
||||
</group>
|
||||
<group string="Template uploading" attrs="{'invisible': [('hide_file_field', '=', True)]}">
|
||||
<div class="text-muted" colspan="2"> If you already have a <span class="fw-bolder">prepared
|
||||
PDF file</span> with fillable fields, you can upload it here </div>
|
||||
<field
|
||||
name="file"
|
||||
options="{'accepted_file_extensions': '.pdf', 'attachment': False}"
|
||||
help="Select an existing template. Leave the field blank to create a blank template."
|
||||
/>
|
||||
</group>
|
||||
<group>
|
||||
<div colspan="2">
|
||||
<div class="text-muted">
|
||||
Once you've saved the template, return to the Euro-Office Templates list.
|
||||
</div>
|
||||
<div class="text-muted">
|
||||
Locate your newly created template and set up the connections between the form
|
||||
fields in the Euro-Office editor and the corresponding data fields from the selected
|
||||
Odoo model.
|
||||
</div>
|
||||
</div>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_eurooffice_kanban_search" model="ir.ui.view">
|
||||
<field name="name">eurooffice.odoo.templates.kanban.search</field>
|
||||
<field name="model">eurooffice.odoo.templates</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="name" />
|
||||
<field name="template_model_name" />
|
||||
<group expand="0" string="Group By">
|
||||
<filter string="Model" name="template_model_id" context="{'group_by': 'template_model_id'}" />
|
||||
</group>
|
||||
<searchpanel>
|
||||
<field name="template_model_id" string="Model" enable_counters="1" />
|
||||
</searchpanel>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_eurooffice_kanban" model="ir.ui.view">
|
||||
<field name="name">eurooffice.odoo.templates.kanban</field>
|
||||
<field name="model">eurooffice.odoo.templates</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban js_class="eurooffice_kanban">
|
||||
<field name="id" />
|
||||
<field name="attachment_id" />
|
||||
<field name="mimetype" />
|
||||
<field name="create_uid" />
|
||||
<field name="create_date" />
|
||||
<field name="name" />
|
||||
<field name="template_model_name" />
|
||||
<field name="template_model_related_name" />
|
||||
<field name="template_model_model" />
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_global_area o_kanban_attachment oe_kanban_global_click">
|
||||
<div class="o_kanban_image">
|
||||
<div class="o_kanban_image_wrapper">
|
||||
<div class="o_image o_image_thumbnail" t-att-data-mimetype="record.mimetype.value" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="o_kanban_details">
|
||||
<div class="o_kanban_details_wrapper">
|
||||
<div class="o_kanban_record_title">
|
||||
<field name="name" class="o_text_overflow" />
|
||||
</div>
|
||||
<div class="o_kanban_record_body">
|
||||
<t t-if="template_model_related_name">
|
||||
<field name="template_model_related_name" widget="badge" />
|
||||
</t>
|
||||
<t t-else="">
|
||||
<field name="template_model_name" widget="badge" />
|
||||
</t>
|
||||
</div>
|
||||
<div class="o_kanban_record_bottom">
|
||||
<span class="oe_kanban_bottom_left">
|
||||
<field name="create_date" widget="date" />
|
||||
</span>
|
||||
<div class="oe_kanban_bottom_right oe_eurooffice_kanban_bottom_right">
|
||||
<field name="create_uid" widget="many2one_avatar_user" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="o_dropdown_kanban dropdown" tabindex="-1">
|
||||
<a
|
||||
class="dropdown-toggle o-no-caret btn"
|
||||
data-bs-toggle="dropdown"
|
||||
href="#"
|
||||
role="button"
|
||||
aria-label="Dropdown menu"
|
||||
title="Dropdown menu"
|
||||
>
|
||||
<span class="fa fa-ellipsis-v" />
|
||||
</a>
|
||||
<div class="dropdown-menu" role="menu" aria-labelledby="dLabel">
|
||||
<a t-if="widget.editable" type="edit" class="dropdown-item">Edit</a>
|
||||
<a t-if="widget.deletable" type="delete" class="dropdown-item">Delete</a>
|
||||
<a
|
||||
t-attf-href="/web/content/ir.attachment/#{record.attachment_id.raw_value}/datas?download=true"
|
||||
download=""
|
||||
class="dropdown-item"
|
||||
>Download</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_eurooffice_odoo_templates">
|
||||
<field name="name">Euro-Office Templates</field>
|
||||
<field name="res_model">eurooffice.odoo.templates</field>
|
||||
<field name="view_mode">kanban,form</field>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
id="eurooffice_menu"
|
||||
name="Euro-Office Templates"
|
||||
web_icon="eurooffice_odoo_templates,static/description/icon.svg"
|
||||
sequence="30"
|
||||
groups="eurooffice_odoo_templates.group_eurooffice_odoo_templates_user,eurooffice_odoo_templates.group_eurooffice_odoo_templates_admin"
|
||||
action="action_eurooffice_odoo_templates"
|
||||
/>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!-- -->
|
||||
<!-- (c) Copyright Ascensio System SIA 2024 -->
|
||||
<!-- -->
|
||||
<odoo>
|
||||
<record id="action_eurooffice_demo_templates" model="ir.actions.act_window">
|
||||
<field name="name">Manage Templates</field>
|
||||
<field name="res_model">eurooffice.odoo.demo.templates</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
<record id="view_eurooffice_demo_templates_form" model="ir.ui.view">
|
||||
<field name="name">eurooffice.demo.templates.form</field>
|
||||
<field name="model">eurooffice.odoo.demo.templates</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<p>
|
||||
Check templates you want to export to the Euro-Office Templates module and press Export. You can do this as many times as you need.
|
||||
</p>
|
||||
<field name="selected_templates" widget="eurooffice_template_tree" />
|
||||
<footer>
|
||||
<button name="action_save" string="Export" type="object" class="btn-primary" />
|
||||
<button string="Cancel" special="cancel" class="btn-secondary" />
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="res_config_settings_view_form" model="ir.ui.view">
|
||||
<field name="name">res.config.settings.view.form.inherit.eurooffice_odoo_templates</field>
|
||||
<field name="model">res.config.settings</field>
|
||||
<field name="priority" eval="10" />
|
||||
<field name="inherit_id" ref="base.res_config_settings_view_form" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[hasclass('o_eurooffice_settings_common')]" position="after">
|
||||
<div>
|
||||
<h2>Euro-Office Templates</h2>
|
||||
<div class="row mt16 o_settings_container">
|
||||
<div class="col-12 col-lg-6 o_setting_box">
|
||||
<div class="o_setting_left_pane" />
|
||||
<div class="o_setting_right_pane">
|
||||
<span class="o_form_label">
|
||||
Templates gallery
|
||||
</span>
|
||||
<div class="text-muted">
|
||||
Export templates to the Euro-Office Templates module
|
||||
</div>
|
||||
<div class="text-muted content-group mt16">
|
||||
<button
|
||||
type="action"
|
||||
name="%(action_eurooffice_demo_templates)d"
|
||||
string="Manage templates"
|
||||
class="btn-link"
|
||||
icon="fa-arrow-right"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt16 o_settings_container">
|
||||
<div class="col-12 col-lg-6 o_setting_box">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="editable_form_fields" />
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label class="o_form_label" for="editable_form_fields">
|
||||
Disable form fields after printing PDF form
|
||||
</label>
|
||||
<div class="text-muted">
|
||||
Form fields cannot be filled in manually if they were not automatically filled in
|
||||
with data from Odoo
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||