diff --git a/odex30_base/branch/LICENSE b/odex30_base/branch/LICENSE
new file mode 100644
index 0000000..de7bcc6
--- /dev/null
+++ b/odex30_base/branch/LICENSE
@@ -0,0 +1,28 @@
+Odoo Proprietary License v1.0
+
+This software and associated files (the "Software") may only be used (executed,
+modified, executed after modifications) if you have purchased a valid license
+from the authors, typically via Odoo Apps, or if you have received a written
+agreement from the authors of the Software (see the COPYRIGHT file).
+
+You may develop Odoo modules that use the Software as a library (typically
+by depending on it, importing it and using its resources), but without copying
+any source code or material from the Software. You may distribute those
+modules under the license of your choice, provided that this license is
+compatible with the terms of the Odoo Proprietary License (For example:
+LGPL, MIT, or proprietary licenses similar to this one).
+
+It is forbidden to publish, distribute, sublicense, or sell copies of the Software
+or modified copies of the Software.
+
+The above copyright notice and this permission notice must be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
diff --git a/odex30_base/branch/README.txt b/odex30_base/branch/README.txt
new file mode 100644
index 0000000..d6336ee
--- /dev/null
+++ b/odex30_base/branch/README.txt
@@ -0,0 +1,44 @@
+
+Version 14.0.0.1 : (23/10/20)
+ - Update _assign_picking() and _create_account_move_line() methods as per base.
+
+14.0.0.3==> added abstract_web_client js according to v14.
+
+=> 14.0.0.4 : Add language translate with index.
+
+
+date 03/05/21
+version 14.0.0.5
+issue solve:-
+ - invoice and bill genenrated in sinlge click
+
+=> 14.0.0.9 : Add French, Spanish , Arabic and Dutch translation in module also improved an index.
+
+
+date 02/09/21
+version 14.0.1.0
+issue solve:-
+ - account payment register wizard not show branch field.
+
+date 09/09/21
+version 14.0.2.0
+issue solve:-
+ - show branch field in sale , purchase ,invoice bill and payment tree view
+
+date 13/09/21
+version 14.0.3.0
+issue solve:-
+1. From demo user->In sale rights, I give User: Own Documents Only ->but it shows the sale order of all the users(when I give branch in sale order)
+
+2. From demo user, ->change branch from header ->in pos, when I open shop it generates traceback
+
+3. from demo user->in Invoice -> It shows all the invoices of all the branches.
+
+date 27/09/21
+version 14.0.4.0
+issue solve:-
+1.) . Sales -> Quotation / Orders -> On changing Branch from dropdown header it shows older branch records until refresh the page. Not refreshing records with changing branch.
+
+
+14.0.4.1 (1-10-21) : Pass branch in account move correct, two view name same for different object changed it and fixed.
+
diff --git a/odex30_base/branch/__init__.py b/odex30_base/branch/__init__.py
new file mode 100644
index 0000000..129043b
--- /dev/null
+++ b/odex30_base/branch/__init__.py
@@ -0,0 +1,9 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from . import models
+from . import reports
+from . import wizard
+from . import controllers
+from .hooks import post_init_hook
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/odex30_base/branch/__manifest__.py b/odex30_base/branch/__manifest__.py
new file mode 100644
index 0000000..913289e
--- /dev/null
+++ b/odex30_base/branch/__manifest__.py
@@ -0,0 +1,129 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+{
+ 'name': 'Multiple Branch Unit Operation Setup for All Applications Odoo',
+ 'version': '18.0.1.0.0',
+ 'category': 'Sales',
+ 'summary': 'Multiple Branch Management Multi Branch app Multiple Unit multiple Operating unit sales branch Sales Purchase branch Invoicing branch billing Voucher branch warehouse branch Payment branch Accounting Reports for single company Multi Branches multi company',
+ "description": """
+ Multiple Unit operation management for single company Multiple Branch management for single company
+ multiple operation for single company branching company in odoo multiple store multiple company in odoo
+ Branch for POS Branch for Sales Branch for Purchase Branch for all Branch for Accounting Branch for invoicing Branch for Payment order Branch for point of sales Branch for voucher
+ Branch for All Accounting reports Branch Accounting filter Branch for warehouse branch for sale stock branch for location
+ Unit for POS Unit for Sales Unit for Purchase Unit for all Unit for Accounting Unit for invoicing Unit for Payment order Unit for point of sales Unit for voucher Unit
+ unit All Accounting reports Unit Accounting filter branch unit for warehouse branch unit for sale stock branch unit for location
+ Unit Operation for POS Unit Operation for Sales Unit operation for Purchase Unit operation for all Unit operation for Accounting Unit Operation for invoicing Unit operation for Payment order Unit operation for point of sales Unit operation for voucher Unit operation for All Accounting reports Unit operation Accounting filter.
+ Branch Operation for POS Branch Operation for Sales Branch operation for Purchase Branch operation for all Branch operation for Accounting Branch Operation for invoicing Branch operation for Payment order Branch operation for point of sales Branch operation for voucher Branch operation for All Accounting reports Branch operation Accounting filter.
+ Odoo pos multi branch POS odoo point of sale multi branch point of sales
+ odoo point of sales multi branch on POS
+ Odoo pos multiple branch POS odoo point of sale multiple branch point of sales
+ odoo point of sales multiple branch on POS
+ Odoo pos multiple-branch POS odoo point of sale multiple-branch point of sales
+ odoo point of sales multiple-branch on POS
+ odoo Multiple Unit operation management for single company Multiple Branch management for single company
+ odoo multiple operation for single company. branching company in odoo multiple store multiple company in odoo
+ odoo Branch for POS Branch for Sales Branch for Purchase Branch for all Branch for Accounting Branch for invoicing Branch for Payment order Branch for point of sales Branch for voucher
+ odoo Branch for All Accounting reports Branch Accounting filter Branch for warehouse branch for sale stock branch for location
+ odoo Unit for POS Unit for Sales Unit for Purchase Unit for all Unit for Accounting Unit for invoicing Unit for Payment order
+ odoo Unit for point of sales Unit for voucher Unit for All Accounting reports Unit Accounting filter
+ odoo branch unit for warehouse branch unit for sale stock branch unit for location
+ odoo Unit Operation for POS Unit Operation for Sales Unit operation for Purchase Unit operation for all Unit operation for Accounting
+ odoo Unit Operation for invoicing Unit operation for Payment order Unit operation for point of sales Unit operation for voucher Unit operation for All Accounting reports
+ odoo Unit operation Accounting filter Branch Operation for POS Branch Operation for Sales
+ odoo Branch operation for Purchase Branch operation for all Branch operation for Accounting Branch Operation for invoicing
+ odoo Branch operation for Payment order Branch operation for point of sales Branch operation for voucher Branch operation for All Accounting reports Branch operation Accounting filter.
+ odoo branch helpdesk and support branch support and helpdesk
+ odoo helpdesk branch helpdesk unit helpdek multiple unit helpdesk operation unit
+ odoo branch crm odoo crm branch crm operating unit crm unit operation management crm multiple unit operating unit crm
+ odoo branch Subscription branch contract Subscription branch management
+ odoo contract branch management operating unit Subscription operating unit contract
+ odoo Subscription unit management contract unit management Subscription operating unit management
+ odoo contract operating unit management operating unit for company multi branch management
+ odoo multi branch application multi operation unit application multi branch odoo multi branch
+ odoo all in one multi branch application multi branch unit operation multi unit operation branch management
+ odoo multi branches management application multi operation management operating Unit for POS operating Unit for Sales
+ odoo operating Units for Purchase operating Unit for all operating Unit for Accounting operating Unit for invoicing
+ odoo operating Unit for Payment order operating Unit for point of sales operating Unit for voucher operating Unit for All Accounting reports operating Unit Accounting filter.
+ odoo Operating unit for picking operating unit for warehouse operating unit for sale stock operating unit for location
+odoo operating-Unit Operation for POS operating-Unit Operation for Sales operating-Unit operation for Purchase operating-Unit operation for all
+odoo operating-Unit operation for Accounting operating-Unit Operation for invoicing operating-Unit operation for Payment order operating-Unit operation for point of sales
+odoo operating-Unit operation for voucher operating-Unit operation for All Accounting reports operating-Unit operation Accounting filter.
+odoo multi branches management odoo branches management odoo multiple branches management on odoo branchs mananegement
+odoo many branches for single company odoo
+
+ branch helpdesk and support
+ branch support and helpdesk
+ helpdesk branch
+ helpdesk unit
+ helpdek multiple unit
+ helpdesk operation unit
+ branch crm
+ MultiBranch
+ multi company
+ crm branch
+ crm operating unit
+ crm unit operation management
+ crm multiple unit
+ operating unit crm
+ branch Subscription
+ branch contract
+ Subscription branch management
+ contract branch management
+ operating unit Subscription
+ operating unit contract
+ Subscription unit management
+ contract unit management
+ Subscription operating unit management
+ contract operating unit management
+
+ operating unit for company.
+ multi branch management
+ multi branch application
+ multi operation unit application multi branch odoo multi branch
+ all in one multi branch application multi branch unit operation multi unit operation branch management
+ odoo multi branches management application multi operation management
+
+operating Unit for POS,operating Unit for Sales,operating Unit for Purchase,operating Unit for all,operating Unit for Accounting,operating Unit for invoicing,operating Unit for Payment order,operating Unit for point of sales,operating Unit for voucher,operating Unit for All Accounting reports,operating Unit Accounting filter. Operating unit for picking, operating unit for warehouse, operating unit for sale stock, operating unit for location
+operating-Unit Operation for POS,operating-Unit Operation for Sales,operating-Unit operation for Purchase,operating-Unit operation for all, operating-Unit operation for Accounting,operating-Unit Operation for invoicing,operating-Unit operation for Payment order,operating-Unit operation for point of sales,operating-Unit operation for voucher,operating-Unit operation for All Accounting reports,operating-Unit operation Accounting filter.
+ """,
+ 'author': 'BrowseInfo',
+ 'website': 'https://www.browseinfo.in',
+ "price": 149.00,
+ "currency": 'EUR',
+ 'depends': ['base', 'sale_management', 'purchase', 'stock', 'account', 'purchase_stock','web'],
+ 'data': [
+ 'security/branch_security.xml',
+ 'security/multi_branch.xml',
+ 'security/ir.model.access.csv',
+ 'views/res_branch_view.xml',
+ 'views/inherited_res_users.xml',
+ 'views/inherited_sale_order.xml',
+ 'views/inherited_stock_picking.xml',
+ 'views/inherited_stock_move.xml',
+ 'views/inherited_account_invoice.xml',
+ 'views/inherited_purchase_order.xml',
+ 'views/inherited_stock_warehouse.xml',
+ 'views/inherited_stock_location.xml',
+ 'views/inherited_account_bank_statement.xml',
+ 'wizard/inherited_account_payment.xml',
+ 'views/inherited_stock_inventory.xml',
+ 'views/inherited_product.xml',
+ 'views/inherited_partner.xml',
+ 'views/branch_template.xml',
+ ],
+ 'assets': {
+ 'web.assets_backend': [
+ 'branch/static/src/js/session.js',
+ 'branch/static/src/js/abstract_web_client.js',
+ 'branch/static/src/js/default_branch.js',
+ 'branch/static/src/xml/branch.xml',
+ ],
+ },
+ 'installable': True,
+ 'auto_install': False,
+ 'live_test_url':'https://youtu.be/hi1b8kH5Z94',
+ "images":['static/description/Banner.png'],
+ 'post_init_hook': 'post_init_hook',
+}
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/odex30_base/branch/controllers/__init__.py b/odex30_base/branch/controllers/__init__.py
new file mode 100644
index 0000000..5824557
--- /dev/null
+++ b/odex30_base/branch/controllers/__init__.py
@@ -0,0 +1,6 @@
+# -*- coding: utf-8 -*-
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from . import main
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
diff --git a/odex30_base/branch/controllers/main.py b/odex30_base/branch/controllers/main.py
new file mode 100644
index 0000000..97f169e
--- /dev/null
+++ b/odex30_base/branch/controllers/main.py
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import http, _
+from odoo.addons.portal.controllers.portal import CustomerPortal, pager as portal_pager
+from odoo.http import request
+
+class SetBranch(http.Controller):
+
+ @http.route('/set_brnach', type='json', auth="public", methods=['POST'], website=True)
+ def custom_hours(self, BranchID, **post):
+ user_id = request.env['res.users'].sudo().search([('id','=',request.env.user.id)])
+ user_id.branch_id = BranchID
+ return
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
diff --git a/odex30_base/branch/hooks.py b/odex30_base/branch/hooks.py
new file mode 100644
index 0000000..d26afc8
--- /dev/null
+++ b/odex30_base/branch/hooks.py
@@ -0,0 +1,15 @@
+# -*- encoding: utf-8 -*-
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from odoo import SUPERUSER_ID
+from odoo import api
+
+
+def post_init_hook(cr, registry):
+ """
+ website menu hide
+ """
+ env = api.Environment(cr, SUPERUSER_ID, {})
+ cr.execute("""
+ update ir_model_data set noupdate=False where
+ model ='ir.rule' """)
diff --git a/odex30_base/branch/i18n/ar_001.po b/odex30_base/branch/i18n/ar_001.po
new file mode 100644
index 0000000..d48fd10
--- /dev/null
+++ b/odex30_base/branch/i18n/ar_001.po
@@ -0,0 +1,273 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * branch
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 13.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-02-08 13:27+0000\n"
+"PO-Revision-Date: 2021-02-08 13:27+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: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__address
+msgid "Address"
+msgstr "عنوان"
+
+#. module: branch
+#: code:addons/branch/models/inherited_account_bank_statement.py:0
+#, python-format
+msgid "All the account entries lines must be processed in order to close the statement."
+msgstr "يجب معالجة جميع سطور إدخالات الحساب لإغلاق البيان."
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_users__branch_ids
+msgid "Allowed Branch"
+msgstr "الفرع المسموح به"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_bank_statement
+msgid "Bank Statement"
+msgstr "كشف حساب بنكى"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_bank_statement_line
+msgid "Bank Statement Line"
+msgstr "خط كشف الحساب المصرفي"
+
+#. module: branch
+#: model:ir.actions.act_window,name:branch.branch_action_res_branch
+#: model:ir.model,name:branch.model_res_branch
+#: model:ir.model.fields,field_description:branch.field_account_bank_statement__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_bank_statement_line__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_invoice_report__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_move__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_move_line__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_payment__branch_id
+#: model:ir.model.fields,field_description:branch.field_product_product__branch_id
+#: model:ir.model.fields,field_description:branch.field_product_template__branch_id
+#: model:ir.model.fields,field_description:branch.field_purchase_order__branch_id
+#: model:ir.model.fields,field_description:branch.field_purchase_order_line__branch_id
+#: model:ir.model.fields,field_description:branch.field_purchase_report__branch_id
+#: model:ir.model.fields,field_description:branch.field_res_partner__branch_id
+#: model:ir.model.fields,field_description:branch.field_res_users__branch_id
+#: model:ir.model.fields,field_description:branch.field_sale_order__branch_id
+#: model:ir.model.fields,field_description:branch.field_sale_report__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_inventory__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_location__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_move__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_picking__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_picking_type__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_warehouse__branch_id
+#: model:ir.module.category,name:branch.module_branch_management
+#: model:ir.ui.menu,name:branch.branch_menu_res_branch
+#: model_terms:ir.ui.view,arch_db:branch.branch_res_branch_view_form
+#: model_terms:ir.ui.view,arch_db:branch.branch_res_branch_view_tree
+#: model_terms:ir.ui.view,arch_db:branch.view_move_line_order_filter_inherit_branch11
+#: model_terms:ir.ui.view,arch_db:branch.view_order_form_inherit_branch
+#: model_terms:ir.ui.view,arch_db:branch.view_purchase_order_filter_inherit_branch
+#: model_terms:ir.ui.view,arch_db:branch.view_sales_order_filter_inherit_branch
+msgid "Branch"
+msgstr "فرع شجرة"
+
+#. module: branch
+#: model_terms:ir.actions.act_window,help:branch.branch_action_res_branch
+msgid "Click here to create a new branch."
+msgstr "انقر هنا لإنشاء فرع جديد."
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__company_id
+msgid "Company"
+msgstr "شركة"
+
+#. module: branch
+#: code:addons/branch/models/inherited_stock_location.py:0
+#, python-format
+msgid "Configuration error You must select same branch on a location as assigned on a warehouse configuration."
+msgstr "خطأ في التكوين يجب تحديد نفس الفرع في الموقع كما تم تعيينه في تكوين المستودع."
+
+#. module: branch
+#: model:ir.model,name:branch.model_res_partner
+msgid "Contact"
+msgstr "اتصل"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__create_uid
+msgid "Created by"
+msgstr "انشأ من قبل"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__create_date
+msgid "Created on"
+msgstr "تم إنشاؤها على"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__display_name
+msgid "Display Name"
+msgstr "اسم العرض"
+
+#. module: branch
+#. openerp-web
+#: code:addons/branch/static/src/xml/branch.xml:0
+#, python-format
+msgid "Dropdown menu"
+msgstr "القائمة المنسدلة"
+
+#. module: branch
+#: model:ir.model,name:branch.model_ir_http
+msgid "HTTP Routing"
+msgstr ""
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__id
+msgid "ID"
+msgstr ""
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_inventory
+msgid "Inventory"
+msgstr "المخزون"
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_location
+msgid "Inventory Locations"
+msgstr "مواقع الجرد"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_invoice_report
+msgid "Invoices Statistics"
+msgstr "إحصائيات الفواتير"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_move
+msgid "Journal Entries"
+msgstr "إدخالات دفتر اليومية"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_move_line
+msgid "Journal Item"
+msgstr "عنصر المجلة"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch____last_update
+msgid "Last Modified on"
+msgstr "تاريخ آخر تعديل"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__write_uid
+msgid "Last Updated by"
+msgstr "آخر تحديث بواسطة"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__write_date
+msgid "Last Updated on"
+msgstr "آخر تحديث في"
+
+#. module: branch
+#: model:res.groups,name:branch.group_branch_user_manager
+msgid "Manager"
+msgstr "مدير"
+
+#. module: branch
+#: model:res.groups,name:branch.group_multi_branch
+msgid "Multi Branches"
+msgstr "متعدد الفروع"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__name
+msgid "Name"
+msgstr "اسم"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_payment
+msgid "Payments"
+msgstr "المدفوعات"
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_picking_type
+msgid "Picking Type"
+msgstr "نوع الانتقاء"
+
+#. module: branch
+#: model:ir.model,name:branch.model_product_template
+msgid "Product Template"
+msgstr "نموذج المنتج"
+
+#. module: branch
+#: model:ir.model,name:branch.model_purchase_order
+msgid "Purchase Order"
+msgstr "أمر شراء"
+
+#. module: branch
+#: model:ir.model,name:branch.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "خط طلب الشراء"
+
+#. module: branch
+#: model:ir.model,name:branch.model_purchase_report
+msgid "Purchase Report"
+msgstr "تقرير الشراء"
+
+#. module: branch
+#: model:ir.model,name:branch.model_sale_advance_payment_inv
+msgid "Sales Advance Payment Invoice"
+msgstr "فاتورة دفع مقدم المبيعات"
+
+#. module: branch
+#: model:ir.model,name:branch.model_sale_report
+msgid "Sales Analysis Report"
+msgstr "تقرير تحليل المبيعات"
+
+#. module: branch
+#: model:ir.model,name:branch.model_sale_order
+msgid "Sales Order"
+msgstr "طلب المبيعات"
+
+#. module: branch
+#: code:addons/branch/models/inherited_account_bank_statement.py:0
+#, python-format
+msgid "Statement %s confirmed, journal items were created."
+msgstr ""
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_move
+msgid "Stock Move"
+msgstr "نقل الأسهم"
+
+#. module: branch
+#. openerp-web
+#: code:addons/branch/static/src/xml/branch.xml:0
+#, python-format
+msgid "Switch to this branch"
+msgstr "قم بالتبديل إلى هذا الفرع"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__telephone
+msgid "Telephone No"
+msgstr "الهاتف لا"
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_picking
+msgid "Transfer"
+msgstr "نقل"
+
+#. module: branch
+#: model:res.groups,name:branch.group_branch_user
+msgid "User"
+msgstr "المستعمل"
+
+#. module: branch
+#: model:ir.model,name:branch.model_res_users
+msgid "Users"
+msgstr "المستخدمين"
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_warehouse
+msgid "Warehouse"
+msgstr "مستودع"
diff --git a/odex30_base/branch/i18n/es.po b/odex30_base/branch/i18n/es.po
new file mode 100644
index 0000000..bb9a365
--- /dev/null
+++ b/odex30_base/branch/i18n/es.po
@@ -0,0 +1,273 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * branch
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 13.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-02-09 05:28+0000\n"
+"PO-Revision-Date: 2021-02-09 05:28+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: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__address
+msgid "Address"
+msgstr "Habla a"
+
+#. module: branch
+#: code:addons/branch/models/inherited_account_bank_statement.py:0
+#, python-format
+msgid "All the account entries lines must be processed in order to close the statement."
+msgstr "Todas las líneas de asientos de cuenta deben procesarse para cerrar el estado de cuenta."
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_users__branch_ids
+msgid "Allowed Branch"
+msgstr "Rama permitida"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_bank_statement
+msgid "Bank Statement"
+msgstr "Extracto de cuenta"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_bank_statement_line
+msgid "Bank Statement Line"
+msgstr "Línea de extracto bancario"
+
+#. module: branch
+#: model:ir.actions.act_window,name:branch.branch_action_res_branch
+#: model:ir.model,name:branch.model_res_branch
+#: model:ir.model.fields,field_description:branch.field_account_bank_statement__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_bank_statement_line__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_invoice_report__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_move__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_move_line__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_payment__branch_id
+#: model:ir.model.fields,field_description:branch.field_product_product__branch_id
+#: model:ir.model.fields,field_description:branch.field_product_template__branch_id
+#: model:ir.model.fields,field_description:branch.field_purchase_order__branch_id
+#: model:ir.model.fields,field_description:branch.field_purchase_order_line__branch_id
+#: model:ir.model.fields,field_description:branch.field_purchase_report__branch_id
+#: model:ir.model.fields,field_description:branch.field_res_partner__branch_id
+#: model:ir.model.fields,field_description:branch.field_res_users__branch_id
+#: model:ir.model.fields,field_description:branch.field_sale_order__branch_id
+#: model:ir.model.fields,field_description:branch.field_sale_report__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_inventory__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_location__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_move__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_picking__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_picking_type__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_warehouse__branch_id
+#: model:ir.module.category,name:branch.module_branch_management
+#: model:ir.ui.menu,name:branch.branch_menu_res_branch
+#: model_terms:ir.ui.view,arch_db:branch.branch_res_branch_view_form
+#: model_terms:ir.ui.view,arch_db:branch.branch_res_branch_view_tree
+#: model_terms:ir.ui.view,arch_db:branch.view_move_line_order_filter_inherit_branch11
+#: model_terms:ir.ui.view,arch_db:branch.view_order_form_inherit_branch
+#: model_terms:ir.ui.view,arch_db:branch.view_purchase_order_filter_inherit_branch
+#: model_terms:ir.ui.view,arch_db:branch.view_sales_order_filter_inherit_branch
+msgid "Branch"
+msgstr "Rama"
+
+#. module: branch
+#: model_terms:ir.actions.act_window,help:branch.branch_action_res_branch
+msgid "Click here to create a new branch."
+msgstr "Haga clic aquí para crear una nueva rama."
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__company_id
+msgid "Company"
+msgstr "Empresa"
+
+#. module: branch
+#: code:addons/branch/models/inherited_stock_location.py:0
+#, python-format
+msgid "Configuration error You must select same branch on a location as assigned on a warehouse configuration."
+msgstr "Error de configuración Debe seleccionar la misma sucursal en una ubicación asignada en una configuración de almacén."
+
+#. module: branch
+#: model:ir.model,name:branch.model_res_partner
+msgid "Contact"
+msgstr "Contacto"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__create_date
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__display_name
+msgid "Display Name"
+msgstr "Nombre para mostrar"
+
+#. module: branch
+#. openerp-web
+#: code:addons/branch/static/src/xml/branch.xml:0
+#, python-format
+msgid "Dropdown menu"
+msgstr "Menú desplegable"
+
+#. module: branch
+#: model:ir.model,name:branch.model_ir_http
+msgid "HTTP Routing"
+msgstr ""
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__id
+msgid "ID"
+msgstr ""
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_inventory
+msgid "Inventory"
+msgstr "Inventario"
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_location
+msgid "Inventory Locations"
+msgstr "Ubicaciones de inventario"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_invoice_report
+msgid "Invoices Statistics"
+msgstr "Estadísticas de facturas"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_move
+msgid "Journal Entries"
+msgstr "Entradas de diario"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_move_line
+msgid "Journal Item"
+msgstr "Artículo de diario"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch____last_update
+msgid "Last Modified on"
+msgstr "Última modificación el"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__write_uid
+msgid "Last Updated by"
+msgstr "Actualizado por última vez por"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__write_date
+msgid "Last Updated on"
+msgstr "Ultima actualización en"
+
+#. module: branch
+#: model:res.groups,name:branch.group_branch_user_manager
+msgid "Manager"
+msgstr "Gerente"
+
+#. module: branch
+#: model:res.groups,name:branch.group_multi_branch
+msgid "Multi Branches"
+msgstr "Varias ramas"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__name
+msgid "Name"
+msgstr "Nombre"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_payment
+msgid "Payments"
+msgstr "Pagos"
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_picking_type
+msgid "Picking Type"
+msgstr "Tipo de selección"
+
+#. module: branch
+#: model:ir.model,name:branch.model_product_template
+msgid "Product Template"
+msgstr "Plantilla de producto"
+
+#. module: branch
+#: model:ir.model,name:branch.model_purchase_order
+msgid "Purchase Order"
+msgstr "Orden de compra"
+
+#. module: branch
+#: model:ir.model,name:branch.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Línea de orden de compra"
+
+#. module: branch
+#: model:ir.model,name:branch.model_purchase_report
+msgid "Purchase Report"
+msgstr "Informe de compra"
+
+#. module: branch
+#: model:ir.model,name:branch.model_sale_advance_payment_inv
+msgid "Sales Advance Payment Invoice"
+msgstr "Factura de anticipo de ventas"
+
+#. module: branch
+#: model:ir.model,name:branch.model_sale_report
+msgid "Sales Analysis Report"
+msgstr "Informe de análisis de ventas"
+
+#. module: branch
+#: model:ir.model,name:branch.model_sale_order
+msgid "Sales Order"
+msgstr "Órdenes de venta"
+
+#. module: branch
+#: code:addons/branch/models/inherited_account_bank_statement.py:0
+#, python-format
+msgid "Statement confirmed, journal items were created."
+msgstr "Declaración confirmada, se crearon elementos del diario."
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_move
+msgid "Stock Move"
+msgstr "Movimiento de stock"
+
+#. module: branch
+#. openerp-web
+#: code:addons/branch/static/src/xml/branch.xml:0
+#, python-format
+msgid "Switch to this branch"
+msgstr "Cambiar a esta rama"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__telephone
+msgid "Telephone No"
+msgstr "Teléfono no"
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_picking
+msgid "Transfer"
+msgstr "Transferir"
+
+#. module: branch
+#: model:res.groups,name:branch.group_branch_user
+msgid "User"
+msgstr "Usuaria"
+
+#. module: branch
+#: model:ir.model,name:branch.model_res_users
+msgid "Users"
+msgstr "Usuarias"
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_warehouse
+msgid "Warehouse"
+msgstr "Almacén"
diff --git a/odex30_base/branch/i18n/fr.po b/odex30_base/branch/i18n/fr.po
new file mode 100644
index 0000000..8a7f308
--- /dev/null
+++ b/odex30_base/branch/i18n/fr.po
@@ -0,0 +1,273 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * branch
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 13.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-02-09 06:11+0000\n"
+"PO-Revision-Date: 2021-02-09 06:11+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: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__address
+msgid "Address"
+msgstr "Adresse"
+
+#. module: branch
+#: code:addons/branch/models/inherited_account_bank_statement.py:0
+#, python-format
+msgid "All the account entries lines must be processed in order to close the statement."
+msgstr "Toutes les lignes d'écritures de compte doivent être traitées afin de fermer le relevé."
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_users__branch_ids
+msgid "Allowed Branch"
+msgstr "Succursale autorisée"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_bank_statement
+msgid "Bank Statement"
+msgstr "Relevé bancaire"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_bank_statement_line
+msgid "Bank Statement Line"
+msgstr "Ligne de relevé bancaire"
+
+#. module: branch
+#: model:ir.actions.act_window,name:branch.branch_action_res_branch
+#: model:ir.model,name:branch.model_res_branch
+#: model:ir.model.fields,field_description:branch.field_account_bank_statement__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_bank_statement_line__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_invoice_report__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_move__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_move_line__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_payment__branch_id
+#: model:ir.model.fields,field_description:branch.field_product_product__branch_id
+#: model:ir.model.fields,field_description:branch.field_product_template__branch_id
+#: model:ir.model.fields,field_description:branch.field_purchase_order__branch_id
+#: model:ir.model.fields,field_description:branch.field_purchase_order_line__branch_id
+#: model:ir.model.fields,field_description:branch.field_purchase_report__branch_id
+#: model:ir.model.fields,field_description:branch.field_res_partner__branch_id
+#: model:ir.model.fields,field_description:branch.field_res_users__branch_id
+#: model:ir.model.fields,field_description:branch.field_sale_order__branch_id
+#: model:ir.model.fields,field_description:branch.field_sale_report__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_inventory__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_location__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_move__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_picking__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_picking_type__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_warehouse__branch_id
+#: model:ir.module.category,name:branch.module_branch_management
+#: model:ir.ui.menu,name:branch.branch_menu_res_branch
+#: model_terms:ir.ui.view,arch_db:branch.branch_res_branch_view_form
+#: model_terms:ir.ui.view,arch_db:branch.branch_res_branch_view_tree
+#: model_terms:ir.ui.view,arch_db:branch.view_move_line_order_filter_inherit_branch11
+#: model_terms:ir.ui.view,arch_db:branch.view_order_form_inherit_branch
+#: model_terms:ir.ui.view,arch_db:branch.view_purchase_order_filter_inherit_branch
+#: model_terms:ir.ui.view,arch_db:branch.view_sales_order_filter_inherit_branch
+msgid "Branch"
+msgstr "Branche"
+
+#. module: branch
+#: model_terms:ir.actions.act_window,help:branch.branch_action_res_branch
+msgid "Click here to create a new branch."
+msgstr "Cliquez ici pour créer une nouvelle branche."
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__company_id
+msgid "Company"
+msgstr "Entreprise"
+
+#. module: branch
+#: code:addons/branch/models/inherited_stock_location.py:0
+#, python-format
+msgid "Configuration error You must select same branch on a location as assigned on a warehouse configuration."
+msgstr "Erreur de configuration Vous devez sélectionner la même succursale sur un emplacement comme affectée dans une configuration d'entrepôt."
+
+#. module: branch
+#: model:ir.model,name:branch.model_res_partner
+msgid "Contact"
+msgstr ""
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__create_uid
+msgid "Created by"
+msgstr "Créé par"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__create_date
+msgid "Created on"
+msgstr "Créé sur"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__display_name
+msgid "Display Name"
+msgstr "Afficher un nom"
+
+#. module: branch
+#. openerp-web
+#: code:addons/branch/static/src/xml/branch.xml:0
+#, python-format
+msgid "Dropdown menu"
+msgstr "Menu déroulant"
+
+#. module: branch
+#: model:ir.model,name:branch.model_ir_http
+msgid "HTTP Routing"
+msgstr ""
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__id
+msgid "ID"
+msgstr ""
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_inventory
+msgid "Inventory"
+msgstr "Inventaire"
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_location
+msgid "Inventory Locations"
+msgstr ""
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_invoice_report
+msgid "Invoices Statistics"
+msgstr "Statistiques des factures"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_move
+msgid "Journal Entries"
+msgstr "Entrées de journal"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_move_line
+msgid "Journal Item"
+msgstr "Article de journal"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch____last_update
+msgid "Last Modified on"
+msgstr "Dernière modification le"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__write_uid
+msgid "Last Updated by"
+msgstr "Dernière mise à jour par"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__write_date
+msgid "Last Updated on"
+msgstr "Dernière mise à jour le"
+
+#. module: branch
+#: model:res.groups,name:branch.group_branch_user_manager
+msgid "Manager"
+msgstr "Directrice"
+
+#. module: branch
+#: model:res.groups,name:branch.group_multi_branch
+msgid "Multi Branches"
+msgstr "Branches multiples"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__name
+msgid "Name"
+msgstr "Nom"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_payment
+msgid "Payments"
+msgstr "Paiements"
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_picking_type
+msgid "Picking Type"
+msgstr "Type de prélèvement"
+
+#. module: branch
+#: model:ir.model,name:branch.model_product_template
+msgid "Product Template"
+msgstr "Modèle de produit"
+
+#. module: branch
+#: model:ir.model,name:branch.model_purchase_order
+msgid "Purchase Order"
+msgstr "Bon de commande"
+
+#. module: branch
+#: model:ir.model,name:branch.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Ligne de commande d'achat"
+
+#. module: branch
+#: model:ir.model,name:branch.model_purchase_report
+msgid "Purchase Report"
+msgstr "Rapport d'achat"
+
+#. module: branch
+#: model:ir.model,name:branch.model_sale_advance_payment_inv
+msgid "Sales Advance Payment Invoice"
+msgstr "Facture de paiement anticipé des ventes"
+
+#. module: branch
+#: model:ir.model,name:branch.model_sale_report
+msgid "Sales Analysis Report"
+msgstr "Rapport d'analyse des ventes"
+
+#. module: branch
+#: model:ir.model,name:branch.model_sale_order
+msgid "Sales Order"
+msgstr "Commande client"
+
+#. module: branch
+#: code:addons/branch/models/inherited_account_bank_statement.py:0
+#, python-format
+msgid "Statement confirmed, journal items were created."
+msgstr "Relevé confirmé, des éléments de journal ont été créés."
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_move
+msgid "Stock Move"
+msgstr "Déplacement de stock"
+
+#. module: branch
+#. openerp-web
+#: code:addons/branch/static/src/xml/branch.xml:0
+#, python-format
+msgid "Switch to this branch"
+msgstr "Passer à cette branche"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__telephone
+msgid "Telephone No"
+msgstr "N ° de téléphone"
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_picking
+msgid "Transfer"
+msgstr "Transfert"
+
+#. module: branch
+#: model:res.groups,name:branch.group_branch_user
+msgid "User"
+msgstr "Utilisateur"
+
+#. module: branch
+#: model:ir.model,name:branch.model_res_users
+msgid "Users"
+msgstr "Utilisateurs"
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_warehouse
+msgid "Warehouse"
+msgstr "Entrepôt"
diff --git a/odex30_base/branch/i18n/nl.po b/odex30_base/branch/i18n/nl.po
new file mode 100644
index 0000000..282af19
--- /dev/null
+++ b/odex30_base/branch/i18n/nl.po
@@ -0,0 +1,273 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * branch
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 13.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-02-09 06:37+0000\n"
+"PO-Revision-Date: 2021-02-09 06:37+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: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__address
+msgid "Address"
+msgstr "Adres"
+
+#. module: branch
+#: code:addons/branch/models/inherited_account_bank_statement.py:0
+#, python-format
+msgid "All the account entries lines must be processed in order to close the statement."
+msgstr "Alle regels voor rekeningboekingen moeten worden verwerkt om het overzicht af te sluiten."
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_users__branch_ids
+msgid "Allowed Branch"
+msgstr "Toegestane tak"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_bank_statement
+msgid "Bank Statement"
+msgstr "Bankafschrift"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_bank_statement_line
+msgid "Bank Statement Line"
+msgstr "Bankafschriftregel"
+
+#. module: branch
+#: model:ir.actions.act_window,name:branch.branch_action_res_branch
+#: model:ir.model,name:branch.model_res_branch
+#: model:ir.model.fields,field_description:branch.field_account_bank_statement__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_bank_statement_line__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_invoice_report__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_move__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_move_line__branch_id
+#: model:ir.model.fields,field_description:branch.field_account_payment__branch_id
+#: model:ir.model.fields,field_description:branch.field_product_product__branch_id
+#: model:ir.model.fields,field_description:branch.field_product_template__branch_id
+#: model:ir.model.fields,field_description:branch.field_purchase_order__branch_id
+#: model:ir.model.fields,field_description:branch.field_purchase_order_line__branch_id
+#: model:ir.model.fields,field_description:branch.field_purchase_report__branch_id
+#: model:ir.model.fields,field_description:branch.field_res_partner__branch_id
+#: model:ir.model.fields,field_description:branch.field_res_users__branch_id
+#: model:ir.model.fields,field_description:branch.field_sale_order__branch_id
+#: model:ir.model.fields,field_description:branch.field_sale_report__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_inventory__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_location__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_move__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_picking__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_picking_type__branch_id
+#: model:ir.model.fields,field_description:branch.field_stock_warehouse__branch_id
+#: model:ir.module.category,name:branch.module_branch_management
+#: model:ir.ui.menu,name:branch.branch_menu_res_branch
+#: model_terms:ir.ui.view,arch_db:branch.branch_res_branch_view_form
+#: model_terms:ir.ui.view,arch_db:branch.branch_res_branch_view_tree
+#: model_terms:ir.ui.view,arch_db:branch.view_move_line_order_filter_inherit_branch11
+#: model_terms:ir.ui.view,arch_db:branch.view_order_form_inherit_branch
+#: model_terms:ir.ui.view,arch_db:branch.view_purchase_order_filter_inherit_branch
+#: model_terms:ir.ui.view,arch_db:branch.view_sales_order_filter_inherit_branch
+msgid "Branch"
+msgstr "Afdeling"
+
+#. module: branch
+#: model_terms:ir.actions.act_window,help:branch.branch_action_res_branch
+msgid "Click here to create a new branch."
+msgstr "Klik hier om een nieuwe branch aan te maken."
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__company_id
+msgid "Company"
+msgstr "Bedrijf"
+
+#. module: branch
+#: code:addons/branch/models/inherited_stock_location.py:0
+#, python-format
+msgid "Configuration error You must select same branch on a location as assigned on a warehouse configuration."
+msgstr "Configuratiefout U moet hetzelfde filiaal op een locatie selecteren als toegewezen aan een magazijnconfiguratie."
+
+#. module: branch
+#: model:ir.model,name:branch.model_res_partner
+msgid "Contact"
+msgstr ""
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__create_uid
+msgid "Created by"
+msgstr "Gemaakt door"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__create_date
+msgid "Created on"
+msgstr "Gemaakt op"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__display_name
+msgid "Display Name"
+msgstr "Weergavenaam"
+
+#. module: branch
+#. openerp-web
+#: code:addons/branch/static/src/xml/branch.xml:0
+#, python-format
+msgid "Dropdown menu"
+msgstr ""
+
+#. module: branch
+#: model:ir.model,name:branch.model_ir_http
+msgid "HTTP Routing"
+msgstr ""
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__id
+msgid "ID"
+msgstr ""
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_inventory
+msgid "Inventory"
+msgstr "Voorraad"
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_location
+msgid "Inventory Locations"
+msgstr "Voorraadlocaties"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_invoice_report
+msgid "Invoices Statistics"
+msgstr "Facturenstatistieken"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_move
+msgid "Journal Entries"
+msgstr "Journaalboekingen"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_move_line
+msgid "Journal Item"
+msgstr "Dagboekitem"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch____last_update
+msgid "Last Modified on"
+msgstr "Laatst gewijzigd op"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__write_uid
+msgid "Last Updated by"
+msgstr "Laatst bijgewerkt door"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__write_date
+msgid "Last Updated on"
+msgstr "Laatst geupdate op"
+
+#. module: branch
+#: model:res.groups,name:branch.group_branch_user_manager
+msgid "Manager"
+msgstr ""
+
+#. module: branch
+#: model:res.groups,name:branch.group_multi_branch
+msgid "Multi Branches"
+msgstr "Meerdere takken"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__name
+msgid "Name"
+msgstr "Naam"
+
+#. module: branch
+#: model:ir.model,name:branch.model_account_payment
+msgid "Payments"
+msgstr "Betalingen"
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_picking_type
+msgid "Picking Type"
+msgstr "Type plukken"
+
+#. module: branch
+#: model:ir.model,name:branch.model_product_template
+msgid "Product Template"
+msgstr "Product sjabloon"
+
+#. module: branch
+#: model:ir.model,name:branch.model_purchase_order
+msgid "Purchase Order"
+msgstr "Bestelling"
+
+#. module: branch
+#: model:ir.model,name:branch.model_purchase_order_line
+msgid "Purchase Order Line"
+msgstr "Inkooporderregel"
+
+#. module: branch
+#: model:ir.model,name:branch.model_purchase_report
+msgid "Purchase Report"
+msgstr "Aankooprapport"
+
+#. module: branch
+#: model:ir.model,name:branch.model_sale_advance_payment_inv
+msgid "Sales Advance Payment Invoice"
+msgstr "Verkoopvooruitbetalingsfactuur"
+
+#. module: branch
+#: model:ir.model,name:branch.model_sale_report
+msgid "Sales Analysis Report"
+msgstr "Verkoopanalyserapport"
+
+#. module: branch
+#: model:ir.model,name:branch.model_sale_order
+msgid "Sales Order"
+msgstr "Verkooporder"
+
+#. module: branch
+#: code:addons/branch/models/inherited_account_bank_statement.py:0
+#, python-format
+msgid "Statement confirmed, journal items were created."
+msgstr "Afschrift bevestigd, journaalposten zijn gemaakt."
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_move
+msgid "Stock Move"
+msgstr "Voorraad verplaatsen"
+
+#. module: branch
+#. openerp-web
+#: code:addons/branch/static/src/xml/branch.xml:0
+#, python-format
+msgid "Switch to this branch"
+msgstr "Schakel over naar deze tak"
+
+#. module: branch
+#: model:ir.model.fields,field_description:branch.field_res_branch__telephone
+msgid "Telephone No"
+msgstr "Telefoon Nee"
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_picking
+msgid "Transfer"
+msgstr "Overdracht"
+
+#. module: branch
+#: model:res.groups,name:branch.group_branch_user
+msgid "User"
+msgstr "Gebruiker"
+
+#. module: branch
+#: model:ir.model,name:branch.model_res_users
+msgid "Users"
+msgstr "Gebruikers"
+
+#. module: branch
+#: model:ir.model,name:branch.model_stock_warehouse
+msgid "Warehouse"
+msgstr "Magazijn"
diff --git a/odex30_base/branch/models/__init__.py b/odex30_base/branch/models/__init__.py
new file mode 100644
index 0000000..67886b1
--- /dev/null
+++ b/odex30_base/branch/models/__init__.py
@@ -0,0 +1,20 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from . import branch
+from . import inherited_res_users
+from . import inherited_sale_order
+from . import inherited_stock_move
+from . import inherited_stock_picking
+from . import inherited_account_move
+from . import inherited_account_payment
+from . import inherited_purchase_order
+from . import inherited_stock_warehouse
+from . import inherited_stock_location
+from . import inherited_account_bank_statement
+from . import inherited_account_bank_statement_line
+from . import inherited_stock_inventory
+from . import inherited_customer
+from . import inherited_product
+from . import ir_http
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/odex30_base/branch/models/branch.py b/odex30_base/branch/models/branch.py
new file mode 100644
index 0000000..34e2b53
--- /dev/null
+++ b/odex30_base/branch/models/branch.py
@@ -0,0 +1,13 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+
+
+class ResBranch(models.Model):
+ _name = 'res.branch'
+ _description = 'Branch'
+
+ name = fields.Char(required=True)
+ company_id = fields.Many2one('res.company', required=True)
+ telephone = fields.Char(string='Telephone No')
+ address = fields.Text('Address')
diff --git a/odex30_base/branch/models/inherited_account_bank_statement.py b/odex30_base/branch/models/inherited_account_bank_statement.py
new file mode 100644
index 0000000..952f92e
--- /dev/null
+++ b/odex30_base/branch/models/inherited_account_bank_statement.py
@@ -0,0 +1,64 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+from odoo.exceptions import UserError
+import time
+
+class AccountBankStatement(models.Model):
+ _inherit = 'account.bank.statement'
+
+ branch_id = fields.Many2one('res.branch')
+
+ def _get_opening_balance(self, journal_id):
+ curr_user_id = self.env['res.users'].browse(self.env.context.get('uid', False))
+ last_bnk_stmt = self.search([('journal_id', '=', journal_id),('branch_id','=',curr_user_id.branch_id.id)], limit=1)
+ if last_bnk_stmt:
+ return last_bnk_stmt.balance_end
+ return 0
+
+ @api.model
+ def default_get(self,fields):
+ res = super(AccountBankStatement, self).default_get(fields)
+ branch_id = False
+ if self.env.user.branch_id:
+ branch_id = self.env.user.branch_id.id
+ res.update({
+ 'branch_id' : branch_id
+ })
+ return res
+
+ def button_confirm_bank(self):
+ self._balance_check()
+ statements = self.filtered(lambda r: r.state == 'open')
+ for statement in statements:
+ moves = self.env['account.move']
+ for st_line in statement.line_ids:
+ #upon bank statement confirmation, look if some lines have the account_id set. It would trigger a journal entry
+ #creation towards that account, with the wanted side-effect to skip that line in the bank reconciliation widget.
+ st_line.fast_counterpart_creation()
+ if not st_line.account_id and not st_line.journal_entry_ids.ids and not st_line.statement_id.currency_id.is_zero(st_line.amount):
+ raise UserError(_('All the account entries lines must be processed in order to close the statement.'))
+ for aml in st_line.journal_entry_ids:
+ aml.branch_id = st_line.branch_id.id
+ moves |= aml.move_id
+
+ if moves:
+ if self._context.get('session'):
+ session = self._context.get('session')
+ for move in moves:
+ move.branch_id =session.branch_id.id
+ for line in move.line_ids:
+ line.branch_id = session.branch_id.id
+ moves.filtered(lambda m: m.state != 'posted').post()
+ statement.write({'branch_id': statement.pos_session_id.branch_id.id})
+ else:
+ moves.filtered(lambda m: m.state != 'posted').post()
+ for move in moves:
+ for move_line in move.line_ids:
+ line_branch = move_line.branch_id.id
+ move.branch_id = line_branch
+
+
+ statement.message_post(body=_('Statement %s confirmed, journal items were created.') % (statement.name,))
+
+ statements.write({'state': 'confirm', 'date_done': time.strftime("%Y-%m-%d %H:%M:%S")})
\ No newline at end of file
diff --git a/odex30_base/branch/models/inherited_account_bank_statement_line.py b/odex30_base/branch/models/inherited_account_bank_statement_line.py
new file mode 100644
index 0000000..cdda49b
--- /dev/null
+++ b/odex30_base/branch/models/inherited_account_bank_statement_line.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+
+
+class account_bank_statement_line(models.Model):
+
+ _inherit = 'account.bank.statement.line'
+
+ @api.model
+ def default_get(self, default_fields):
+ res = super(account_bank_statement_line, self).default_get(default_fields)
+ branch_id = False
+ if self._context.get('branch_id'):
+ branch_id = self._context.get('branch_id')
+ elif self.env.user.branch_id:
+ branch_id = self.env.user.branch_id.id
+ res.update({
+ 'branch_id' : branch_id
+ })
+ return res
+
+ branch_id = fields.Many2one('res.branch', string='Branch')
+
diff --git a/odex30_base/branch/models/inherited_account_move.py b/odex30_base/branch/models/inherited_account_move.py
new file mode 100644
index 0000000..ec6d468
--- /dev/null
+++ b/odex30_base/branch/models/inherited_account_move.py
@@ -0,0 +1,57 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+from odoo.exceptions import UserError
+from odoo.tools.float_utils import float_compare
+
+
+
+
+class AccountMove(models.Model):
+ _inherit = 'account.move'
+
+ @api.model
+ def default_get(self, default_fields):
+ res = super(AccountMove, self).default_get(default_fields)
+ branch_id = False
+
+ if self._context.get('branch_id'):
+ branch_id = self._context.get('branch_id')
+ elif self.env.user.branch_id:
+ branch_id = self.env.user.branch_id.id
+ res.update({
+ 'branch_id' : branch_id
+ })
+ return res
+
+ branch_id = fields.Many2one('res.branch', string="Branch")
+
+ @api.onchange('branch_id')
+ def _onchange_branch_id(self):
+ selected_brach = self.branch_id
+ if selected_brach:
+ user_id = self.env.user
+ user_branch = user_id.sudo().branch_id
+ if user_branch and user_branch.id != selected_brach.id:
+ raise UserError("Please select active branch only. Other may create the Multi branch issue. \n\ne.g: If you wish to add other branch then Switch branch from the header and set that.")
+
+
+class AccountMoveLine(models.Model):
+ _inherit = 'account.move.line'
+
+ @api.model
+ def default_get(self, default_fields):
+ res = super(AccountMoveLine, self).default_get(default_fields)
+ branch_id = False
+
+ if self._context.get('branch_id'):
+ branch_id = self._context.get('branch_id')
+ elif self.env.user.branch_id:
+ branch_id = self.env.user.branch_id.id
+
+ if self.move_id.branch_id :
+ branch_id = self.move_id.branch_id.id
+ res.update({'branch_id' : branch_id})
+ return res
+
+ branch_id = fields.Many2one('res.branch', string="Branch",related="move_id.branch_id",store=True)
diff --git a/odex30_base/branch/models/inherited_account_payment.py b/odex30_base/branch/models/inherited_account_payment.py
new file mode 100644
index 0000000..ae8da45
--- /dev/null
+++ b/odex30_base/branch/models/inherited_account_payment.py
@@ -0,0 +1,34 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+from odoo.exceptions import UserError
+
+MAP_INVOICE_TYPE_PARTNER_TYPE = {
+ 'out_invoice': 'customer',
+ 'out_refund': 'customer',
+ 'in_invoice': 'supplier',
+ 'in_refund': 'supplier',
+}
+
+class AccountPayment(models.Model):
+ _inherit = 'account.payment'
+
+ @api.model
+ def default_get(self, fields):
+ rec = super(AccountPayment, self).default_get(fields)
+ invoice_defaults = self.reconciled_invoice_ids
+ if invoice_defaults and len(invoice_defaults) == 1:
+ invoice = invoice_defaults[0]
+ rec['branch_id'] = invoice.branch_id.id
+ return rec
+
+ branch_id = fields.Many2one('res.branch')
+
+ @api.onchange('branch_id')
+ def _onchange_branch_id(self):
+ selected_brach = self.branch_id
+ if selected_brach:
+ user_id = self.env.user
+ user_branch = user_id.sudo().branch_id
+ if user_branch and user_branch.id != selected_brach.id:
+ raise UserError("Please select active branch only. Other may create the Multi branch issue. \n\ne.g: If you wish to add other branch then Switch branch from the header and set that.")
diff --git a/odex30_base/branch/models/inherited_customer.py b/odex30_base/branch/models/inherited_customer.py
new file mode 100644
index 0000000..6c5ac64
--- /dev/null
+++ b/odex30_base/branch/models/inherited_customer.py
@@ -0,0 +1,19 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+
+
+class ResPartnerIn(models.Model):
+ _inherit = 'res.partner'
+
+
+ @api.model
+ def default_get(self, default_fields):
+ res = super(ResPartnerIn, self).default_get(default_fields)
+ if self.env.user.branch_id:
+ res.update({
+ 'branch_id' : self.env.user.branch_id.id or False
+ })
+ return res
+
+ branch_id = fields.Many2one('res.branch', string="Branch")
\ No newline at end of file
diff --git a/odex30_base/branch/models/inherited_product.py b/odex30_base/branch/models/inherited_product.py
new file mode 100644
index 0000000..b1ffccd
--- /dev/null
+++ b/odex30_base/branch/models/inherited_product.py
@@ -0,0 +1,19 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+
+
+class ProductTemplateIn(models.Model):
+ _inherit = 'product.template'
+
+
+ @api.model
+ def default_get(self, default_fields):
+ res = super(ProductTemplateIn, self).default_get(default_fields)
+ if self.env.user.branch_id:
+ res.update({
+ 'branch_id' : self.env.user.branch_id.id or False
+ })
+ return res
+
+ branch_id = fields.Many2one('res.branch', string="Branch")
\ No newline at end of file
diff --git a/odex30_base/branch/models/inherited_purchase_order.py b/odex30_base/branch/models/inherited_purchase_order.py
new file mode 100644
index 0000000..f064b77
--- /dev/null
+++ b/odex30_base/branch/models/inherited_purchase_order.py
@@ -0,0 +1,137 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+from odoo.exceptions import UserError
+
+
+class purchase_order(models.Model):
+
+ _inherit = 'purchase.order.line'
+
+
+ def _prepare_account_move_line(self, move=False):
+ result = super(purchase_order, self)._prepare_account_move_line(move)
+ result.update({
+ 'branch_id' : self.order_id.branch_id.id or False,
+
+ })
+ return result
+
+
+ @api.model
+ def default_get(self, default_fields):
+ res = super(purchase_order, self).default_get(default_fields)
+ branch_id = False
+ if self._context.get('branch_id'):
+ branch_id = self._context.get('branch_id')
+ elif self.env.user.branch_id:
+ branch_id = self.env.user.branch_id.id
+ res.update({'branch_id' : branch_id})
+ return res
+
+ branch_id = fields.Many2one('res.branch', string="Branch")
+
+
+ def _prepare_stock_moves(self, picking):
+ result = super(purchase_order, self)._prepare_stock_moves(picking)
+
+ branch_id = False
+ if self.branch_id:
+ branch_id = self.branch_id.id
+ elif self.env.user.branch_id:
+ branch_id = self.env.user.branch_id.id
+
+ for res in result:
+ res.update({'branch_id' : branch_id})
+
+ return result
+
+
+class PurchaseOrder(models.Model):
+ _inherit = 'purchase.order'
+
+
+ @api.model
+ def default_get(self,fields):
+ res = super(PurchaseOrder, self).default_get(fields)
+ branch_id = picking_type_id = False
+
+ if self.env.user.branch_id:
+ branch_id = self.env.user.branch_id.id
+
+ if branch_id:
+ branched_warehouse = self.env['stock.warehouse'].search([('branch_id','=',branch_id)])
+ if branched_warehouse:
+ picking_type_id = branched_warehouse[0].in_type_id.id
+ else:
+ picking = self._default_picking_type()
+ picking_type_id = picking.id
+
+ res.update({
+ 'branch_id' : branch_id,
+ 'picking_type_id' : picking_type_id
+ })
+
+ return res
+
+ branch_id = fields.Many2one('res.branch', string='Branch')
+
+ @api.model
+ def _prepare_picking(self):
+ res = super(PurchaseOrder, self)._prepare_picking()
+ branch_id = False
+ if self.branch_id:
+ branch_id = self.branch_id.id
+ elif self.env.user.branch_id:
+ branch_id = self.env.user.branch_id.id
+ res.update({
+ 'branch_id' : branch_id
+ })
+ return res
+
+
+ def _prepare_invoice(self):
+ result = super(PurchaseOrder, self)._prepare_invoice()
+ branch_id = False
+ if self.branch_id:
+ branch_id = self.branch_id.id
+ elif self.env.user.branch_id:
+ branch_id = self.env.user.branch_id.id
+
+ result.update({
+
+ 'branch_id' : branch_id
+ })
+
+ return result
+ def action_view_invoice(self, invoices=False):
+ '''
+ This function returns an action that display existing vendor bills of given purchase order ids.
+ When only one found, show the vendor bill immediately.
+ '''
+
+ result = super(PurchaseOrder, self).action_view_invoice(invoices)
+
+ branch_id = False
+ if self.branch_id:
+ branch_id = self.branch_id.id
+ elif self.env.user.branch_id:
+ branch_id = self.env.user.branch_id.id
+
+
+ result.update({
+
+ 'branch_id' : branch_id
+ })
+
+
+ return result
+
+ @api.onchange('branch_id')
+ def _onchange_branch_id(self):
+ selected_brach = self.branch_id
+ if selected_brach:
+ user_id = self.env.user
+ user_branch = user_id.sudo().branch_id
+ if user_branch and user_branch.id != selected_brach.id:
+ raise UserError("Please select active branch only. Other may create the Multi branch issue. \n\ne.g: If you wish to add other branch then Switch branch from the header and set that.")
\ No newline at end of file
diff --git a/odex30_base/branch/models/inherited_res_users.py b/odex30_base/branch/models/inherited_res_users.py
new file mode 100644
index 0000000..d278b0d
--- /dev/null
+++ b/odex30_base/branch/models/inherited_res_users.py
@@ -0,0 +1,18 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+
+
+class ResUsers(models.Model):
+ _inherit = 'res.users'
+
+ branch_ids = fields.Many2many('res.branch',string="Allowed Branch")
+ branch_id = fields.Many2one('res.branch', string= 'Branch')
+
+ def write(self, values):
+ if 'branch_id' in values or 'branch_ids' in values:
+ self.env['ir.model.access'].call_cache_clearing_methods()
+ self.env['ir.rule'].clear_caches()
+ # self.has_group.clear_cache(self)
+ user = super(ResUsers, self).write(values)
+ return user
diff --git a/odex30_base/branch/models/inherited_sale_order.py b/odex30_base/branch/models/inherited_sale_order.py
new file mode 100644
index 0000000..93ddbc0
--- /dev/null
+++ b/odex30_base/branch/models/inherited_sale_order.py
@@ -0,0 +1,48 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+from odoo.exceptions import UserError
+
+
+class SaleOrder(models.Model):
+ _inherit = 'sale.order'
+
+
+ @api.model
+ def default_get(self,fields):
+ res = super(SaleOrder, self).default_get(fields)
+ branch_id = warehouse_id = False
+ if self.env.user.branch_id:
+ branch_id = self.env.user.branch_id.id
+ if branch_id:
+ branched_warehouse = self.env['stock.warehouse'].search([('branch_id','=',branch_id)])
+ if branched_warehouse:
+ warehouse_id = branched_warehouse.ids[0]
+ else:
+ warehouse_id = self._default_warehouse_id()
+ warehouse_id = warehouse_id.id
+
+ res.update({
+ 'branch_id' : branch_id,
+ 'warehouse_id' : warehouse_id
+ })
+
+ return res
+
+ branch_id = fields.Many2one('res.branch', string="Branch")
+
+
+ def _prepare_invoice(self):
+ res = super(SaleOrder, self)._prepare_invoice()
+ res['branch_id'] = self.branch_id.id
+ return res
+
+
+ @api.onchange('branch_id')
+ def _onchange_branch_id(self):
+ selected_brach = self.branch_id
+ if selected_brach:
+ user_id = self.env.user
+ user_branch = user_id.sudo().branch_id
+ if user_branch and user_branch.id != selected_brach.id:
+ raise UserError("Please select active branch only. Other may create the Multi branch issue. \n\ne.g: If you wish to add other branch then Switch branch from the header and set that.")
\ No newline at end of file
diff --git a/odex30_base/branch/models/inherited_stock_inventory.py b/odex30_base/branch/models/inherited_stock_inventory.py
new file mode 100644
index 0000000..4576f53
--- /dev/null
+++ b/odex30_base/branch/models/inherited_stock_inventory.py
@@ -0,0 +1,46 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+from odoo.exceptions import UserError
+
+
+class stock_inventory(models.Model):
+ _inherit = 'stock.inventory'
+
+
+ @api.model
+ def default_get(self,fields):
+ res = super(stock_inventory, self).default_get(fields)
+ if res.get('location_id'):
+ location_branch = self.env['stock.location'].browse(res.get('location_id')).branch_id.id
+ if location_branch:
+ res['branch_id'] = location_branch
+ else:
+ user_branch = self.env.user.branch_id
+ if user_branch:
+ res['branch_id'] = user_branch.id
+ return res
+
+ branch_id = fields.Many2one('res.branch')
+
+
+ def post_inventory(self):
+ # The inventory is posted as a single step which means quants cannot be moved from an internal location to another using an inventory
+ # as they will be moved to inventory loss, and other quants will be created to the encoded quant location. This is a normal behavior
+ # as quants cannot be reuse from inventory location (users can still manually move the products before/after the inventory if they want).
+ self.mapped('move_ids').filtered(lambda move: move.state != 'done')._action_done()
+ for move_id in self.move_ids:
+ account_move =self.env['account.move'].search([('stock_move_id','=',move_id.id)])
+ account_move.write({'branch_id':self.branch_id.id})
+ for line in account_move.line_ids:
+ line.write({'branch_id':self.branch_id.id})
+
+
+ @api.onchange('branch_id')
+ def _onchange_branch_id(self):
+ selected_brach = self.branch_id
+ if selected_brach:
+ user_id = self.env.user
+ user_branch = user_id.sudo().branch_id
+ if user_branch and user_branch.id != selected_brach.id:
+ raise UserError("Please select active branch only. Other may create the Multi branch issue. \n\ne.g: If you wish to add other branch then Switch branch from the header and set that.")
\ No newline at end of file
diff --git a/odex30_base/branch/models/inherited_stock_location.py b/odex30_base/branch/models/inherited_stock_location.py
new file mode 100644
index 0000000..5da195f
--- /dev/null
+++ b/odex30_base/branch/models/inherited_stock_location.py
@@ -0,0 +1,30 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+from odoo.exceptions import UserError
+
+
+class StockLocation(models.Model):
+ _inherit = 'stock.location'
+
+ branch_id = fields.Many2one('res.branch')
+
+ @api.constrains('branch_id')
+ def _check_branch(self):
+ warehouse_obj = self.env['stock.warehouse']
+ warehouse_id = warehouse_obj.search(
+ ['|', '|', ('wh_input_stock_loc_id', '=', self.id),
+ ('lot_stock_id', '=', self.id),
+ ('wh_output_stock_loc_id', '=', self.id)])
+ for warehouse in warehouse_id:
+ if self.branch_id != warehouse.branch_id:
+ raise UserError(_('Configuration error\nYou must select same branch on a location as assigned on a warehouse configuration.'))
+
+ @api.onchange('branch_id')
+ def _onchange_branch_id(self):
+ selected_brach = self.branch_id
+ if selected_brach:
+ user_id = self.env.user
+ user_branch = user_id.sudo().branch_id
+ if user_branch and user_branch.id != selected_brach.id:
+ raise UserError("Please select active branch only. Other may create the Multi branch issue. \n\ne.g: If you wish to add other branch then Switch branch from the header and set that.")
\ No newline at end of file
diff --git a/odex30_base/branch/models/inherited_stock_move.py b/odex30_base/branch/models/inherited_stock_move.py
new file mode 100644
index 0000000..606408b
--- /dev/null
+++ b/odex30_base/branch/models/inherited_stock_move.py
@@ -0,0 +1,82 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+from odoo.exceptions import UserError
+from itertools import groupby
+
+class StockMove(models.Model):
+ _inherit = 'stock.move'
+
+ branch_id = fields.Many2one('res.branch')
+
+ def _assign_picking(self):
+ """ Try to assign the moves to an existing picking that has not been
+ reserved yet and has the same procurement group, locations and picking
+ type (moves should already have them identical). Otherwise, create a new
+ picking to assign them to. """
+ Picking = self.env['stock.picking']
+ grouped_moves = groupby(sorted(self, key=lambda m: [f.id for f in m._key_assign_picking()]), key=lambda m: [m._key_assign_picking()])
+ for group, moves in grouped_moves:
+ moves = self.env['stock.move'].concat(*list(moves))
+ branch_id = self.group_id.sale_id.branch_id.id if self.group_id.sale_id and self.group_id.sale_id.branch_id else False
+ moves.write({'branch_id': branch_id})
+ new_picking = False
+ # Could pass the arguments contained in group but they are the same
+ # for each move that why moves[0] is acceptable
+ picking = moves[0]._search_picking_for_assignation()
+ if picking:
+ if any(picking.partner_id.id != m.partner_id.id or
+ picking.origin != m.origin for m in moves):
+ # If a picking is found, we'll append `move` to its move list and thus its
+ # `partner_id` and `ref` field will refer to multiple records. In this
+ # case, we chose to wipe them.
+ picking.write({
+ 'partner_id': False,
+ 'origin': False,
+ })
+ else:
+ new_picking = True
+ picking = Picking.create(moves._get_new_picking_values())
+
+ moves.write({'picking_id': picking.id})
+ moves._assign_picking_post_process(new=new_picking)
+ return True
+
+ def _get_new_picking_values(self):
+ vals = super(StockMove, self)._get_new_picking_values()
+ vals['branch_id'] = self.group_id.sale_id.branch_id.id
+ return vals
+
+ def _create_account_move_line(self, credit_account_id, debit_account_id, journal_id, qty, description, svl_id, cost):
+ self.ensure_one()
+ AccountMove = self.env['account.move'].with_context(default_journal_id=journal_id)
+
+ move_lines = self._prepare_account_move_line(qty, cost, credit_account_id, debit_account_id, description)
+ if move_lines:
+ date = self._context.get('force_period_date', fields.Date.context_today(self))
+ new_account_move = AccountMove.sudo().create({
+ 'journal_id': journal_id,
+ 'line_ids': move_lines,
+ 'date': date,
+ 'ref': description,
+ 'stock_move_id': self.id,
+ 'stock_valuation_layer_ids': [(6, None, [svl_id])],
+ 'move_type': 'entry',
+ 'branch_id': self.picking_id.branch_id.id or self.branch_id.id or False,
+ })
+ new_account_move._post()
+
+ def _generate_valuation_lines_data(self, partner_id, qty, debit_value, credit_value, debit_account_id, credit_account_id, description):
+ # This method returns a dictionary to provide an easy extension hook to modify the valuation lines (see purchase for an example)
+ result = super(StockMove, self)._generate_valuation_lines_data(partner_id, qty, debit_value, credit_value, debit_account_id, credit_account_id, description)
+
+ branch_id = False
+ if self.branch_id:
+ branch_id = self.branch_id.id
+ elif self.env.user.branch_id:
+ branch_id = self.env.user.branch_id.id
+
+ for res in result:
+ result[res].update({'branch_id' : branch_id})
+
+ return result
\ No newline at end of file
diff --git a/odex30_base/branch/models/inherited_stock_picking.py b/odex30_base/branch/models/inherited_stock_picking.py
new file mode 100644
index 0000000..63dedaf
--- /dev/null
+++ b/odex30_base/branch/models/inherited_stock_picking.py
@@ -0,0 +1,28 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+from odoo.exceptions import UserError
+
+
+class StockPicking(models.Model):
+ _inherit = 'stock.picking'
+
+ @api.model
+ def default_get(self, default_fields):
+ res = super(StockPicking, self).default_get(default_fields)
+ if self.env.user.branch_id:
+ res.update({
+ 'branch_id' : self.env.user.branch_id.id or False
+ })
+ return res
+
+ branch_id = fields.Many2one('res.branch', string="Branch")
+
+ @api.onchange('branch_id')
+ def _onchange_branch_id(self):
+ selected_brach = self.branch_id
+ if selected_brach:
+ user_id = self.env.user
+ user_branch = user_id.sudo().branch_id
+ if user_branch and user_branch.id != selected_brach.id:
+ raise UserError("Please select active branch only. Other may create the Multi branch issue. \n\ne.g: If you wish to add other branch then Switch branch from the header and set that.")
\ No newline at end of file
diff --git a/odex30_base/branch/models/inherited_stock_warehouse.py b/odex30_base/branch/models/inherited_stock_warehouse.py
new file mode 100644
index 0000000..6c736de
--- /dev/null
+++ b/odex30_base/branch/models/inherited_stock_warehouse.py
@@ -0,0 +1,25 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+from odoo.exceptions import UserError
+
+class StockWarehouse(models.Model):
+ _inherit = 'stock.warehouse'
+
+ branch_id = fields.Many2one('res.branch')
+
+ @api.onchange('branch_id')
+ def _onchange_branch_id(self):
+ selected_brach = self.branch_id
+ if selected_brach:
+ user_id = self.env.user
+ user_branch = user_id.sudo().branch_id
+ if user_branch and user_branch.id != selected_brach.id:
+ raise UserError("Please select active branch only. Other may create the Multi branch issue. \n\ne.g: If you wish to add other branch then Switch branch from the header and set that.")
+
+
+
+class StockPickingTypeIn(models.Model):
+ _inherit = 'stock.picking.type'
+
+ branch_id = fields.Many2one('res.branch',related='warehouse_id.branch_id', store=True,)
diff --git a/odex30_base/branch/models/ir_http.py b/odex30_base/branch/models/ir_http.py
new file mode 100644
index 0000000..b4116a7
--- /dev/null
+++ b/odex30_base/branch/models/ir_http.py
@@ -0,0 +1,65 @@
+# -*- coding: utf-8 -*-
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+import hashlib
+import json
+from odoo import api, models
+from odoo.http import request
+from odoo.tools import ustr
+from odoo.addons.web.controllers.main import module_boot, HomeStaticTemplateHelpers
+import odoo
+
+class Http(models.AbstractModel):
+ _inherit = 'ir.http'
+
+ def session_info(self):
+ user = request.env.user
+ version_info = odoo.service.common.exp_version()
+
+ user_context = request.session.get_context() if request.session.uid else {}
+
+ session_info = {
+ "uid": request.session.uid,
+ "is_system": user._is_system() if request.session.uid else False,
+ "is_admin": user._is_admin() if request.session.uid else False,
+ "user_context": request.session.get_context() if request.session.uid else {},
+ "db": request.session.db,
+ "server_version": version_info.get('server_version'),
+ "server_version_info": version_info.get('server_version_info'),
+ "name": user.name,
+ "username": user.login,
+ "partner_display_name": user.partner_id.display_name,
+ "company_id": user.company_id.id if request.session.uid else None, # YTI TODO: Remove this from the user context
+ "branch_id": user.branch_id.id if request.session.uid else None,
+ "partner_id": user.partner_id.id if request.session.uid and user.partner_id else None,
+ "web.base.url": self.env['ir.config_parameter'].sudo().get_param('web.base.url', default=''),
+ }
+ if self.env.user.has_group('base.group_user'):
+ # the following is only useful in the context of a webclient bootstrapping
+ # but is still included in some other calls (e.g. '/web/session/authenticate')
+ # to avoid access errors and unnecessary information, it is only included for users
+ # with access to the backend ('internal'-type users)
+ mods = module_boot()
+ qweb_checksum = HomeStaticTemplateHelpers.get_qweb_templates_checksum(addons=mods, debug=request.session.debug)
+ lang = user_context.get("lang")
+ translation_hash = request.env['ir.translation'].get_web_translations_hash(mods, lang)
+ menu_json_utf8 = json.dumps(request.env['ir.ui.menu'].load_menus(request.session.debug), default=ustr, sort_keys=True).encode()
+ cache_hashes = {
+ "load_menus": hashlib.sha1(menu_json_utf8).hexdigest(),
+ "qweb": qweb_checksum,
+ "translations": translation_hash,
+ }
+ session_info.update({
+ # current_company should be default_company
+ "user_companies": {'current_company': (user.company_id.id, user.company_id.name), 'allowed_companies': [(comp.id, comp.name) for comp in user.company_ids]},
+ "user_branches": {'current_branch': (user.branch_id.id, user.branch_id.name), 'allowed_branch': [(comp.id, comp.name) for comp in user.branch_ids]},
+ "currencies": self.get_currencies(),
+ "show_effect": True,
+ "display_switch_company_menu": user.has_group('base.group_multi_company') and len(user.company_ids) > 1,
+ "display_switch_branch_menu": user.has_group('branch.group_multi_branch') and len(user.branch_ids) > 1,
+ "cache_hashes": cache_hashes,
+ "allowed_branch_ids" : user.branch_id.ids
+ })
+ return session_info
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
diff --git a/odex30_base/branch/reports/__init__.py b/odex30_base/branch/reports/__init__.py
new file mode 100644
index 0000000..798a488
--- /dev/null
+++ b/odex30_base/branch/reports/__init__.py
@@ -0,0 +1,8 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from . import inherited_sale_report
+from . import inherited_account_invoice_report
+from . import inherited_purchase_report
+
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/odex30_base/branch/reports/inherited_account_invoice_report.py b/odex30_base/branch/reports/inherited_account_invoice_report.py
new file mode 100644
index 0000000..63f29cf
--- /dev/null
+++ b/odex30_base/branch/reports/inherited_account_invoice_report.py
@@ -0,0 +1,12 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import fields, models
+
+
+class AccountInvoiceReport(models.Model):
+ _inherit = "account.invoice.report"
+
+ branch_id = fields.Many2one('res.branch')
+
+ def _select(self):
+ return super(AccountInvoiceReport, self)._select() + ", move.branch_id"
\ No newline at end of file
diff --git a/odex30_base/branch/reports/inherited_purchase_report.py b/odex30_base/branch/reports/inherited_purchase_report.py
new file mode 100644
index 0000000..32fde6b
--- /dev/null
+++ b/odex30_base/branch/reports/inherited_purchase_report.py
@@ -0,0 +1,15 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import fields, models
+
+
+class PurchaseReport(models.Model):
+ _inherit = "purchase.report"
+
+ branch_id = fields.Many2one('res.branch')
+
+ def _select(self):
+ return super(PurchaseReport, self)._select() + ", po.branch_id as branch_id"
+
+ def _group_by(self):
+ return super(PurchaseReport, self)._group_by() + ", po.branch_id"
\ No newline at end of file
diff --git a/odex30_base/branch/reports/inherited_sale_report.py b/odex30_base/branch/reports/inherited_sale_report.py
new file mode 100644
index 0000000..2ec518c
--- /dev/null
+++ b/odex30_base/branch/reports/inherited_sale_report.py
@@ -0,0 +1,14 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import fields, models
+
+
+class SaleReport(models.Model):
+ _inherit = "sale.report"
+
+ branch_id = fields.Many2one('res.branch')
+
+ def _query(self, with_clause='', fields={}, groupby='', from_clause=''):
+ fields['branch_id'] = ", s.branch_id as branch_id"
+ return super(SaleReport, self)._query(with_clause, fields, groupby, from_clause)
+
diff --git a/odex30_base/branch/security/branch_security.xml b/odex30_base/branch/security/branch_security.xml
new file mode 100644
index 0000000..c63bb1b
--- /dev/null
+++ b/odex30_base/branch/security/branch_security.xml
@@ -0,0 +1,263 @@
+
+
+
+
+
+ Branch
+ 11
+
+
+
+ User
+
+
+
+
+
+ Manager
+
+
+
+
+
+
+
+ Res Branch Manager
+
+
+ [(1,'=',1)]
+
+
+
+
+
+ Res Branch User
+
+
+ [('id','=',user.branch_id.id)]
+
+
+
+
+
+ Personal Orders
+
+ ['|',('branch_id','=',user.branch_id.id),('branch_id','=',False),('user_id','=',user.id)]
+
+
+
+
+ All Branch Orders
+
+ ['|',('branch_id','=',False),('branch_id','=',user.branch_id.id)]
+
+
+
+
+ All Orders
+
+ [(1,'=',1)]
+
+
+
+
+
+ Purchase Branch Manager
+
+
+ [(1,'=',1)]
+
+
+
+
+
+
+
+ Purchase Branch
+
+
+ ['|',('branch_id','=',False),('branch_id','=',user.branch_id.id)]
+
+
+
+
+ Picking Branch Manager
+
+
+ [(1,'=',1)]
+
+
+
+
+ Picking Branch
+
+
+ ['|',('branch_id','=',False),('branch_id','=',user.branch_id.id)]
+
+
+
+
+ Warehouse Branch Manager
+
+
+ [(1,'=',1)]
+
+
+
+
+ Warehouse Branch
+
+
+ ['|',('branch_id','=',False),('branch_id','=',user.branch_id.id)]
+
+
+
+
+ Location Branch Manager
+
+
+ [(1,'=',1)]
+
+
+
+
+ Location Branch
+
+
+ ['|',('branch_id','=',False),('branch_id','=',user.branch_id.id)]
+
+
+
+
+ Picking Type Branch Manager
+
+
+ [(1,'=',1)]
+
+
+
+
+ Picking Type Branch
+
+
+ ['|',('branch_id','=',False),('branch_id','=',user.branch_id.id)]
+
+
+
+
+ Stock Quant Branch Manager
+
+
+ [(1,'=',1)]
+
+
+
+
+ Stock Quant Branch
+
+
+ ['|',('location_id.branch_id','=',False),('location_id.branch_id','=',user.branch_id.id)]
+
+
+
+
+ Stock Move Line Branch Manager
+
+
+ [(1,'=',1)]
+
+
+
+
+ Stock Move Line Branch
+
+
+ ['|',('location_dest_id.branch_id','=',False),('location_dest_id.branch_id','=',user.branch_id.id)]
+
+
+
+
+ Warehouse Branch Manager
+
+
+ [(1,'=',1)]
+
+
+
+
+ Warehouse Branch
+
+
+ ['|',('branch_id','=',False),('branch_id','=',user.branch_id.id)]
+
+
+
+
+ Product Template Branch Manager
+
+
+ [(1,'=',1)]
+
+
+
+
+ Product Template Branch
+
+
+ ['|',('branch_id','=',False),('branch_id','=',user.branch_id.id)]
+
+
+
+
+ Product Product Branch Manager
+
+
+ [(1,'=',1)]
+
+
+
+
+ Product Product Branch
+
+
+ ['|',('product_tmpl_id.branch_id','=',False),('product_tmpl_id.branch_id','=',user.branch_id.id)]
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/branch/security/ir.model.access.csv b/odex30_base/branch/security/ir.model.access.csv
new file mode 100644
index 0000000..b506e49
--- /dev/null
+++ b/odex30_base/branch/security/ir.model.access.csv
@@ -0,0 +1,10 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+
+access_res_branch_user,res.branch.user,model_res_branch,branch.group_branch_user,1,1,0,0
+access_res_branch_user_all,res.branch.user.all,model_res_branch,,1,1,0,0
+access_res_branch_manager,res.branch.manager,model_res_branch,branch.group_branch_user_manager,1,1,1,1
+action_res_branch_location_rule,res.branch.user.location,stock.model_stock_location,branch.group_branch_user,1,1,1,1
+action_res_branch_location_rule_manager,res.branch.user.location,stock.model_stock_location,branch.group_branch_user_manager,1,1,1,1
+access_stock_warehouse_branch_user,stock.warehouse.branch.user,stock.model_stock_warehouse,branch.group_branch_user,1,1,0,0
+access_stock_warehouse_branch_manager,stock.warehouse.branch.manager,stock.model_stock_warehouse,branch.group_branch_user_manager,1,1,1,1
+access_stock_picking_branc_user,stock.picking.branch.user,stock.model_stock_picking,branch.group_branch_user,1,1,1,1
\ No newline at end of file
diff --git a/odex30_base/branch/security/multi_branch.xml b/odex30_base/branch/security/multi_branch.xml
new file mode 100644
index 0000000..0041133
--- /dev/null
+++ b/odex30_base/branch/security/multi_branch.xml
@@ -0,0 +1,8 @@
+
+
+
+
+ Multi Branches
+
+
+
\ No newline at end of file
diff --git a/odex30_base/branch/static/description/10_sale_branch.png b/odex30_base/branch/static/description/10_sale_branch.png
new file mode 100644
index 0000000..ead53e8
Binary files /dev/null and b/odex30_base/branch/static/description/10_sale_branch.png differ
diff --git a/odex30_base/branch/static/description/11_branch_groupby.png b/odex30_base/branch/static/description/11_branch_groupby.png
new file mode 100644
index 0000000..b675afd
Binary files /dev/null and b/odex30_base/branch/static/description/11_branch_groupby.png differ
diff --git a/odex30_base/branch/static/description/12_brnach_analysis.png b/odex30_base/branch/static/description/12_brnach_analysis.png
new file mode 100644
index 0000000..0525d51
Binary files /dev/null and b/odex30_base/branch/static/description/12_brnach_analysis.png differ
diff --git a/odex30_base/branch/static/description/13_branch_picking.png b/odex30_base/branch/static/description/13_branch_picking.png
new file mode 100644
index 0000000..3f5ea80
Binary files /dev/null and b/odex30_base/branch/static/description/13_branch_picking.png differ
diff --git a/odex30_base/branch/static/description/14_branch_invoice.png b/odex30_base/branch/static/description/14_branch_invoice.png
new file mode 100644
index 0000000..9c26571
Binary files /dev/null and b/odex30_base/branch/static/description/14_branch_invoice.png differ
diff --git a/odex30_base/branch/static/description/15_journal_items.png b/odex30_base/branch/static/description/15_journal_items.png
new file mode 100644
index 0000000..0ac821e
Binary files /dev/null and b/odex30_base/branch/static/description/15_journal_items.png differ
diff --git a/odex30_base/branch/static/description/16_branch_payment.png b/odex30_base/branch/static/description/16_branch_payment.png
new file mode 100644
index 0000000..a58380e
Binary files /dev/null and b/odex30_base/branch/static/description/16_branch_payment.png differ
diff --git a/odex30_base/branch/static/description/17_branch_branck_statement.png b/odex30_base/branch/static/description/17_branch_branck_statement.png
new file mode 100644
index 0000000..6f72432
Binary files /dev/null and b/odex30_base/branch/static/description/17_branch_branck_statement.png differ
diff --git a/odex30_base/branch/static/description/18_branch_purchase.png b/odex30_base/branch/static/description/18_branch_purchase.png
new file mode 100644
index 0000000..dc788df
Binary files /dev/null and b/odex30_base/branch/static/description/18_branch_purchase.png differ
diff --git a/odex30_base/branch/static/description/19_branch_groupby.png b/odex30_base/branch/static/description/19_branch_groupby.png
new file mode 100644
index 0000000..ad537ad
Binary files /dev/null and b/odex30_base/branch/static/description/19_branch_groupby.png differ
diff --git a/odex30_base/branch/static/description/1_branch_Access.png b/odex30_base/branch/static/description/1_branch_Access.png
new file mode 100644
index 0000000..2ec6c3c
Binary files /dev/null and b/odex30_base/branch/static/description/1_branch_Access.png differ
diff --git a/odex30_base/branch/static/description/20_branch_analysis.png b/odex30_base/branch/static/description/20_branch_analysis.png
new file mode 100644
index 0000000..2381494
Binary files /dev/null and b/odex30_base/branch/static/description/20_branch_analysis.png differ
diff --git a/odex30_base/branch/static/description/21_branch_receipt.png b/odex30_base/branch/static/description/21_branch_receipt.png
new file mode 100644
index 0000000..1d63b05
Binary files /dev/null and b/odex30_base/branch/static/description/21_branch_receipt.png differ
diff --git a/odex30_base/branch/static/description/22_branch_bill.png b/odex30_base/branch/static/description/22_branch_bill.png
new file mode 100644
index 0000000..63692b7
Binary files /dev/null and b/odex30_base/branch/static/description/22_branch_bill.png differ
diff --git a/odex30_base/branch/static/description/23_branch_payment.png b/odex30_base/branch/static/description/23_branch_payment.png
new file mode 100644
index 0000000..86c3dc3
Binary files /dev/null and b/odex30_base/branch/static/description/23_branch_payment.png differ
diff --git a/odex30_base/branch/static/description/24_branch_warehouse.png b/odex30_base/branch/static/description/24_branch_warehouse.png
new file mode 100644
index 0000000..03cfea5
Binary files /dev/null and b/odex30_base/branch/static/description/24_branch_warehouse.png differ
diff --git a/odex30_base/branch/static/description/25_branch_location.png b/odex30_base/branch/static/description/25_branch_location.png
new file mode 100644
index 0000000..c725462
Binary files /dev/null and b/odex30_base/branch/static/description/25_branch_location.png differ
diff --git a/odex30_base/branch/static/description/26_branch_inventory.png b/odex30_base/branch/static/description/26_branch_inventory.png
new file mode 100644
index 0000000..38dea83
Binary files /dev/null and b/odex30_base/branch/static/description/26_branch_inventory.png differ
diff --git a/odex30_base/branch/static/description/2_branch_tree.png b/odex30_base/branch/static/description/2_branch_tree.png
new file mode 100644
index 0000000..0dd7ebe
Binary files /dev/null and b/odex30_base/branch/static/description/2_branch_tree.png differ
diff --git a/odex30_base/branch/static/description/3_branch_form.png b/odex30_base/branch/static/description/3_branch_form.png
new file mode 100644
index 0000000..ecdd9f6
Binary files /dev/null and b/odex30_base/branch/static/description/3_branch_form.png differ
diff --git a/odex30_base/branch/static/description/4_branch_user.png b/odex30_base/branch/static/description/4_branch_user.png
new file mode 100644
index 0000000..acc9508
Binary files /dev/null and b/odex30_base/branch/static/description/4_branch_user.png differ
diff --git a/odex30_base/branch/static/description/5_multi_branch.png b/odex30_base/branch/static/description/5_multi_branch.png
new file mode 100644
index 0000000..3edb712
Binary files /dev/null and b/odex30_base/branch/static/description/5_multi_branch.png differ
diff --git a/odex30_base/branch/static/description/6_multi_branch_change.png b/odex30_base/branch/static/description/6_multi_branch_change.png
new file mode 100644
index 0000000..da5af20
Binary files /dev/null and b/odex30_base/branch/static/description/6_multi_branch_change.png differ
diff --git a/odex30_base/branch/static/description/7_branch_customer.png b/odex30_base/branch/static/description/7_branch_customer.png
new file mode 100644
index 0000000..51f7802
Binary files /dev/null and b/odex30_base/branch/static/description/7_branch_customer.png differ
diff --git a/odex30_base/branch/static/description/8_branch_product.png b/odex30_base/branch/static/description/8_branch_product.png
new file mode 100644
index 0000000..8622072
Binary files /dev/null and b/odex30_base/branch/static/description/8_branch_product.png differ
diff --git a/odex30_base/branch/static/description/9_branch_variant.png b/odex30_base/branch/static/description/9_branch_variant.png
new file mode 100644
index 0000000..debfd49
Binary files /dev/null and b/odex30_base/branch/static/description/9_branch_variant.png differ
diff --git a/odex30_base/branch/static/description/Banner.png b/odex30_base/branch/static/description/Banner.png
new file mode 100644
index 0000000..669873a
Binary files /dev/null and b/odex30_base/branch/static/description/Banner.png differ
diff --git a/odex30_base/branch/static/description/bi_logo.png b/odex30_base/branch/static/description/bi_logo.png
new file mode 100644
index 0000000..e5d60b2
Binary files /dev/null and b/odex30_base/branch/static/description/bi_logo.png differ
diff --git a/odex30_base/branch/static/description/demanded/all_in_one_pos.png b/odex30_base/branch/static/description/demanded/all_in_one_pos.png
new file mode 100644
index 0000000..e51fc57
Binary files /dev/null and b/odex30_base/branch/static/description/demanded/all_in_one_pos.png differ
diff --git a/odex30_base/branch/static/description/demanded/bi_generic_import.png b/odex30_base/branch/static/description/demanded/bi_generic_import.png
new file mode 100644
index 0000000..785b657
Binary files /dev/null and b/odex30_base/branch/static/description/demanded/bi_generic_import.png differ
diff --git a/odex30_base/branch/static/description/demanded/branch.png b/odex30_base/branch/static/description/demanded/branch.png
new file mode 100644
index 0000000..70209a6
Binary files /dev/null and b/odex30_base/branch/static/description/demanded/branch.png differ
diff --git a/odex30_base/branch/static/description/demanded/customer_overdue.png b/odex30_base/branch/static/description/demanded/customer_overdue.png
new file mode 100644
index 0000000..b9efae2
Binary files /dev/null and b/odex30_base/branch/static/description/demanded/customer_overdue.png differ
diff --git a/odex30_base/branch/static/description/demanded/generic_excel_report.png b/odex30_base/branch/static/description/demanded/generic_excel_report.png
new file mode 100644
index 0000000..4800329
Binary files /dev/null and b/odex30_base/branch/static/description/demanded/generic_excel_report.png differ
diff --git a/odex30_base/branch/static/description/demanded/sale_commision.png b/odex30_base/branch/static/description/demanded/sale_commision.png
new file mode 100644
index 0000000..145289f
Binary files /dev/null and b/odex30_base/branch/static/description/demanded/sale_commision.png differ
diff --git a/odex30_base/branch/static/description/features/branch_access.png b/odex30_base/branch/static/description/features/branch_access.png
new file mode 100644
index 0000000..e7aee7c
Binary files /dev/null and b/odex30_base/branch/static/description/features/branch_access.png differ
diff --git a/odex30_base/branch/static/description/features/branch_metrics.png b/odex30_base/branch/static/description/features/branch_metrics.png
new file mode 100644
index 0000000..59abab8
Binary files /dev/null and b/odex30_base/branch/static/description/features/branch_metrics.png differ
diff --git a/odex30_base/branch/static/description/icon.png b/odex30_base/branch/static/description/icon.png
new file mode 100644
index 0000000..a02d004
Binary files /dev/null and b/odex30_base/branch/static/description/icon.png differ
diff --git a/odex30_base/branch/static/description/index.html b/odex30_base/branch/static/description/index.html
new file mode 100644
index 0000000..7b5f197
--- /dev/null
+++ b/odex30_base/branch/static/description/index.html
@@ -0,0 +1,446 @@
+
+
+
+
+
+
+
+
+
+ Supported :
+
+
+
+
+
+ Enterprise
+
+
+
+
+
+ Community
+
+
+
+
+
+ Odoo.sh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Multiple Branch/Unit(operation) Management Odoo Apps for Single Company
+
+
+ Multi Branches management for All Application Odoo Apps
+
+
+ Manage Different Branch Unit for single company in Odoo
+
+
+ Do you have multiple unit for single company? Do you want them to works as separate entity inside the company? Here you go, This multiple branch management Odoo apps helps users to make different branches for single company with multi branch concept which works same as multi-company environment.
+ Also Don't worry about the access rights too, We have added branch user/manager roles inside the Odoo module, Branch user can only access records of its specific branch and Branch manager can see records of all Branches.
+ Branch functionality added to Sale Order, Purchase Order, Invoice/Billing, Accounting, Warehouse and Products etc.
+
+
+
+ You can also manage multiple branch with multi company environment. For each company you can add several branches also multi company rules is already applied on branch object, so if user don't have access of company then that user can't have access of branch of that specific company.
+
+
+ Multi branch Odoo apps works for both community and enterprise edition with all generic application like contact, product, sales, purchase, warehouse,billing, accounting etc. We have other separate apps available for Manufacturing,Projects, Subscription, Helpdesk etc, you can see that on Odoo store and If you can't see it contact us, we will help you on that.
+
+ If you are using Odoo enterprise edition and don't want to use specific application i.e Purchase or Sales, then don't worry we will simply remove that dependency for you without any extra cost.
+
+
+
looking for Multiple Branch Accounting Enterprise Reports Apps, please check below module link
+
+ Financial Reports For Branch -Enterprise Edition Odoo Apps.
+
+
+
Looking for Multiple Branch Accounting Community Reports Apps, please check below module link
+
+ Multiple Branch Accounting Community Reports Odoo Apps.
+
+
+
Here is Advance Multiple Branch Odoo Apps, please check below module link
+
+ Advance Multi Branch Management Odoo Apps.
+
+
Multi Language Translation Available
+
We have added Translation using google translate for English (US), Arabic, French / Français, Spanish / Español and Dutch / Nederlands, if you want to change translation terms or add new translation provide us translation, we will add that without any cost.
+
+
+
+
+
+
+
+
+
+
Features
+
+
+
+
+
+
+
+
+
Multi Branch Concept.
+ It allows you to create Multiple Branch/Unit, Working as multi branch concept same as Odoo's multi company environment.
+
+
+
+
+
+
+
+
+
+
Complete Workflow for Branch.
+ Branch functionality added to Sales, Purchase, Invoice, Warehouse, Access group created for branch manager and branch user with specific branch.
+
+
+
+
+
+
+
+
+
+
+
+
+
Branch Access Rights
+
User have to give branch access like User or Manage, User have to "Multi Branches".
+
+
+
+
+
+
+
+
+
+
Create Multiple Branch
+
Branch Manager can create multiple branch under Settings > Users & Companies > Branch menu, User also can set branch details like address, phone, company.
+
+
+
Assign Branch User
+
Branch manager can assign a branch for which specific user is belongs.
+
+
+
+
+
+
+
+
+
Multi Branch Feature
+
Users with "Multi Branches" access rights can see and change multiple branch from header.
+
+
On clicking branch on header user can see allowed branches and can select one, on changing branch users branch will also changed under users settings.
+
+
+
+
+
+
+
+
+
Branch On Customer
+
Branch manager can set customer for specific branch by selecting branch on customer.
+
+
+
Branch On Product Template
+
User can set branch on product template, selected branch on product template will automatically added to product variant.
+
+
+
Branch On Product Variant
+
+
+
+
+
+
+
+
+
Branch On Sales Flow
+
While creating sales order user who is currently login, branch of the user is set as branch to the sales order and warehouse shipment address is also set according to selected branch.
+
+
User can see created records of sale order group by branch as shown bellow image.
+
+
+
+
+
+
+
+
+
Branch Sales Analysis Report
+
You can see sales analysis report based on branch.
+
+
Branch on Delivery Order
+
While Quotation get confirmed generated picking(delivery) will have same branch automatically set based on Sales Order.
+
+
+
+
+
+
+
+
+
Branch on Customer Invoices
+
While quotation get confirmed generated picking(delivery) will have same branch automatically set based on Sales Order.
+
When creating manual invoice then log in user's branch will be assigned to the invoice.
+
+
+
+
+
+
+
+
+
Branch On Journal Items
+
While invoice created the branch will automatically set on journal items from invoice.
+
+
+
+
+
+
+
+
+
Branch On Customer Payment
+
Selected branch of the invoice will automatically set on account payment.
+
+
+
+
+
+
+
+
+
Branch On Bank Statement
+
User can also see branch on bank statement generated for payment.
+
+
+
+
+
+
+
+
+
Branch On Purchase Order
+
While creating purchase order user who is currently login, branch of the user is set as branch to the purchase order.
+
+
+
+
+
+
+
+
+
User can see created records of purchase order group by branch as shown bellow image.
+
+
Branch Purchase Analysis Report
+
You can see purchase analysis report based on branch.
+
+
+
+
+
+
+
+
+
Branch on Picking
+
While RFQ(purchase) get confirmed generated picking(shipment) will have same branch automatically set based on RFQ.
+
+
+
+
+
+
+
+
+
+
Branch On Vendor Bill
+
While bill created from the purchase order selected branch of the purchase order will automatically set on vendor bill.
+
After Validate invoice, Selected branch of the invoice will automatically set on Journal Items.
+
+
+
+
+
+
+
+
+
Branch On Vendor Payment
+
Selected branch of the invoice will automatically set on Account Payment.
+
+
+
+
+
+
+
+
+
Branch On Warehouse
+
You can also define branch in the warehouse and all the technical fields are set according to the branch.
+
+
Branch On Stock Locations
+
In warehouse locations you can also set branch.
+
+
+
+
+
+
+
+
+
Branch On Inventory Valuation
+
User also can set branch on inventory valuations.
+
+
+
+
+
+
+
+
+
+
+
+
+
Free Support
+
You will get 90 Days free support incase any bugs or issue (Except data recovery).
+
+ At BrowseInfo we offer end to end solution for Odoo services. Which includes analysis & consultation on the workflows and integration part. Please note that You're not allowed to distribute this module after purchase! Incase of any question regarding this module feel free to email us on ticket@browseinfo.in or raise a ticket on support.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/odex30_base/branch/static/description/languages/Arabic.png b/odex30_base/branch/static/description/languages/Arabic.png
new file mode 100644
index 0000000..d82390d
Binary files /dev/null and b/odex30_base/branch/static/description/languages/Arabic.png differ
diff --git a/odex30_base/branch/static/description/languages/Dutch.png b/odex30_base/branch/static/description/languages/Dutch.png
new file mode 100644
index 0000000..b550f77
Binary files /dev/null and b/odex30_base/branch/static/description/languages/Dutch.png differ
diff --git a/odex30_base/branch/static/description/languages/English.png b/odex30_base/branch/static/description/languages/English.png
new file mode 100644
index 0000000..65d8adc
Binary files /dev/null and b/odex30_base/branch/static/description/languages/English.png differ
diff --git a/odex30_base/branch/static/description/languages/French.png b/odex30_base/branch/static/description/languages/French.png
new file mode 100644
index 0000000..0359a67
Binary files /dev/null and b/odex30_base/branch/static/description/languages/French.png differ
diff --git a/odex30_base/branch/static/description/languages/Spanish.png b/odex30_base/branch/static/description/languages/Spanish.png
new file mode 100644
index 0000000..2899c0b
Binary files /dev/null and b/odex30_base/branch/static/description/languages/Spanish.png differ
diff --git a/odex30_base/branch/static/description/related/bi_add_custom_field_project.png b/odex30_base/branch/static/description/related/bi_add_custom_field_project.png
new file mode 100644
index 0000000..0c57edf
Binary files /dev/null and b/odex30_base/branch/static/description/related/bi_add_custom_field_project.png differ
diff --git a/odex30_base/branch/static/description/related/bi_automated_sale_order.png b/odex30_base/branch/static/description/related/bi_automated_sale_order.png
new file mode 100644
index 0000000..43b47a7
Binary files /dev/null and b/odex30_base/branch/static/description/related/bi_automated_sale_order.png differ
diff --git a/odex30_base/branch/static/description/related/bi_discount_from_customer.png b/odex30_base/branch/static/description/related/bi_discount_from_customer.png
new file mode 100644
index 0000000..6cca3e8
Binary files /dev/null and b/odex30_base/branch/static/description/related/bi_discount_from_customer.png differ
diff --git a/odex30_base/branch/static/description/related/bi_purchase_tripple_approval.png b/odex30_base/branch/static/description/related/bi_purchase_tripple_approval.png
new file mode 100644
index 0000000..b6d18ed
Binary files /dev/null and b/odex30_base/branch/static/description/related/bi_purchase_tripple_approval.png differ
diff --git a/odex30_base/branch/static/description/related/bi_top_growing_product.png b/odex30_base/branch/static/description/related/bi_top_growing_product.png
new file mode 100644
index 0000000..778a1b0
Binary files /dev/null and b/odex30_base/branch/static/description/related/bi_top_growing_product.png differ
diff --git a/odex30_base/branch/static/description/related/sale_purchase_invoice_discount.png b/odex30_base/branch/static/description/related/sale_purchase_invoice_discount.png
new file mode 100644
index 0000000..f4cc4c3
Binary files /dev/null and b/odex30_base/branch/static/description/related/sale_purchase_invoice_discount.png differ
diff --git a/odex30_base/branch/static/src/js/abstract_web_client.js b/odex30_base/branch/static/src/js/abstract_web_client.js
new file mode 100644
index 0000000..1a70aa5
--- /dev/null
+++ b/odex30_base/branch/static/src/js/abstract_web_client.js
@@ -0,0 +1,76 @@
+import { browser } from "@web/core/browser/browser";
+import { cookie } from "@web/core/browser/cookie";
+import { router } from "@web/core/browser/router";
+import { registry } from "@web/core/registry";
+import { session } from "@web/session";
+
+/**
+ * Branch Context Service
+ * Handles branch initialization and context management for the web client
+ */
+
+function parseBranchIds(bids, separator = ",") {
+ if (typeof bids === "string") {
+ return bids.split(separator).map(Number);
+ } else if (typeof bids === "number") {
+ return [bids];
+ }
+ return [];
+}
+
+function getBranchIds() {
+ let bids;
+ const state = router.current;
+ if ("bids" in state) {
+ bids = parseBranchIds(state.bids);
+ } else {
+ bids = parseBranchIds(cookie.get("bids"));
+ }
+ return bids;
+}
+
+function computeActiveBranchIds(bids) {
+ const { user_branches } = session;
+ let activeBranchIds = bids || [];
+ const availableBranchesFromSession = user_branches?.allowed_branch || [];
+ const notAllowedBranches = activeBranchIds.filter(
+ (id) => !availableBranchesFromSession.some(branch => branch[0] === id)
+ );
+
+ if (!activeBranchIds.length || notAllowedBranches.length) {
+ activeBranchIds = [user_branches?.current_branch?.[0] || 1];
+ }
+ return activeBranchIds;
+}
+
+export const branchContextService = {
+ dependencies: ["router"],
+
+ start(env, { router }) {
+ // Initialize branch context on startup
+ const branchIds = getBranchIds();
+ const activeBranchIds = computeActiveBranchIds(branchIds);
+
+ // Update session context
+ if (session.user_context) {
+ session.user_context.allowed_branch_ids = activeBranchIds;
+ }
+
+ // Update router state if needed
+ const currentState = router.current;
+ if (!currentState.bids || activeBranchIds.join(",") !== currentState.bids) {
+ router.replaceState({ bids: activeBranchIds.join(",") });
+ }
+
+ // Update cookie
+ cookie.set("bids", activeBranchIds.join(","));
+
+ return {
+ getBranchIds,
+ computeActiveBranchIds,
+ activeBranchIds,
+ };
+ },
+};
+
+registry.category("services").add("branchContext", branchContextService);
diff --git a/odex30_base/branch/static/src/js/default_branch.js b/odex30_base/branch/static/src/js/default_branch.js
new file mode 100644
index 0000000..c6e5c60
--- /dev/null
+++ b/odex30_base/branch/static/src/js/default_branch.js
@@ -0,0 +1,87 @@
+import { Component, useState } from "@odoo/owl";
+import { registry } from "@web/core/registry";
+import { useService } from "@web/core/utils/hooks";
+import { session } from "@web/session";
+import { jsonrpc } from "@web/core/network/rpc_service";
+import { _t } from "@web/core/l10n/translation";
+import { device } from "@web/core/browser/feature_detection";
+
+/**
+ * When Odoo is configured in multi-branch mode, users should be able
+ * to switch their interface from one branch to the other. This is the purpose
+ * of this component, by displaying a dropdown menu in the systray.
+ */
+
+class SwitchBranchMenu extends Component {
+ static template = "branch.SwitchBranchMenu";
+ static props = {};
+
+ setup() {
+ this.branchService = useService("branch");
+ this.isMobile = device.isMobile;
+
+ this.state = useState({
+ allowed_branch_ids: session.user_context.allowed_branch_ids || [],
+ user_branches: session.user_branches?.allowed_branch || [],
+ current_branch: null,
+ current_branch_name: "",
+ });
+
+ this._initializeBranchData();
+ }
+
+ _initializeBranchData() {
+ this.state.current_branch = this.state.allowed_branch_ids[0];
+
+ if (this.state.user_branches.length > 0) {
+ const currentBranch = this.state.user_branches.find(
+ branch => branch[0] === this.state.current_branch
+ );
+ this.state.current_branch_name = currentBranch
+ ? currentBranch[1]
+ : this.state.user_branches[0][1];
+ }
+ }
+
+ /**
+ * @private
+ * @param {Event} ev
+ */
+ async _onSwitchBranchClick(ev) {
+ ev.preventDefault();
+ ev.stopPropagation();
+
+ const branchID = parseInt(ev.currentTarget.dataset.branchId);
+ let allowed_branch_ids = [...this.state.allowed_branch_ids];
+
+ // Handle branch selection logic
+ if (ev.currentTarget.querySelector('.fa-square-o')) {
+ if (this.state.allowed_branch_ids.length === 1) {
+ // Single branch mode
+ allowed_branch_ids = [branchID];
+ } else {
+ // Multi branch mode
+ allowed_branch_ids.push(branchID);
+ }
+ }
+
+ // Update session
+ this.branchService.setBranch(branchID, allowed_branch_ids);
+
+ // Send RPC call
+ await jsonrpc('/set_brnach', {
+ BranchID: branchID,
+ });
+ }
+
+ get displaySwitchBranchMenu() {
+ return session.display_switch_branch_menu;
+ }
+}
+
+export const switchBranchMenu = {
+ Component: SwitchBranchMenu,
+ condition: () => session.display_switch_branch_menu,
+};
+
+registry.category("systray").add("SwitchBranchMenu", switchBranchMenu, { sequence: 50 });
\ No newline at end of file
diff --git a/odex30_base/branch/static/src/js/session.js b/odex30_base/branch/static/src/js/session.js
new file mode 100644
index 0000000..4088b9f
--- /dev/null
+++ b/odex30_base/branch/static/src/js/session.js
@@ -0,0 +1,61 @@
+import { browser } from "@web/core/browser/browser";
+import { cookie } from "@web/core/browser/cookie";
+import { router } from "@web/core/browser/router";
+import { registry } from "@web/core/registry";
+import { session } from "@web/session";
+
+const BIDS_SEPARATOR = ",";
+
+function parseBranchIds(bids, separator = BIDS_SEPARATOR) {
+ if (typeof bids === "string") {
+ return bids.split(separator).map(Number);
+ } else if (typeof bids === "number") {
+ return [bids];
+ }
+ return [];
+}
+
+function computeActiveBranchIds(bids) {
+ const { user_branches } = session;
+ let activeBranchIds = bids || [];
+ const availableBranchesFromSession = user_branches?.allowed_branch || {};
+ const notAllowedBranches = activeBranchIds.filter(
+ (id) => !(id in availableBranchesFromSession)
+ );
+
+ if (!activeBranchIds.length || notAllowedBranches.length) {
+ activeBranchIds = [user_branches?.current_branch || 1];
+ }
+ return activeBranchIds;
+}
+
+export const branchService = {
+ dependencies: ["router"],
+
+ start(env, { router }) {
+ const setBranch = (main_branch_id, branch_ids) => {
+ const sortedBids = branch_ids.sort((a, b) => {
+ if (a === main_branch_id) {
+ return -1;
+ } else if (b === main_branch_id) {
+ return 1;
+ } else {
+ return a - b;
+ }
+ });
+
+ const bidsString = sortedBids.join(BIDS_SEPARATOR);
+ cookie.set("bids", bidsString || String(main_branch_id));
+ router.pushState({ bids: bidsString });
+ browser.location.reload();
+ };
+
+ return {
+ setBranch,
+ parseBranchIds,
+ computeActiveBranchIds,
+ };
+ },
+};
+
+registry.category("services").add("branch", branchService);
diff --git a/odex30_base/branch/static/src/xml/branch.xml b/odex30_base/branch/static/src/xml/branch.xml
new file mode 100644
index 0000000..de53e50
--- /dev/null
+++ b/odex30_base/branch/static/src/xml/branch.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
diff --git a/odex30_base/branch/views/branch_template.xml b/odex30_base/branch/views/branch_template.xml
new file mode 100644
index 0000000..edec293
--- /dev/null
+++ b/odex30_base/branch/views/branch_template.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/odex30_base/branch/views/inherited_account_bank_statement.xml b/odex30_base/branch/views/inherited_account_bank_statement.xml
new file mode 100644
index 0000000..4bd5c38
--- /dev/null
+++ b/odex30_base/branch/views/inherited_account_bank_statement.xml
@@ -0,0 +1,25 @@
+
+
+
+
+ view.bank.statement.form.inherit.branch
+ account.bank.statement
+
+
+
+
+
+
+
+
+
+
+
+
+ {'branch_id' : branch_id}
+
+
+
+
+
+
diff --git a/odex30_base/branch/views/inherited_account_invoice.xml b/odex30_base/branch/views/inherited_account_invoice.xml
new file mode 100644
index 0000000..8610e1e
--- /dev/null
+++ b/odex30_base/branch/views/inherited_account_invoice.xml
@@ -0,0 +1,107 @@
+
+
+
+
+
+ account.move.inherit.tree
+ account.move
+
+
+
+
+
+
+
+
+
+ account.move.inherit.tree1
+ account.move
+
+
+
+
+
+
+
+
+
+ account.payment.inherit.tree
+ account.payment
+
+
+
+
+
+
+
+
+
+ account.move.line.inherit.form
+ account.move.line
+
+
+
+
+
+
+
+
+
+ account.move.line.inherit.tree2
+ account.move.line
+
+
+
+
+
+
+
+
+
+
+ view.move.form.inherit.branch
+ account.move
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ view.move.line.tree.inherit.branch
+ account.move.line
+
+
+
+
+
+
+
+
+
+ move.line.filter.inherit.branch
+ account.move.line
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/branch/views/inherited_partner.xml b/odex30_base/branch/views/inherited_partner.xml
new file mode 100644
index 0000000..4e4eff0
--- /dev/null
+++ b/odex30_base/branch/views/inherited_partner.xml
@@ -0,0 +1,13 @@
+
+
+
+ view_partner_structured_form
+ res.partner
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/odex30_base/branch/views/inherited_product.xml b/odex30_base/branch/views/inherited_product.xml
new file mode 100644
index 0000000..8f42537
--- /dev/null
+++ b/odex30_base/branch/views/inherited_product.xml
@@ -0,0 +1,25 @@
+
+
+
+ product_extended.product.form.branch
+ product.template
+
+
+
+
+
+
+
+
+
+ product.product.view.form.branch
+ product.product
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/branch/views/inherited_purchase_order.xml b/odex30_base/branch/views/inherited_purchase_order.xml
new file mode 100644
index 0000000..d7b1ce9
--- /dev/null
+++ b/odex30_base/branch/views/inherited_purchase_order.xml
@@ -0,0 +1,52 @@
+
+
+
+
+ purchase.order.form.inherit.branch
+ purchase.order
+
+
+
+
+
+
+ {'branch_id' : branch_id}
+
+
+
+
+
+ view.purchase.order.filter.inherit.branch
+ purchase.order
+
+
+
+
+
+
+
+
+
+ purchase.order.inherit.tree
+ purchase.order
+
+
+
+
+
+
+
+
+
+
+ purchase.order.inherit.tree1
+ purchase.order
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/odex30_base/branch/views/inherited_res_users.xml b/odex30_base/branch/views/inherited_res_users.xml
new file mode 100644
index 0000000..d63a310
--- /dev/null
+++ b/odex30_base/branch/views/inherited_res_users.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+ view.users.form.inherit.branch
+ res.users
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ res.user.preference.form.extended
+ res.users
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/branch/views/inherited_sale_order.xml b/odex30_base/branch/views/inherited_sale_order.xml
new file mode 100644
index 0000000..56fe6d1
--- /dev/null
+++ b/odex30_base/branch/views/inherited_sale_order.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+ view.order.form.inherit.branch
+ sale.order
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ view.sales.order.filter.inherit.branch
+ sale.order
+
+
+
+
+
+
+
+
+
+ sale.order.inherit.tree
+ sale.order
+
+
+
+
+
+
+
+
+
+ sale.order.inherit.tree1
+ sale.order
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/odex30_base/branch/views/inherited_stock_inventory.xml b/odex30_base/branch/views/inherited_stock_inventory.xml
new file mode 100644
index 0000000..7af7e10
--- /dev/null
+++ b/odex30_base/branch/views/inherited_stock_inventory.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ view.stock.inventory.adjustment.form.inherit.branch
+ stock.inventory.adjustment.name
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/branch/views/inherited_stock_location.xml b/odex30_base/branch/views/inherited_stock_location.xml
new file mode 100644
index 0000000..2d9df9b
--- /dev/null
+++ b/odex30_base/branch/views/inherited_stock_location.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ view.location.form.inherit.branch
+ stock.location
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/odex30_base/branch/views/inherited_stock_move.xml b/odex30_base/branch/views/inherited_stock_move.xml
new file mode 100644
index 0000000..e7038e7
--- /dev/null
+++ b/odex30_base/branch/views/inherited_stock_move.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+ view.move.form.inherit.branch
+ stock.move
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/odex30_base/branch/views/inherited_stock_picking.xml b/odex30_base/branch/views/inherited_stock_picking.xml
new file mode 100644
index 0000000..1a69385
--- /dev/null
+++ b/odex30_base/branch/views/inherited_stock_picking.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+ view.picking.form.inherit.branch
+ stock.picking
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/odex30_base/branch/views/inherited_stock_warehouse.xml b/odex30_base/branch/views/inherited_stock_warehouse.xml
new file mode 100644
index 0000000..6bb83d3
--- /dev/null
+++ b/odex30_base/branch/views/inherited_stock_warehouse.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ view.warehouse.inherit.branch
+ stock.warehouse
+
+
+
+
+
+
+
+
+
+ view.stock.picking.type.inherit.branch
+ stock.picking.type
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/odex30_base/branch/views/res_branch_view.xml b/odex30_base/branch/views/res_branch_view.xml
new file mode 100644
index 0000000..74b0186
--- /dev/null
+++ b/odex30_base/branch/views/res_branch_view.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+ branch.res.branch.view.form
+ res.branch
+
+
+
+
+
+
+
+ branch.res.branch.view.tree
+ res.branch
+
+
+
+
+
+
+
+
+
+
+ Branch
+ ir.actions.act_window
+ res.branch
+ list,form
+
+
+ Click here to create a new branch.
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/branch/wizard/__init__.py b/odex30_base/branch/wizard/__init__.py
new file mode 100644
index 0000000..46068eb
--- /dev/null
+++ b/odex30_base/branch/wizard/__init__.py
@@ -0,0 +1,5 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from . import inherited_sale_advance_payment_inv
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/odex30_base/branch/wizard/inherited_account_payment.xml b/odex30_base/branch/wizard/inherited_account_payment.xml
new file mode 100644
index 0000000..bbea15b
--- /dev/null
+++ b/odex30_base/branch/wizard/inherited_account_payment.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ view.account.payment.invoice.form.inherit.branch
+ account.payment
+
+
+
+
+
+
+
+
+
+
+
+ view.account.payment.register.form.inherit.branch
+ account.payment.register
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/odex30_base/branch/wizard/inherited_sale_advance_payment_inv.py b/odex30_base/branch/wizard/inherited_sale_advance_payment_inv.py
new file mode 100644
index 0000000..2ddd9e0
--- /dev/null
+++ b/odex30_base/branch/wizard/inherited_sale_advance_payment_inv.py
@@ -0,0 +1,47 @@
+# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+from odoo.exceptions import UserError
+
+
+class SaleAdvancePaymentInv(models.TransientModel):
+ _inherit = 'sale.advance.payment.inv'
+
+
+ def _create_invoice(self, order, so_line, amount):
+ result = super(SaleAdvancePaymentInv, self)._create_invoice(order, so_line, amount)
+
+ branch_id = False
+
+ if order.branch_id:
+ branch_id = order.branch_id.id
+ elif self.env.user.branch_id:
+ branch_id = self.env.user.branch_id.id
+
+ result.write({
+ 'branch_id' : branch_id
+ })
+
+ return result
+
+class AccountPaymentRegisterInv(models.TransientModel):
+ _inherit = 'account.payment.register'
+
+ @api.model
+ def default_get(self, fields):
+ rec = super(AccountPaymentRegisterInv, self).default_get(fields)
+ invoice_defaults = self.env['account.move'].browse(self._context.get('active_ids', []))
+ if invoice_defaults and len(invoice_defaults) == 1:
+ rec['branch_id'] = invoice_defaults.branch_id.id
+ return rec
+
+ branch_id = fields.Many2one('res.branch')
+
+ @api.onchange('branch_id')
+ def _onchange_branch_id(self):
+ selected_brach = self.branch_id
+ if selected_brach:
+ user_id = self.env.user
+ user_branch = user_id.sudo().branch_id
+ if user_branch and user_branch.id != selected_brach.id:
+ raise UserError("Please select active branch only. Other may create the Multi branch issue. \n\ne.g: If you wish to add other branch then Switch branch from the header and set that.")
\ No newline at end of file
diff --git a/odex30_base/cron_failure_notification/README.rst b/odex30_base/cron_failure_notification/README.rst
new file mode 100755
index 0000000..48acf2e
--- /dev/null
+++ b/odex30_base/cron_failure_notification/README.rst
@@ -0,0 +1,44 @@
+.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+ :alt: License: AGPL-3
+
+Cron Failure Notification
+=========================
+* Notify the Admin About Cron Failures Via Mail.
+
+Configuration
+============
+- Install our custom addon
+
+Company
+-------
+* `Cybrosys Techno Solutions `__
+
+License
+-------
+General Public License, Version 3 (AGPL V3).
+(http://www.gnu.org/licenses/agpl-3.0-standalone.html)
+
+Credits
+-------
+Developer: (V18) Muhammed Rishad, Contact: odoo@cybrosys.com
+
+Contacts
+--------
+* Mail Contact : odoo@cybrosys.com
+
+Bug Tracker
+-----------
+Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
+
+Maintainer
+==========
+.. image:: https://cybrosys.com/images/logo.png
+ :target: https://cybrosys.com
+This module is maintained by Cybrosys Technologies.
+
+For support and more information, please visit https://www.cybrosys.com
+
+Further information
+===================
+HTML Description: ``__
diff --git a/odex30_base/cron_failure_notification/__init__.py b/odex30_base/cron_failure_notification/__init__.py
new file mode 100755
index 0000000..b971770
--- /dev/null
+++ b/odex30_base/cron_failure_notification/__init__.py
@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+################################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies(
+# ).
+# Author: MUHAMMED RISHAD (odoo@cybrosys.com)
+#
+# You can modify it under the terms of the GNU AFFERO
+# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
+#
+# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+# (AGPL v3) along with this program.
+# If not, see .
+#
+################################################################################
+from . import models
diff --git a/odex30_base/cron_failure_notification/__manifest__.py b/odex30_base/cron_failure_notification/__manifest__.py
new file mode 100755
index 0000000..b3c47f1
--- /dev/null
+++ b/odex30_base/cron_failure_notification/__manifest__.py
@@ -0,0 +1,47 @@
+# -*- coding: utf-8 -*-
+################################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies(
+# ).
+# Author: MUHAMMED RISHAD (odoo@cybrosys.com)
+#
+# You can modify it under the terms of the GNU AFFERO
+# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
+#
+# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+# (AGPL v3) along with this program.
+# If not, see .
+#
+################################################################################
+{
+ 'name': "Cron Failure Notification",
+ 'version': '18.0.1.0.1',
+ 'category': 'Discuss',
+ 'summary': 'Notify the Admin About Cron Failures Via Mail',
+ 'description': """This module helps to send notification to admin with
+ lists of failed scheduled actions.""",
+ 'author': 'Cybrosys Techno Solutions',
+ 'company': 'Cybrosys Techno Solutions',
+ 'maintainer': 'Cybrosys Techno Solutions',
+ 'website': 'https://www.cybrosys.com',
+ 'depends': ['base', 'mail'],
+ 'data': ['security/ir.model.access.csv',
+ 'report/ir_cron_failure_templates.xml',
+ 'report/ir_cron_reports.xml',
+ 'data/failure_mail_data.xml',
+ 'data/mail_template_data.xml',
+ 'views/ir_cron_views.xml',
+ 'views/failure_history_views.xml'],
+ 'images': ['static/description/banner.png'],
+ 'license': 'AGPL-3',
+ 'installable': True,
+ 'auto_install': False,
+ 'application': False,
+}
diff --git a/odex30_base/cron_failure_notification/data/failure_mail_data.xml b/odex30_base/cron_failure_notification/data/failure_mail_data.xml
new file mode 100755
index 0000000..2afd6bf
--- /dev/null
+++ b/odex30_base/cron_failure_notification/data/failure_mail_data.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+ Mail: Cron Error Notification
+
+ code
+ model.mail_send_cron()
+
+ 1
+ days
+
+
+
diff --git a/odex30_base/cron_failure_notification/data/mail_template_data.xml b/odex30_base/cron_failure_notification/data/mail_template_data.xml
new file mode 100755
index 0000000..73bf9a5
--- /dev/null
+++ b/odex30_base/cron_failure_notification/data/mail_template_data.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+ Mail: Cron Action Error23
+
+ {{ object.name }} Cron Failed
+
+
+ Dear Admin,
+ Here is attaching failures from scheduled cron jobs on our
+ server, so please quickly take an action for this.
+
+ Thank You.
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/doc/RELEASE_NOTES.md b/odex30_base/cron_failure_notification/doc/RELEASE_NOTES.md
new file mode 100755
index 0000000..54f6b8c
--- /dev/null
+++ b/odex30_base/cron_failure_notification/doc/RELEASE_NOTES.md
@@ -0,0 +1,13 @@
+## Module
+
+#### 19.02.2025
+#### Version 18.0.1.0.0
+#### ADD
+
+- Initial commit for Cron Failure Notification
+
+#### 19.02.2025
+#### Version 18.0.1.0.1
+#### UPDT
+
+- Updated the python logic how system administrators mail's are fetched in function mail_send_cron.
diff --git a/odex30_base/cron_failure_notification/models/__init__.py b/odex30_base/cron_failure_notification/models/__init__.py
new file mode 100755
index 0000000..8ae975f
--- /dev/null
+++ b/odex30_base/cron_failure_notification/models/__init__.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies(
+# ).
+# Author: MUHAMMED RISHAD (odoo@cybrosys.com)
+#
+# You can modify it under the terms of the GNU AFFERO
+# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
+#
+# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+# (AGPL v3) along with this program.
+# If not, see .
+#
+##############################################################################
+from . import failure_history
+from . import ir_cron
diff --git a/odex30_base/cron_failure_notification/models/failure_history.py b/odex30_base/cron_failure_notification/models/failure_history.py
new file mode 100755
index 0000000..5216d2e
--- /dev/null
+++ b/odex30_base/cron_failure_notification/models/failure_history.py
@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies(
+# ).
+# Author: MUHAMMED RISHAD (odoo@cybrosys.com)
+#
+# You can modify it under the terms of the GNU AFFERO
+# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
+#
+# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+# (AGPL v3) along with this program.
+# If not, see .
+#
+##############################################################################
+from odoo import fields, models
+
+
+class FailureHistory(models.Model):
+ """Creates failure history to store the failed cron action details
+ as a record"""
+ _name = 'failure.history'
+ _inherit = ['mail.thread', 'mail.activity.mixin']
+ _description = 'Failure History'
+
+ name = fields.Char(string='Name', required=True, help="Failed cron action "
+ "name")
+ error = fields.Char(string='Error Details', help="Detailed description "
+ "about error")
diff --git a/odex30_base/cron_failure_notification/models/ir_cron.py b/odex30_base/cron_failure_notification/models/ir_cron.py
new file mode 100755
index 0000000..4805bb1
--- /dev/null
+++ b/odex30_base/cron_failure_notification/models/ir_cron.py
@@ -0,0 +1,116 @@
+# -*- coding: utf-8 -*-
+# ############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies(
+# ).
+# Author: MUHAMMED RISHAD (odoo@cybrosys.com)
+#
+# You can modify it under the terms of the GNU AFFERO
+# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
+#
+# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+# (AGPL v3) along with this program.
+# If not, see .
+#
+##############################################################################
+import base64
+import datetime
+import logging
+import time
+from odoo import models, _
+from odoo.exceptions import ValidationError
+from odoo.fields import _logger
+
+
+class IrCron(models.Model):
+ """ Inherits ir cron for add a feature that sends mail to admin
+ each day, if any cron failed """
+ _name = 'ir.cron'
+ _inherit = ['ir.cron', 'mail.thread']
+
+
+ def _callback(self, cron_name, server_action_id):
+ """ Run the method associated to a given job. It takes care of logging
+ and exception handling. Note that the user running the server action
+ is the user calling this method. """
+ self.ensure_one()
+ try:
+ if self.pool != self.pool.check_signaling():
+ # the registry has changed, reload self in the new registry
+ self.env.reset()
+ self = self.env()[self._name]
+
+ _logger.debug(
+ "cron.object.execute(%r, %d, '*', %r, %d)",
+ self.env.cr.dbname,
+ self._uid,
+ cron_name,
+ server_action_id,
+ )
+ _logger.info('Job %r (%s) starting', cron_name, self.id)
+ start_time = time.time()
+ self.env['ir.actions.server'].browse(server_action_id).run()
+ self.env.flush_all()
+ end_time = time.time()
+ _logger.info('Job %r (%s) done in %.3fs', cron_name, self.id,
+ end_time - start_time)
+ if start_time and _logger.isEnabledFor(logging.DEBUG):
+ _logger.debug('Job %r (%s) server action #%s with uid %s '
+ 'executed in %.3fs',
+ cron_name, self.id, server_action_id,
+ self.env.uid, end_time - start_time)
+ self.pool.signal_changes()
+ except Exception as exception:
+ self.pool.reset_changes()
+ _logger.exception('Job %r (%s) server action #%s failed',
+ cron_name, self.id, server_action_id)
+ if exception:
+ self.env['failure.history'].create({
+ 'name': cron_name,
+ 'error': str(exception),
+ })
+ raise ValidationError(_(str(exception)))
+
+ def mail_send_cron(self):
+ """ If any cron's failed a notification email will send to admin """
+ current_datetime = datetime.datetime.now()
+ yesterday_datetime = current_datetime - datetime.timedelta(days=1)
+ failure = self.env['failure.history'].search(
+ [('create_date', '>', yesterday_datetime),
+ ('create_date', '<', current_datetime)]
+ )
+ if failure:
+ admin_mail = self.env.ref('base.group_erp_manager').users.mapped('login')
+ email_values = {
+ 'email_to': admin_mail[0] if len(admin_mail) == 1
+ else ",".join(admin_mail)
+ }
+
+ report_template_id = self.env['ir.actions.report']._render_qweb_pdf(
+ report_ref='cron_failure_notification.cron_fail_pdf_report',
+ res_ids=False,
+ )
+ data_record = base64.b64encode(report_template_id[0])
+ ir_values = {
+ 'name': "Scheduled Cron Job Failed Attachment.pdf",
+ 'type': 'binary',
+ 'datas': data_record,
+ 'store_fname': data_record,
+ 'mimetype': 'application/x-pdf',
+ }
+ data_id = self.env['ir.attachment'].create(ir_values)
+
+ mail_template = self.env.ref(
+ 'cron_failure_notification.mail_template_cron_error')
+ mail_template.attachment_ids = [(6, 0, [data_id.id])]
+ mail_template.send_mail(self.id, email_values= email_values,
+ force_send=True)
+ mail_template.attachment_ids = [(3, data_id.id)]
+ return
diff --git a/odex30_base/cron_failure_notification/report/ir_cron_failure_templates.xml b/odex30_base/cron_failure_notification/report/ir_cron_failure_templates.xml
new file mode 100755
index 0000000..8f81742
--- /dev/null
+++ b/odex30_base/cron_failure_notification/report/ir_cron_failure_templates.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+ Cron Failure Report
+
+
+
+
+
+ Cron Action Name:
+
+
+
+ Cron Name
+ Date and Time of Run
+ Error Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/report/ir_cron_reports.xml b/odex30_base/cron_failure_notification/report/ir_cron_reports.xml
new file mode 100755
index 0000000..abaf220
--- /dev/null
+++ b/odex30_base/cron_failure_notification/report/ir_cron_reports.xml
@@ -0,0 +1,13 @@
+
+
+
+
+ Cron failure report
+ ir.cron
+ qweb-pdf
+ cron_failure_notification.report_logs_details
+ cron_failure_notification.report_logs_details
+
+ report
+
+
diff --git a/odex30_base/cron_failure_notification/security/ir.model.access.csv b/odex30_base/cron_failure_notification/security/ir.model.access.csv
new file mode 100755
index 0000000..daeca37
--- /dev/null
+++ b/odex30_base/cron_failure_notification/security/ir.model.access.csv
@@ -0,0 +1,2 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_failure_history,access.failure.history,model_failure_history,base.group_user,1,1,1,1
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/arrows-repeat.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/arrows-repeat.svg
new file mode 100644
index 0000000..1d7efab
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/arrows-repeat.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/banner-1.png b/odex30_base/cron_failure_notification/static/description/assets/icons/banner-1.png
new file mode 100644
index 0000000..c180db1
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/banner-1.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/banner-2.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/banner-2.svg
new file mode 100644
index 0000000..e606d97
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/banner-2.svg
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/banner-bg.png b/odex30_base/cron_failure_notification/static/description/assets/icons/banner-bg.png
new file mode 100644
index 0000000..a8238d3
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/banner-bg.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/banner-bg.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/banner-bg.svg
new file mode 100644
index 0000000..b137810
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/banner-bg.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/banner-call.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/banner-call.svg
new file mode 100644
index 0000000..96c687e
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/banner-call.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/banner-mail.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/banner-mail.svg
new file mode 100644
index 0000000..cbf0d15
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/banner-mail.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/banner-pattern.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/banner-pattern.svg
new file mode 100644
index 0000000..9c1c7e1
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/banner-pattern.svg
@@ -0,0 +1,343 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/banner-promo.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/banner-promo.svg
new file mode 100644
index 0000000..d52791b
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/banner-promo.svg
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/brand-pair.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/brand-pair.svg
new file mode 100644
index 0000000..d8db7fc
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/brand-pair.svg
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/check.png b/odex30_base/cron_failure_notification/static/description/assets/icons/check.png
new file mode 100644
index 0000000..c8e85f5
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/check.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/chevron.png b/odex30_base/cron_failure_notification/static/description/assets/icons/chevron.png
new file mode 100644
index 0000000..2089293
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/chevron.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/close-icon.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/close-icon.svg
new file mode 100644
index 0000000..df8cce3
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/close-icon.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/cogs.png b/odex30_base/cron_failure_notification/static/description/assets/icons/cogs.png
new file mode 100644
index 0000000..95d0bad
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/cogs.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/collabarate-icon.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/collabarate-icon.svg
new file mode 100644
index 0000000..dd4e105
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/collabarate-icon.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/consultation.png b/odex30_base/cron_failure_notification/static/description/assets/icons/consultation.png
new file mode 100644
index 0000000..8319d4b
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/consultation.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/cybro-logo.png b/odex30_base/cron_failure_notification/static/description/assets/icons/cybro-logo.png
new file mode 100644
index 0000000..ff4b782
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/cybro-logo.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/down.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/down.svg
new file mode 100644
index 0000000..f21c362
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/ecom-black.png b/odex30_base/cron_failure_notification/static/description/assets/icons/ecom-black.png
new file mode 100644
index 0000000..a9385ff
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/ecom-black.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/education-black.png b/odex30_base/cron_failure_notification/static/description/assets/icons/education-black.png
new file mode 100644
index 0000000..3eb09b2
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/education-black.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/faq.png b/odex30_base/cron_failure_notification/static/description/assets/icons/faq.png
new file mode 100644
index 0000000..4250b5b
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/faq.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/feature-icon.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/feature-icon.svg
new file mode 100644
index 0000000..fa0ea68
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/feature-icon.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/feature.png b/odex30_base/cron_failure_notification/static/description/assets/icons/feature.png
new file mode 100644
index 0000000..ac7a785
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/feature.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/gear.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/gear.svg
new file mode 100644
index 0000000..0cc66b6
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/gear.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/hire-odoo.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/hire-odoo.svg
new file mode 100644
index 0000000..e1ac089
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/hire-odoo.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/hotel-black.png b/odex30_base/cron_failure_notification/static/description/assets/icons/hotel-black.png
new file mode 100644
index 0000000..130f613
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/hotel-black.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/license.png b/odex30_base/cron_failure_notification/static/description/assets/icons/license.png
new file mode 100644
index 0000000..a586979
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/license.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/life-ring-icon.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/life-ring-icon.svg
new file mode 100644
index 0000000..3ae6e1d
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/life-ring-icon.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/lifebuoy.png b/odex30_base/cron_failure_notification/static/description/assets/icons/lifebuoy.png
new file mode 100644
index 0000000..658d56c
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/lifebuoy.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/mail.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/mail.svg
new file mode 100644
index 0000000..1eedde6
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/mail.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/manufacturing-black.png b/odex30_base/cron_failure_notification/static/description/assets/icons/manufacturing-black.png
new file mode 100644
index 0000000..697eb0e
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/manufacturing-black.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/notes.png b/odex30_base/cron_failure_notification/static/description/assets/icons/notes.png
new file mode 100644
index 0000000..ee5e954
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/notes.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/notification icon.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/notification icon.svg
new file mode 100644
index 0000000..0531899
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/notification icon.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/odoo-consultancy.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/odoo-consultancy.svg
new file mode 100644
index 0000000..e05f65b
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/odoo-consultancy.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/odoo-licencing.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/odoo-licencing.svg
new file mode 100644
index 0000000..2606c88
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/odoo-licencing.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/odoo-logo.png b/odex30_base/cron_failure_notification/static/description/assets/icons/odoo-logo.png
new file mode 100644
index 0000000..0e4d0eb
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/odoo-logo.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/patter.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/patter.svg
new file mode 100644
index 0000000..25c9c0a
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/patter.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/pattern1.png b/odex30_base/cron_failure_notification/static/description/assets/icons/pattern1.png
new file mode 100644
index 0000000..09ab0fb
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/pattern1.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/pos-black.png b/odex30_base/cron_failure_notification/static/description/assets/icons/pos-black.png
new file mode 100644
index 0000000..97c0f90
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/pos-black.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/puzzle-piece-icon.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/puzzle-piece-icon.svg
new file mode 100644
index 0000000..3e9ad93
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/puzzle-piece-icon.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/puzzle.png b/odex30_base/cron_failure_notification/static/description/assets/icons/puzzle.png
new file mode 100644
index 0000000..65cf854
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/puzzle.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/replace-icon.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/replace-icon.svg
new file mode 100644
index 0000000..d0e3a7a
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/replace-icon.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/restaurant-black.png b/odex30_base/cron_failure_notification/static/description/assets/icons/restaurant-black.png
new file mode 100644
index 0000000..4a35eb9
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/restaurant-black.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/screenshot-main.png b/odex30_base/cron_failure_notification/static/description/assets/icons/screenshot-main.png
new file mode 100644
index 0000000..575f8e6
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/screenshot-main.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/screenshot.png b/odex30_base/cron_failure_notification/static/description/assets/icons/screenshot.png
new file mode 100644
index 0000000..cef2725
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/screenshot.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/service-black.png b/odex30_base/cron_failure_notification/static/description/assets/icons/service-black.png
new file mode 100644
index 0000000..301ab51
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/service-black.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/skype-fill.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/skype-fill.svg
new file mode 100644
index 0000000..c174236
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/skype-fill.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/skype.png b/odex30_base/cron_failure_notification/static/description/assets/icons/skype.png
new file mode 100644
index 0000000..51b409f
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/skype.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/skype.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/skype.svg
new file mode 100644
index 0000000..df3dad3
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/skype.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/star-1.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/star-1.svg
new file mode 100644
index 0000000..7e55ab1
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/star-1.svg
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/star-2.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/star-2.svg
new file mode 100644
index 0000000..5ae9f50
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/star-2.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/support.png b/odex30_base/cron_failure_notification/static/description/assets/icons/support.png
new file mode 100644
index 0000000..4f18b8b
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/support.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/test-1 - Copy.png b/odex30_base/cron_failure_notification/static/description/assets/icons/test-1 - Copy.png
new file mode 100644
index 0000000..f6a9026
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/test-1 - Copy.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/test-1.png b/odex30_base/cron_failure_notification/static/description/assets/icons/test-1.png
new file mode 100644
index 0000000..0908add
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/test-1.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/test-2.png b/odex30_base/cron_failure_notification/static/description/assets/icons/test-2.png
new file mode 100644
index 0000000..4671fe9
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/test-2.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/trading-black.png b/odex30_base/cron_failure_notification/static/description/assets/icons/trading-black.png
new file mode 100644
index 0000000..9398ba2
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/trading-black.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/training.png b/odex30_base/cron_failure_notification/static/description/assets/icons/training.png
new file mode 100644
index 0000000..884ca02
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/training.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/translate.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/translate.svg
new file mode 100644
index 0000000..af9c8a1
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/translate.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/update.png b/odex30_base/cron_failure_notification/static/description/assets/icons/update.png
new file mode 100644
index 0000000..ecbc5a0
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/update.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/user.png b/odex30_base/cron_failure_notification/static/description/assets/icons/user.png
new file mode 100644
index 0000000..6ffb23d
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/user.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/video.png b/odex30_base/cron_failure_notification/static/description/assets/icons/video.png
new file mode 100644
index 0000000..576705b
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/video.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/whatsapp.png b/odex30_base/cron_failure_notification/static/description/assets/icons/whatsapp.png
new file mode 100644
index 0000000..d513a53
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/whatsapp.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/wrench-icon.svg b/odex30_base/cron_failure_notification/static/description/assets/icons/wrench-icon.svg
new file mode 100644
index 0000000..174b5a4
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/icons/wrench-icon.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/icons/wrench.png b/odex30_base/cron_failure_notification/static/description/assets/icons/wrench.png
new file mode 100644
index 0000000..6c04dea
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/icons/wrench.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/Cybrosys R.png b/odex30_base/cron_failure_notification/static/description/assets/misc/Cybrosys R.png
new file mode 100644
index 0000000..da40580
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/misc/Cybrosys R.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/categories.png b/odex30_base/cron_failure_notification/static/description/assets/misc/categories.png
new file mode 100644
index 0000000..bedf1e0
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/misc/categories.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/check-box.png b/odex30_base/cron_failure_notification/static/description/assets/misc/check-box.png
new file mode 100644
index 0000000..42caf24
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/misc/check-box.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/compass.png b/odex30_base/cron_failure_notification/static/description/assets/misc/compass.png
new file mode 100644
index 0000000..d5fed8f
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/misc/compass.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/corporate.png b/odex30_base/cron_failure_notification/static/description/assets/misc/corporate.png
new file mode 100644
index 0000000..2eb13ed
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/misc/corporate.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/customer-support.png b/odex30_base/cron_failure_notification/static/description/assets/misc/customer-support.png
new file mode 100644
index 0000000..79efc72
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/misc/customer-support.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/cybrosys-logo.png b/odex30_base/cron_failure_notification/static/description/assets/misc/cybrosys-logo.png
new file mode 100644
index 0000000..cc3cc0c
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/misc/cybrosys-logo.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/email.svg b/odex30_base/cron_failure_notification/static/description/assets/misc/email.svg
new file mode 100644
index 0000000..15291cd
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/misc/email.svg
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/features.png b/odex30_base/cron_failure_notification/static/description/assets/misc/features.png
new file mode 100644
index 0000000..b41769f
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/misc/features.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/logo.png b/odex30_base/cron_failure_notification/static/description/assets/misc/logo.png
new file mode 100644
index 0000000..478462d
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/misc/logo.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/phone.svg b/odex30_base/cron_failure_notification/static/description/assets/misc/phone.svg
new file mode 100644
index 0000000..b7bd7f2
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/misc/phone.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/pictures.png b/odex30_base/cron_failure_notification/static/description/assets/misc/pictures.png
new file mode 100644
index 0000000..56d255f
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/misc/pictures.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/pie-chart.png b/odex30_base/cron_failure_notification/static/description/assets/misc/pie-chart.png
new file mode 100644
index 0000000..426e052
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/misc/pie-chart.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/right-arrow.png b/odex30_base/cron_failure_notification/static/description/assets/misc/right-arrow.png
new file mode 100644
index 0000000..730984a
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/misc/right-arrow.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/star (1) 2.svg b/odex30_base/cron_failure_notification/static/description/assets/misc/star (1) 2.svg
new file mode 100644
index 0000000..5ae9f50
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/misc/star (1) 2.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/star.png b/odex30_base/cron_failure_notification/static/description/assets/misc/star.png
new file mode 100644
index 0000000..2eb9ab2
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/misc/star.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/support (1) 1.svg b/odex30_base/cron_failure_notification/static/description/assets/misc/support (1) 1.svg
new file mode 100644
index 0000000..7d37a8f
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/misc/support (1) 1.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/support-email.svg b/odex30_base/cron_failure_notification/static/description/assets/misc/support-email.svg
new file mode 100644
index 0000000..eb70370
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/misc/support-email.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/support.png b/odex30_base/cron_failure_notification/static/description/assets/misc/support.png
new file mode 100644
index 0000000..4f18b8b
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/misc/support.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/tick-mark.svg b/odex30_base/cron_failure_notification/static/description/assets/misc/tick-mark.svg
new file mode 100644
index 0000000..2dbb401
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/misc/tick-mark.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/whatsapp 1.svg b/odex30_base/cron_failure_notification/static/description/assets/misc/whatsapp 1.svg
new file mode 100644
index 0000000..0bfaf8f
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/misc/whatsapp 1.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/whatsapp.png b/odex30_base/cron_failure_notification/static/description/assets/misc/whatsapp.png
new file mode 100644
index 0000000..d513a53
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/misc/whatsapp.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/misc/whatsapp.svg b/odex30_base/cron_failure_notification/static/description/assets/misc/whatsapp.svg
new file mode 100644
index 0000000..b618aea
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/assets/misc/whatsapp.svg
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/static/description/assets/modules/k1.png b/odex30_base/cron_failure_notification/static/description/assets/modules/k1.png
new file mode 100644
index 0000000..3a68fe8
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/modules/k1.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/modules/k2.png b/odex30_base/cron_failure_notification/static/description/assets/modules/k2.png
new file mode 100644
index 0000000..251d81b
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/modules/k2.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/modules/k3.png b/odex30_base/cron_failure_notification/static/description/assets/modules/k3.png
new file mode 100644
index 0000000..13e4ffc
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/modules/k3.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/modules/k4.png b/odex30_base/cron_failure_notification/static/description/assets/modules/k4.png
new file mode 100644
index 0000000..ce5a551
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/modules/k4.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/modules/k5.png b/odex30_base/cron_failure_notification/static/description/assets/modules/k5.png
new file mode 100644
index 0000000..f2ed46e
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/modules/k5.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/modules/k6.png b/odex30_base/cron_failure_notification/static/description/assets/modules/k6.png
new file mode 100644
index 0000000..d03723c
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/modules/k6.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/screenshots/GIF.gif b/odex30_base/cron_failure_notification/static/description/assets/screenshots/GIF.gif
new file mode 100644
index 0000000..e4a7048
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/screenshots/GIF.gif differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/screenshots/ss1.png b/odex30_base/cron_failure_notification/static/description/assets/screenshots/ss1.png
new file mode 100644
index 0000000..182fd27
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/screenshots/ss1.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/screenshots/ss2.png b/odex30_base/cron_failure_notification/static/description/assets/screenshots/ss2.png
new file mode 100644
index 0000000..f1e4e95
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/screenshots/ss2.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/assets/screenshots/ss3.png b/odex30_base/cron_failure_notification/static/description/assets/screenshots/ss3.png
new file mode 100644
index 0000000..4093378
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/assets/screenshots/ss3.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/banner.png b/odex30_base/cron_failure_notification/static/description/banner.png
new file mode 100644
index 0000000..ba5df27
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/banner.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/icon.png b/odex30_base/cron_failure_notification/static/description/icon.png
new file mode 100644
index 0000000..7f2fb13
Binary files /dev/null and b/odex30_base/cron_failure_notification/static/description/icon.png differ
diff --git a/odex30_base/cron_failure_notification/static/description/index.html b/odex30_base/cron_failure_notification/static/description/index.html
new file mode 100644
index 0000000..f25b09b
--- /dev/null
+++ b/odex30_base/cron_failure_notification/static/description/index.html
@@ -0,0 +1,976 @@
+
+
+
+
+
+ Cron Failure Notification
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Community
+
+
+ Enterprise
+
+
+ Odoo.sh
+
+
+
+
+
+
+
+
+
+ Notify the Admin About Cron Failures Via Mail.
+
+
Cron Failure Notification
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Key
+ Highlights
+
+
+
+
+
+
+
+ Failure History
+
+
+ Creates a failure history log for cron jobs that have failed.
+
+
+
+
+
+
+
+
+ Email Notification
+
+
+ Sends email notifications to the admin regarding cron job failures.
+
+
+
+
+
+
+
+
+ PDF Report
+
+
+ Email will include a report detailing the cron job failures as an attachment.
+
+
+
+
+
+
+
+
+
Cron Failure Notification
+
+ Are you ready to make your business more
+ organized?
+ Improve now!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Scheduled
+
+ Email
+
+
+
+
+ A Cron action that sends the failed cron job history via email to the admin.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Failure
+
+ History
+
+
+
+
+ Access to the views of the stored failure history records.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Failure
+
+ Report
+
+
+
+
+ A PDF report displaying the details of various failed cron jobs throughout the day.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mail Notification
+
+
+
+ Mail Notification containing details on failures sent to Admin on daily
+ basis.
+
+
+
+
+
+
+
+
+
+
+
+ Failure History
+
+
+
+ Failures that happens in cron, will be recorded as a history.
+
+
+
+
+
+
+
+
+
+
+
+ Failure Report
+
+
+
+ Creates Pdf Failure report, which is attached with the mail.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The Cron Failure Notification module saves the failed scheduled
+ actions as history and sends out mail notification to the admin.
+
+
+
+
+
+
+
+
+ A scheduled action runs daily to retrieve the failed scheduled
+ actions history and sends an email if any failures are detected.
+
+
+
+
+
+
+
+
+ If you want to stay informed about failed scheduled actions
+ in your system, this module is for you.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Latest Release 18.0.1.0.0
+
+
+ 6th January, 2025
+
+
+
+
+
+
+
+
+
+
+
+
+ Related Products
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/cron_failure_notification/views/failure_history_views.xml b/odex30_base/cron_failure_notification/views/failure_history_views.xml
new file mode 100755
index 0000000..4119c53
--- /dev/null
+++ b/odex30_base/cron_failure_notification/views/failure_history_views.xml
@@ -0,0 +1,45 @@
+
+
+
+
+ Failure History
+ ir.actions.act_window
+ failure.history
+ list,form
+
+
+
+ failure.history.view.tree
+ failure.history
+
+
+
+
+
+
+
+
+ failure.history.view.form
+ failure.history
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/odex30_base/cron_failure_notification/views/ir_cron_views.xml b/odex30_base/cron_failure_notification/views/ir_cron_views.xml
new file mode 100755
index 0000000..b53d18c
--- /dev/null
+++ b/odex30_base/cron_failure_notification/views/ir_cron_views.xml
@@ -0,0 +1,14 @@
+
+
+
+
+ ir.cron.view.form.inherited.failure.notification
+ ir.cron
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/odex30_base/custom_background/COPYRIGHT b/odex30_base/custom_background/COPYRIGHT
new file mode 100644
index 0000000..d1ddb51
--- /dev/null
+++ b/odex30_base/custom_background/COPYRIGHT
@@ -0,0 +1,18 @@
+
+Most of the files are
+
+ Copyright (c) 2018 Bizzappdev India
+
+and published under the Bizzappdev License,
+as described in the LICENSE file.
+
+Some files may also contain contributions from third
+parties. In this case the original copyright of
+the contributions can be traced through the
+history of the source version control system.
+
+When that is not the case, the files contain a prominent
+notice stating the original copyright and applicable
+license, or come with their own dedicated COPYRIGHT
+and/or LICENSE file.
+
diff --git a/odex30_base/custom_background/LICENSE b/odex30_base/custom_background/LICENSE
new file mode 100644
index 0000000..89cbe4b
--- /dev/null
+++ b/odex30_base/custom_background/LICENSE
@@ -0,0 +1,72 @@
+
+For copyright information, please see the COPYRIGHT file.
+
+This Odoo App is published under the Bizzappdev License v1.0, as included
+below.
+
+********************************************************************************
+
+Bizzappdev License v1.0 Copyright (C) 2018 Bizzappdev India
+
+By purchasing this Odoo App from Bizzappdev India, you agree to the
+following:
+
+This license agreement (hereinafter Agreement) is an agreement
+between you (the person or company who is being licensed to use the Software or
+Documentation) and Bizzappdev India (hereinafter We/us/our). The
+Agreement applies to the Odoo App where this license is added.
+
+1. By purchasing the Software you acknowledge that you have read this Agreement,
+and that you agree to the content of the Agreement and its terms, and agree to
+use the Software in compliance with this Agreement.
+
+2. The Agreement comes into legal force at the moment when you order our
+Software from our site, download it from the Odoo App Store, or receive it
+through email or on data medium at the our discretion.
+
+3. We are the copyright holder of the Software. The Software or a portion of it
+is a copyrightable matter and is liable to protection by the law. Any activity
+that infringes terms of this Agreement violates copyright law and will be
+prosecuted according to the current law. We reserve the right to revoke the
+license of any user who is holding an invalid license.
+
+4. This Agreement gives you the right to use only one copy of the Software on
+one Odoo installation solely for your own personal or business use, subject to
+all other terms of this Agreement. A separate License should be purchased for
+each Odoo installation. Any distribution of the Software without our consent,
+including noncommercial distribution is regarded as violation of this Agreement
+and entails liability, according to the current law.
+
+5. You may not use any part of the code in whole or part in any other software
+or product or website.
+
+6. You may not give, sell, distribute, sub-license, rent, lease or lend any
+portion of the Software or Documentation to anyone. You may not place the
+Software on a server so that it is accessible via a public network such as the
+Internet for distribution purposes.
+
+7. You are bound to preserve the copyright information intact.
+
+8. We reserve the right to publish a selected list of users of our Software.
+
+9. We are not liable for prosecution arising from use of the Software against
+law or for any illegal use.
+
+10. If you fail to use the Software in accordance with the terms and conditions
+of this License Agreement, it constitutes a breach of the agreement, and your
+license to use the Software is revoked.
+
+11. Bizzappdev reserves the right to change this license agreement at any time
+and impose its clauses at any given time.
+
+12. It is allowed to change the
+software according to your needs. But only in respect of the terms of this
+license.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
diff --git a/odex30_base/custom_background/__init__.py b/odex30_base/custom_background/__init__.py
new file mode 100644
index 0000000..09949f0
--- /dev/null
+++ b/odex30_base/custom_background/__init__.py
@@ -0,0 +1,2 @@
+# See LICENSE file for full copyright and licensing details.
+from . import models
diff --git a/odex30_base/custom_background/__manifest__.py b/odex30_base/custom_background/__manifest__.py
new file mode 100644
index 0000000..8510bf2
--- /dev/null
+++ b/odex30_base/custom_background/__manifest__.py
@@ -0,0 +1,19 @@
+{
+ "name": "Custom Background",
+ "version": "18.0.1.0.0",
+ "author": "BizzAppDev",
+ "website": "http://www.bizzappdev.com",
+ "category": "Extra Tools",
+ "depends": ["base", "web"],
+ "summary": "Custom Background",
+ "images": ['images/image.png'],
+ "data": [
+ "security/ir.model.access.csv",
+ "views/ir_actions.xml",
+ "views/res_company_view.xml",
+ "views/report_template.xml",
+ ],
+ "installable": True,
+ "application": False,
+ "license": "Other proprietary",
+}
diff --git a/odex30_base/custom_background/i18n/nl.po b/odex30_base/custom_background/i18n/nl.po
new file mode 100644
index 0000000..728ace3
--- /dev/null
+++ b/odex30_base/custom_background/i18n/nl.po
@@ -0,0 +1,511 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * custom_background
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 14.0+e\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-07-16 12:50+0000\n"
+"PO-Revision-Date: 2021-07-18 11:44+0200\n"
+"Last-Translator: Erwin van der Ploeg \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: \n"
+"Language: nl\n"
+"X-Generator: Poedit 2.4.2\n"
+
+#. module: custom_background
+#: model_terms:ir.ui.view,arch_db:custom_background.view_ir_action_inherit_form
+msgid ""
+"Expression: \n"
+" If the option \"Expression\" is selected you "
+"can\n"
+" set custom background PDF's based on\n"
+" expressions.\n"
+" \n"
+" For example if you want only a background on\n"
+" every second page you could do:\n"
+" \n"
+" result=page%2==0\n"
+" \n"
+" If you want only a background on every uneven\n"
+" page (for example page 1,3 ,5) you could do:\n"
+" \n"
+" result=page%2!=0\n"
+" \n"
+" Or if you only want a background starting from\n"
+" page 2 on for example you could do:\n"
+" \n"
+" result=page>2"
+msgstr ""
+"Uitdrukking: \n"
+" Als de optie “Expressie” is geselecteerd, kunt "
+"u\n"
+" Een aangepaste achtergrond-PDF’s instellen op "
+"basis van\n"
+" expressies.\n"
+" \n"
+" Als u bijvoorbeeld alleen een achtergrond op\n"
+" elke tweede pagina wil, dan kunt u bijvoorbeeld "
+"dit doen:\n"
+" \n"
+" result=page%2==0\n"
+" \n"
+" Als u alleen een achtergrond wilt op elke "
+"oneven\n"
+" pagina (bijvoorbeeld pagina 1,3 ,5) kunt u "
+"doen:\n"
+" \n"
+" result=page%2!=0\n"
+" \n"
+" Of als u alleen een achtergrond wilt vanaf\n"
+" pagina 2, dan kunt u bijvoorbeeld dit doen:\n"
+" \n"
+" result=page>2"
+
+#. module: custom_background
+#: model_terms:ir.ui.view,arch_db:custom_background.view_ir_action_inherit_form
+msgid ""
+"First Page: \n"
+" If the option \"First Page\" is chosen it will "
+"not\n"
+" look at any other configurations for the first\n"
+" page of the PDF.\n"
+" \n"
+" If no \"Background PDF\" is set on the \"First\n"
+" Page\" rule then it will set the background "
+"PDF\n"
+" from the \"Fixed Page\", \"Expression Page\" "
+"or\n"
+" \"Remaining Pages\"."
+msgstr ""
+"Eerste pagina: \n"
+" Als de optie “Eerste pagina” is gekozen, dan "
+"wortd\n"
+" Niet naar andere instellingen gekeken dan "
+"deze\n"
+" Voor de eerste pagina van de pdf.\n"
+" \n"
+" Als er geen “Achtergrond PDF” is ingesteld op "
+"de “Eerste\n"
+" Pagina” regel dan zal het de achtergrond PDF "
+"instellen\n"
+" van de “Vaste pagina”, “Expressie pagina” of\n"
+" “Overige pagina’s”."
+
+#. module: custom_background
+#: model_terms:ir.ui.view,arch_db:custom_background.view_ir_action_inherit_form
+msgid ""
+"Fixed Pages: \n"
+" If the option \"Fixed Pages\" is selected you "
+"can\n"
+" enter for which page you'd like to use the\n"
+" \"Background PDF\".\n"
+" For example: setting a custom background PDF "
+"for\n"
+" the third page of a report by entering \"3\" "
+"in\n"
+" the field \"Page Number\".\n"
+" \n"
+" If the entered page number is first and last\n"
+" then it will set the background from \"First\n"
+" Page\" and \"Last Page\" if we configured the "
+"first\n"
+" page and the last page otherwise it will use "
+"the\n"
+" \"Fixed Page\" configuration."
+msgstr ""
+"Vaste pagina’s: \n"
+" Als de optie “Vaste pagina’s” is geselecteerd, "
+"kunt u\n"
+" Instellen voor welke pagina u de\n"
+" “Achtergrond-PDF” wilt gebruiken.\n"
+" Bijvoorbeeld: een aangepaste achtergrond-PDF "
+"instellen voor\n"
+" de derde pagina van een rapport door “3” in te "
+"voeren in\n"
+" het veld “Paginanummer”.\n"
+" \n"
+" Als het ingevoerde paginanummer de eerste en "
+"de laatste is\n"
+" dan zal het de achtergrond instellen van "
+"“Eerste\n"
+" Pagina” en “Laatste pagina” als we de eerste "
+"hebben geconfigureerd,\n"
+" anders gebruikt het de\n"
+" Configuratie “Vaste pagina”."
+
+#. module: custom_background
+#: model_terms:ir.ui.view,arch_db:custom_background.view_ir_action_inherit_form
+msgid ""
+"Last Page: \n"
+" If the option \"Last Page\" is selected, it "
+"will\n"
+" not check for any other configurations for the\n"
+" last page.\n"
+" It will only set the last page background PDF\n"
+" that you've applied.\n"
+" \n"
+" If there was no \"Background PDF\" set on the "
+"last\n"
+" page then it will set the background PDF from\n"
+" the \"Fixed Page\", \"Expression Page\" or\n"
+" \"Remaining Pages\".\n"
+" "
+msgstr ""
+"Laatste pagina: \n"
+" Als de optie “Laatste pagina” is geselecteerd, "
+"wordt\n"
+" niet gecontroleerd op andere instellingen voor "
+"de\n"
+" laatste pagina.\n"
+" Het zal alleen de laatste pagina-achtergrond "
+"PDF instellen\n"
+" die u heeft ingesteld.\n"
+" \n"
+" Als er geen “Achtergrond PDF” was ingesteld op "
+"de laatste\n"
+" pagina, dan zal het de achtergrond-PDF "
+"instellen van\n"
+" de “Vaste pagina”, “Expressie pagina” of\n"
+" “Overige pagina’s”.\n"
+" "
+
+#. module: custom_background
+#: model_terms:ir.ui.view,arch_db:custom_background.view_ir_action_inherit_form
+msgid ""
+"Remaining Pages: \n"
+" If the option \"Remaining Pages\" is selected "
+"the\n"
+" module will apply the \"Background PDF\" set "
+"on\n"
+" this rule for any pages that have no rule.\n"
+" You could use this for example if you have a\n"
+" rule \"First Page\" set and then have a second\n"
+" rule \"Remaining Pages\" it would apply this\n"
+" background on page 2, 3, .. and any other page\n"
+" you have not configured."
+msgstr ""
+"Overige pagina’s: \n"
+" Als de optie “Overige pagina’s” is "
+"geselecteerd, wordt de\n"
+" “Achtergrond PDF” toegepast op\n"
+" deze regel voor alle pagina’s die geen regel "
+"hebben.\n"
+" U kunt dit bijvoorbeeld gebruiken als u een\n"
+" regel “Eerste pagina” instelt en dan een "
+"tweede\n"
+" regel “Overige pagina’s”. Het zou dan de\n"
+" achtergrond op instellen op pagina 2, 3, .. en "
+"elke andere pagina\n"
+" Die u niet heeft geconfigureerd."
+
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_ir_actions_report__background_ids
+#: model_terms:ir.ui.view,arch_db:custom_background.view_ir_action_inherit_form
+msgid "Background Configuration"
+msgstr "Achtergrondconfiguratie"
+
+#. module: custom_background
+#: model_terms:ir.ui.view,arch_db:custom_background.view_ir_action_inherit_form
+msgid "Background Configuration Per Language"
+msgstr "Achtergrondconfiguratie per taal"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_ir_actions_report__custom_report_background_image
+msgid "Background Image"
+msgstr "Achtergrondafbeelding"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_report_background_lang__background_pdf
+#: model:ir.model.fields,field_description:custom_background.field_report_background_line__background_pdf
+#: model_terms:ir.ui.view,arch_db:custom_background.res_company_view_inherit
+#: model_terms:ir.ui.view,arch_db:custom_background.view_ir_action_inherit_form
+msgid "Background PDF"
+msgstr "Achtergrond PDF"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_ir_actions_report__bg_per_lang_ids
+#: model:ir.model.fields,field_description:custom_background.field_res_company__bg_per_lang_ids
+msgid "Background Per Language"
+msgstr "Achtergrond per taal"
+
+#. module: custom_background
+#: model:ir.model,name:custom_background.model_res_company
+msgid "Companies"
+msgstr "Bedrijven"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_report_background_lang__company_id
+msgid "Company"
+msgstr "Bedrijf"
+
+#. module: custom_background
+#: model_terms:ir.ui.view,arch_db:custom_background.res_company_view_inherit
+msgid "Configuration"
+msgstr "Instellingen"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_report_background_lang__create_uid
+#: model:ir.model.fields,field_description:custom_background.field_report_background_line__create_uid
+msgid "Created by"
+msgstr "Aangemaakt door"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_report_background_lang__create_date
+#: model:ir.model.fields,field_description:custom_background.field_report_background_line__create_date
+msgid "Created on"
+msgstr "Aangemaakt op"
+
+#. module: custom_background
+#: model_terms:ir.ui.view,arch_db:custom_background.res_company_view_inherit
+msgid "Custom Background Image"
+msgstr "Achtergrondafbeelding"
+
+#. module: custom_background
+#: model_terms:ir.ui.view,arch_db:custom_background.res_company_view_inherit
+msgid "Custom Background Image Per Language"
+msgstr "Aangepaste achtergrondafbeelding per taal"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_ir_actions_report__custom_report_background
+#: model:ir.model.fields,field_description:custom_background.field_res_company__custom_report_background_image
+msgid "Custom Report Background"
+msgstr "Achtergrondafbeelding layouts"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_ir_actions_report__custom_report_type
+msgid "Custom Report Type"
+msgstr "Afwijkende achtergrond"
+
+#. module: custom_background
+#: model_terms:ir.ui.view,arch_db:custom_background.view_ir_action_inherit_form
+msgid "Detailed algorithm (with their priorities):"
+msgstr "Gedetailleerd algoritme (met hun prioriteiten):"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_ir_actions_report__display_name
+#: model:ir.model.fields,field_description:custom_background.field_report_background_lang__display_name
+#: model:ir.model.fields,field_description:custom_background.field_report_background_line__display_name
+#: model:ir.model.fields,field_description:custom_background.field_res_company__display_name
+msgid "Display Name"
+msgstr "Schermnaam"
+
+#. module: custom_background
+#: model:ir.model.fields.selection,name:custom_background.selection__report_background_line__type__expression
+msgid "Expression"
+msgstr "Uitdrukking"
+
+#. module: custom_background
+#: model_terms:ir.ui.view,arch_db:custom_background.view_ir_action_inherit_form
+msgid "Extra Note"
+msgstr "Extra opmerking"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_report_background_line__fall_back_to_company
+msgid "Fall Back To Company"
+msgstr "Terugvallen op het bedrijf"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_report_background_lang__file_name
+#: model:ir.model.fields,field_description:custom_background.field_report_background_line__file_name
+msgid "File Name"
+msgstr "Bestandsnaam"
+
+#. module: custom_background
+#: model:ir.model.fields.selection,name:custom_background.selection__report_background_line__type__first_page
+msgid "First Page"
+msgstr "Eerste pagina"
+
+#. module: custom_background
+#: model:ir.model.fields.selection,name:custom_background.selection__report_background_line__type__fixed
+msgid "Fixed Page"
+msgstr "Vaste pagina"
+
+#. module: custom_background
+#: model:ir.model.fields.selection,name:custom_background.selection__ir_actions_report__custom_report_type__company
+msgid "From Company"
+msgstr "Van bedrijf"
+
+#. module: custom_background
+#: model:ir.model.fields.selection,name:custom_background.selection__ir_actions_report__custom_report_type__dynamic
+msgid "From Report Dynamic"
+msgstr "Van Rapport Dynamisch"
+
+#. module: custom_background
+#: model:ir.model.fields.selection,name:custom_background.selection__ir_actions_report__custom_report_type__report
+msgid "From Report Fixed"
+msgstr "Van rapport opgelost"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_ir_actions_report__id
+#: model:ir.model.fields,field_description:custom_background.field_report_background_lang__id
+#: model:ir.model.fields,field_description:custom_background.field_report_background_line__id
+#: model:ir.model.fields,field_description:custom_background.field_res_company__id
+msgid "ID"
+msgstr "ID"
+
+#. module: custom_background
+#: model_terms:ir.ui.view,arch_db:custom_background.view_ir_action_inherit_form
+msgid ""
+"If there are no \"Background Configuration\" rules\n"
+" added for any line it will work as a normal Odoo\n"
+" report and will not apply any background to the\n"
+" report."
+msgstr ""
+"Als er geen regels voor de “Achtergrondconfiguratie” zijn\n"
+" toegevoegd voor een regel, dan zal deze werken als "
+"een normaal Odoo\n"
+" rapport en wordt er geen achtergrond toegevoegd op "
+"de\n"
+" Rappoortage."
+
+#. module: custom_background
+#: model_terms:ir.ui.view,arch_db:custom_background.view_ir_action_inherit_form
+msgid "Interaction with the background configuration"
+msgstr "Interactie met de achtergrondconfiguratie"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_ir_actions_report__is_bg_per_lang
+#: model:ir.model.fields,field_description:custom_background.field_res_company__is_bg_per_lang
+msgid "Is Background Per Language"
+msgstr "Instellen achtergrond per taal"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_report_background_lang__lang_id
+#: model:ir.model.fields,field_description:custom_background.field_report_background_line__lang_id
+msgid "Language"
+msgstr "Taal"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_ir_actions_report____last_update
+#: model:ir.model.fields,field_description:custom_background.field_report_background_lang____last_update
+#: model:ir.model.fields,field_description:custom_background.field_report_background_line____last_update
+#: model:ir.model.fields,field_description:custom_background.field_res_company____last_update
+msgid "Last Modified on"
+msgstr "Laatst gewijzigd op"
+
+#. module: custom_background
+#: model:ir.model.fields.selection,name:custom_background.selection__report_background_line__type__last_page
+msgid "Last Page"
+msgstr "Laatste pagina"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_report_background_lang__write_uid
+#: model:ir.model.fields,field_description:custom_background.field_report_background_line__write_uid
+msgid "Last Updated by"
+msgstr "Laatst bijgewerkt door"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_report_background_lang__write_date
+#: model:ir.model.fields,field_description:custom_background.field_report_background_line__write_date
+msgid "Last Updated on"
+msgstr "Laatst bijgewerkt op"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_report_background_line__page_expression
+msgid "Page Expression"
+msgstr "Pagina expressie"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_report_background_line__page_number
+msgid "Page Number"
+msgstr "Paginanummer"
+
+#. module: custom_background
+#: code:addons/custom_background/models/res_company.py:0
+#, python-format
+msgid ""
+"Please configure Custom Background Per Language beacuse 'Fall Back To Company' is set "
+"in the dynamic type report level!"
+msgstr ""
+"Configureer a.u.b. aangepaste achtergrond per taal omdat 'Fall Back To Bedrijf' is "
+"ingesteld op het rapportniveau dynamisch type!"
+
+#. module: custom_background
+#: code:addons/custom_background/models/res_company.py:0
+#, python-format
+msgid ""
+"Please configure Custom Background Per Language beacuse 'From Company' type is set at "
+"the Report level!"
+msgstr ""
+"Configureer aangepaste achtergrond per taal vanwege het type 'Van bedrijf' is ingesteld "
+"op rapportniveau!"
+
+#. module: custom_background
+#: code:addons/custom_background/models/report.py:0
+#, python-format
+msgid "Please configure Custom Background Per Language for Dynamic type!"
+msgstr "Configureer aangepaste achtergrond per taal voor dynamisch type!"
+
+#. module: custom_background
+#: code:addons/custom_background/models/report.py:0
+#, python-format
+msgid "Please configure Custom Background Per Language for Report type!"
+msgstr "Configureer aangepaste achtergrond per taal voor rapporttype!"
+
+#. module: custom_background
+#: code:addons/custom_background/models/report.py:0
+#, python-format
+msgid "Please configure Custom Background Per Language in every company!"
+msgstr "Configureer aangepaste achtergrond per taal in elk bedrijf!"
+
+#. module: custom_background
+#: model:ir.model.fields.selection,name:custom_background.selection__report_background_line__type__remaining
+msgid "Remaining pages"
+msgstr "Overige pagina's"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_report_background_lang__report_id
+#: model:ir.model.fields,field_description:custom_background.field_report_background_line__report_id
+msgid "Report"
+msgstr "Rapport"
+
+#. module: custom_background
+#: model:ir.model,name:custom_background.model_ir_actions_report
+msgid "Report Action"
+msgstr "Rapport actie"
+
+#. module: custom_background
+#: model:ir.model,name:custom_background.model_report_background_line
+msgid "Report Background Line"
+msgstr "Achtergrondregel rapporteren"
+
+#. module: custom_background
+#: model:ir.model,name:custom_background.model_report_background_lang
+msgid "Report Background Line Per Language"
+msgstr "Achtergrondregel per taal rapporteren"
+
+#. module: custom_background
+#: model:ir.model.fields,field_description:custom_background.field_report_background_line__type
+msgid "Type"
+msgstr "Type"
+
+#. module: custom_background
+#: code:addons/custom_background/models/report.py:0
+#, python-format
+msgid ""
+"Wkhtmltopdf failed (error code: %s). Memory limit too low or maximum file number of "
+"subprocess reached. Message : %s"
+msgstr ""
+"Wkhtmltopdf fout (fout code: %s). Geheugenlimiet te laag of maximale bestandsnummer van "
+"subproces bereikt. Bericht:%s"
+
+#. module: custom_background
+#: code:addons/custom_background/models/report.py:0
+#, python-format
+msgid "Wkhtmltopdf failed (error code: %s). Message: %s"
+msgstr "Wkhtmltopdf fout (error code: %s). Bericht: %s"
+
+#. module: custom_background
+#: model_terms:ir.ui.view,arch_db:custom_background.view_ir_action_inherit_form
+msgid ""
+"You can set the backgroud watermark in a report based on\n"
+" the options set in the \"Background Configuration\" tab."
+msgstr ""
+"U kunt het achtergrondwatermerk in een rapport instellen op basis\n"
+"van de opties die zijn ingesteld op het tabblad “Achtergrondconfiguratie”."
diff --git a/odex30_base/custom_background/images/image.png b/odex30_base/custom_background/images/image.png
new file mode 100644
index 0000000..18b79a7
Binary files /dev/null and b/odex30_base/custom_background/images/image.png differ
diff --git a/odex30_base/custom_background/models/__init__.py b/odex30_base/custom_background/models/__init__.py
new file mode 100644
index 0000000..d307bab
--- /dev/null
+++ b/odex30_base/custom_background/models/__init__.py
@@ -0,0 +1,4 @@
+# See LICENSE file for full copyright and licensing details.
+from . import report
+from . import res_company
+from . import report_background_lang
diff --git a/odex30_base/custom_background/models/report.py b/odex30_base/custom_background/models/report.py
new file mode 100644
index 0000000..d0bf3cc
--- /dev/null
+++ b/odex30_base/custom_background/models/report.py
@@ -0,0 +1,649 @@
+# See LICENSE file for full copyright and licensing details.
+import base64
+import logging
+import os
+import subprocess
+import tempfile
+from contextlib import closing
+
+from odoo.tools.pdf import PdfFileReader, PdfFileWriter
+from reportlab.graphics.barcode import createBarcodeDrawing
+
+from odoo import api, fields, models
+from odoo.exceptions import UserError
+from odoo.tools.misc import find_in_path
+from odoo.tools.safe_eval import safe_eval
+from odoo.tools.translate import _
+
+try:
+ createBarcodeDrawing(
+ "Code128",
+ value="foo",
+ format="png",
+ width=100,
+ height=100,
+ humanReadable=1,
+ ).asString("png")
+except Exception:
+ pass
+
+
+# --------------------------------------------------------------------------
+# Helpers
+# --------------------------------------------------------------------------
+_logger = logging.getLogger(__name__)
+
+
+def _get_wkhtmltopdf_bin():
+ return find_in_path("wkhtmltopdf")
+
+
+class ReportBackgroundLine(models.Model):
+ _name = "report.background.line"
+ _description = "Report Background Line"
+
+ page_number = fields.Integer()
+ type = fields.Selection(
+ [
+ ("fixed", "Fixed Page"),
+ ("expression", "Expression"),
+ ("first_page", "First Page"),
+ ("last_page", "Last Page"),
+ ("remaining", "Remaining pages"),
+ ]
+ )
+ background_pdf = fields.Binary(string="Background PDF")
+ # New field. #22260
+ file_name = fields.Char(string="File Name")
+ report_id = fields.Many2one("ir.actions.report", string="Report")
+ page_expression = fields.Char()
+ fall_back_to_company = fields.Boolean()
+ # New fields. #22260
+ lang_id = fields.Many2one(
+ "res.lang",
+ string="Language",
+ )
+ # Added new field #T5211
+ company_id = fields.Many2one(comodel_name="res.company", string="Company")
+
+
+class IrActionsReport(models.Model):
+ _inherit = "ir.actions.report"
+
+ custom_report_background = fields.Boolean(string="Custom Report Background")
+ custom_report_background_image = fields.Binary(string="Background Image")
+ custom_report_type = fields.Selection(
+ [
+ ("company", "From Company"),
+ ("report", "From Report Fixed"),
+ ("dynamic", "From Report Dynamic"),
+ ]
+ )
+
+ background_ids = fields.One2many(
+ "report.background.line", "report_id", "Background Configuration"
+ )
+ # New fields. #22260
+ bg_per_lang_ids = fields.One2many(
+ "report.background.lang",
+ "report_id",
+ string="Background Per Language",
+ )
+ is_bg_per_lang = fields.Boolean(
+ string="Is Background Per Language",
+ )
+
+ def get_company_without_custom_bg(self):
+ """New method for search and get company in which custom bg per language is not
+ set. #22260"""
+ res_company_env = self.env["res.company"].search([])
+ # Filtered company in which is_bg_per_lang is not set and
+ # attachment is not set.
+ company = res_company_env.filtered(
+ lambda c: not c.is_bg_per_lang or not c.bg_per_lang_ids
+ )
+ return company
+
+ @api.constrains(
+ "is_bg_per_lang", "bg_per_lang_ids", "custom_report_type", "background_ids"
+ )
+ def _check_report_custom_bg_config(self):
+ """New constrains method for check custom bg per company is set or not when for
+ 'report' & 'dynamic' type. #22260"""
+ # If is_bg_per_lang is false then return.
+ if not self.is_bg_per_lang:
+ return
+ # If type is 'report' and custom bg per lang is not set then raise warning.
+ if self.custom_report_type == "report" and not self.bg_per_lang_ids:
+ raise UserError(
+ _("Please configure Custom Background Per Language for Report type!")
+ )
+ # If type is 'dynamic' and custom bg per lang is not set then raise warning.
+ elif self.custom_report_type == "dynamic" and not self.background_ids:
+ raise UserError(
+ _("Please configure Custom Background Per Language for Dynamic type!")
+ )
+ # Check type is dynamic and background_ids is set or not.
+ elif self.custom_report_type == "dynamic" and self.background_ids:
+ # Filter fall_back_to_company true records.
+ fbc = self.background_ids.filtered(lambda bg: bg.fall_back_to_company)
+ # If fbc and custom bg not set at company level then raise warning.
+ if fbc:
+ company = self.get_company_without_custom_bg()
+ # If any attachment not set in the any company then raise warning.
+ if company:
+ raise UserError(
+ _(
+ "Please configure Custom Background Per Language in every "
+ "company!"
+ )
+ )
+ # If type is 'company' or type is not set then search
+ # configuration in all company.
+ elif self.custom_report_type == "company" or not self.custom_report_type:
+ company = self.get_company_without_custom_bg()
+ # If any attachment not set in the any company then raise warning.
+ if company:
+ raise UserError(
+ _(
+ "Please configure Custom Background Per Language in every "
+ "company!"
+ )
+ )
+
+ def _render_qweb_pdf(self, res_ids=None, data=None):
+ Model = self.env[self.model]
+ record_ids = Model.browse(res_ids)
+ company_id = False
+ if record_ids[:1]._name == "res.company":
+ company_id = record_ids[:1]
+ # Fix test cases error. #22107
+ elif hasattr(record_ids[:1], "company_id"):
+ # If in record company is not set then consider current log in
+ # user's company. #22476
+ company_id = record_ids[:1].company_id or self.env.user.company_id
+ else:
+ company_id = self.env.company
+
+ # Add custom_bg_res_ids in context. #22260
+ return super(
+ IrActionsReport,
+ self.with_context(custom_bg_res_ids=res_ids, background_company=company_id),
+ )._render_qweb_pdf(res_ids=res_ids, data=data)
+
+ def add_pdf_watermarks(self, custom_background_data, page):
+ """create a temp file and set datas and added in report page. #T4209"""
+ temp_back_id, temp_back_path = tempfile.mkstemp(
+ suffix=".pdf", prefix="back_report.tmp."
+ )
+ back_data = base64.b64decode(custom_background_data)
+ with closing(os.fdopen(temp_back_id, "wb")) as back_file:
+ back_file.write(back_data)
+ pdf_reader_watermark = PdfFileReader(temp_back_path, "rb")
+ watermark_page = pdf_reader_watermark.getPage(0)
+ watermark_page.mergePage(page)
+ return watermark_page
+
+ def get_lang(self):
+ """New method for return language, if partner_id is available in model and
+ partner is set in that model, else set current logged in user's language.
+ #22260"""
+ res_record_ids = self._context.get("custom_bg_res_ids")
+ model = self.env[self.model]
+ record_ids = model.browse(res_record_ids)
+ lang_code = False
+ # If partner_id field in the model and partner is set in the model the consider
+ # partner's language.
+ # NOTE: Used "record_ids[-1]" to avoid loop, if use loop then always set last
+ # record partner's language.
+ if "partner_id" in model._fields and record_ids[-1].partner_id:
+ partner_lang = record_ids[-1].partner_id.lang
+ lang_code = partner_lang if partner_lang else "en_US"
+ else:
+ # If partner_id field is not in model or partner_id is not set then consider
+ # current user's language.
+ lang_code = self._context.get("lang")
+ return lang_code
+
+ def get_bg_per_lang(self):
+ """New method for get custom background based on the partner languages for
+ report type and company type. #22260"""
+ company_background = self._context.get("background_company")
+ lang_code = self.get_lang()
+ # If custom_report_type is dynamic then set language related domains.
+ if self.custom_report_type == "dynamic":
+ # If is_bg_per_lang true then set lang_code related domain.
+ if self.is_bg_per_lang:
+ lang_domain = [
+ ("lang_id.code", "=", lang_code),
+ ]
+ else:
+ # If is_bg_per_lang false then set lang_id related domain.
+ lang_domain = [
+ ("lang_id", "=", False),
+ ]
+ return lang_domain
+
+ # If custom_report_type is report then set report(self) id.
+ if self.custom_report_type == "report":
+ custom_bg_from = self
+ # If custom_report_type is company then set current company id from context.
+ if self.custom_report_type == "company" or not self.custom_report_type:
+ custom_bg_from = company_background
+
+ # Filter records from report_background_lang model based on the languages.
+ # custom_bg_from: company_id or report_id(self).
+ custom_bg_lang = custom_bg_from.bg_per_lang_ids.filtered(
+ lambda l: l.lang_id.code == lang_code
+ )
+
+ # Set 1st custom background.
+ custom_background = custom_bg_lang[:1].background_pdf
+ return custom_background
+
+ @api.model
+ def _run_wkhtmltopdf(
+ self,
+ bodies,
+ header=None,
+ footer=None,
+ landscape=False,
+ specific_paperformat_args=None,
+ set_viewport_size=False,
+ ):
+ """Execute wkhtmltopdf as a subprocess in order to convert html given
+ in input into a pdf document.
+
+ :param bodies: The html bodies of the report, one per page.
+ :param header: The html header of the report containing all headers.
+ :param footer: The html footer of the report containing all footers.
+ :param landscape: Force the pdf to be rendered under a landscape
+ format.
+ :param specific_paperformat_args: dict of prioritized paperformat
+ arguments.
+ :param set_viewport_size: Enable a viewport sized '1024x1280' or
+ '1280x1024' depending of landscape arg.
+ :return: Content of the pdf as a string
+ """
+
+ # call default odoo standard function of paperformat #19896
+ # https://github.com/odoo/odoo/blob/13.0/odoo/addons/base/models
+ # /ir_actions_report.py#L243
+ paperformat_id = self.get_paperformat()
+
+ # Build the base command args for wkhtmltopdf bin
+ command_args = self._build_wkhtmltopdf_args(
+ paperformat_id,
+ landscape,
+ specific_paperformat_args=specific_paperformat_args,
+ set_viewport_size=set_viewport_size,
+ )
+
+ files_command_args = []
+ temporary_files = []
+ if header:
+ head_file_fd, head_file_path = tempfile.mkstemp(
+ suffix=".html", prefix="report.header.tmp."
+ )
+ with closing(os.fdopen(head_file_fd, "wb")) as head_file:
+ head_file.write(header)
+ temporary_files.append(head_file_path)
+ files_command_args.extend(["--header-html", head_file_path])
+ if footer:
+ foot_file_fd, foot_file_path = tempfile.mkstemp(
+ suffix=".html", prefix="report.footer.tmp."
+ )
+ with closing(os.fdopen(foot_file_fd, "wb")) as foot_file:
+ foot_file.write(footer)
+ temporary_files.append(foot_file_path)
+ files_command_args.extend(["--footer-html", foot_file_path])
+
+ paths = []
+ for i, body in enumerate(bodies):
+ prefix = "%s%d." % ("report.body.tmp.", i)
+ body_file_fd, body_file_path = tempfile.mkstemp(
+ suffix=".html", prefix=prefix
+ )
+ with closing(os.fdopen(body_file_fd, "wb")) as body_file:
+ body_file.write(body)
+ paths.append(body_file_path)
+ temporary_files.append(body_file_path)
+
+ pdf_report_fd, pdf_report_path = tempfile.mkstemp(
+ suffix=".pdf", prefix="report.tmp."
+ )
+ os.close(pdf_report_fd)
+ temporary_files.append(pdf_report_path)
+ try:
+ wkhtmltopdf = (
+ [_get_wkhtmltopdf_bin()]
+ + command_args
+ + files_command_args
+ + paths
+ + [pdf_report_path]
+ )
+ process = subprocess.Popen(
+ wkhtmltopdf, stdout=subprocess.PIPE, stderr=subprocess.PIPE
+ )
+ out, err = process.communicate()
+
+ if process.returncode not in [0, 1]:
+ if process.returncode == -11:
+ message = _(
+ "Wkhtmltopdf failed (error code: %s). Memory limit too low or "
+ "maximum file number of subprocess reached. Message : %s"
+ )
+ else:
+ message = _("Wkhtmltopdf failed (error code: %s). Message: %s")
+ _logger.warning(message, process.returncode, err[-1000:])
+ raise UserError(message % (str(process.returncode), err[-1000:]))
+ else:
+ if err:
+ _logger.warning("wkhtmltopdf: %s" % err)
+ # Dynamic Type.
+ if (
+ self
+ and self.custom_report_background
+ and self.custom_report_type == "dynamic"
+ ):
+ temp_report_id, temp_report_path = tempfile.mkstemp(
+ suffix=".pdf", prefix="with_back_report.tmp."
+ )
+ output = PdfFileWriter()
+ pdf_reader_content = PdfFileReader(pdf_report_path, "rb")
+
+ # Call method for get domain related to the languages. #22260
+ lang_domain = self.get_bg_per_lang()
+
+ # Added lang_domain in all search methods. #22260
+ first_page = self.background_ids.search(
+ lang_domain
+ + [
+ ("type", "=", "first_page"),
+ ("report_id", "=", self.id),
+ ],
+ limit=1,
+ )
+ last_page = self.background_ids.search(
+ lang_domain
+ + [
+ ("type", "=", "last_page"),
+ ("report_id", "=", self.id),
+ ],
+ limit=1,
+ )
+ fixed_pages = self.background_ids.search(
+ lang_domain
+ + [
+ ("type", "=", "fixed"),
+ ("report_id", "=", self.id),
+ ]
+ )
+ remaining_pages = self.background_ids.search(
+ lang_domain
+ + [
+ ("type", "=", "remaining"),
+ ("report_id", "=", self.id),
+ ],
+ limit=1,
+ )
+ expression = self.background_ids.search(
+ lang_domain
+ + [
+ ("type", "=", "expression"),
+ ("report_id", "=", self.id),
+ ],
+ limit=1,
+ )
+
+ company_background = self._context.get("background_company")
+ company_background_img = (
+ company_background.custom_report_background_image
+ )
+ company_background_dynamic = company_background.background_ids
+ # Start. #22260
+ if self.is_bg_per_lang:
+ lang_code = self.get_lang()
+ custom_bg_lang = company_background.bg_per_lang_ids.filtered(
+ lambda l: l.lang_id.code == lang_code
+ )
+ # End. #22260
+ for i in range(pdf_reader_content.getNumPages()):
+ watermark = ""
+ if first_page and i == 0:
+ if first_page.fall_back_to_company and company_background:
+ # Start. #22260
+ # If is_bg_per_lang then get custom bg from the company.
+ if self.is_bg_per_lang:
+ watermark = custom_bg_lang[:1].background_pdf
+ else:
+ company_watermark = company_background_dynamic.filtered(
+ lambda a: a.type == "first_page"
+ )
+ if company_watermark:
+ watermark = company_watermark.background_pdf
+ else:
+ watermark = company_background_img
+ # End. #22260
+ # Fix page 1st issue. #22260
+ elif first_page.background_pdf:
+ watermark = first_page.background_pdf
+ elif last_page and i == pdf_reader_content.getNumPages() - 1:
+ if last_page.fall_back_to_company and company_background:
+ # Start. #22260
+ # If is_bg_per_lang then get custom bg from the company.
+ if self.is_bg_per_lang:
+ watermark = custom_bg_lang[:1].background_pdf
+ else:
+ company_watermark = company_background_dynamic.filtered(
+ lambda a: a.type == "last_page"
+ )
+ if company_watermark:
+ watermark = company_watermark.background_pdf
+ else:
+ watermark = company_background_img
+ # End. #22260
+ elif last_page.background_pdf:
+ watermark = last_page.background_pdf
+ elif i + 1 in fixed_pages.mapped("page_number"):
+ fixed_page = fixed_pages.search(
+ [
+ ("page_number", "=", i + 1),
+ ("report_id", "=", self.id),
+ ],
+ limit=1,
+ )
+ if (
+ fixed_page
+ and fixed_page.fall_back_to_company
+ and company_background
+ ):
+ # Start. #22260
+ # If is_bg_per_lang then get custom bg from the company.
+ if self.is_bg_per_lang:
+ watermark = custom_bg_lang[:1].background_pdf
+ else:
+ company_watermark = company_background_dynamic.filtered(
+ lambda a: a.type == "fixed"
+ and a.page_number == i + 1
+ )
+ if company_watermark:
+ watermark = company_watermark.background_pdf
+ else:
+ watermark = company_background_img
+ # End. #22260
+ elif fixed_page and fixed_page.background_pdf:
+ watermark = fixed_page.background_pdf
+ elif expression and expression.page_expression:
+ eval_dict = {"page": i + 1}
+ safe_eval(
+ expression.page_expression,
+ eval_dict,
+ mode="exec",
+ nocopy=True,
+ )
+ if (
+ expression.fall_back_to_company
+ and company_background
+ and eval_dict.get("result", False)
+ ):
+ # Start. #22260
+ # If is_bg_per_lang then get custom bg from the company.
+ if self.is_bg_per_lang:
+ watermark = custom_bg_lang[:1].background_pdf
+ else:
+ company_watermark = company_background_dynamic.filtered(
+ lambda a: a.type == "expression"
+ and a.page_expression
+ )
+ if company_watermark:
+ company_eval_dict = {"page": i + 1}
+ safe_eval(
+ company_watermark.page_expression,
+ company_eval_dict,
+ mode="exec",
+ nocopy=True,
+ )
+ if company_eval_dict.get("result", False):
+ watermark = company_watermark.background_pdf
+ else:
+ watermark = company_background_img
+ else:
+ watermark = company_background_img
+ # End. #22260
+ elif (
+ eval_dict.get("result", False) and expression.background_pdf
+ ):
+ watermark = expression.background_pdf
+ else:
+ if remaining_pages:
+ if (
+ remaining_pages.fall_back_to_company
+ and company_background
+ ):
+ # Start. #22260
+ # If is_bg_per_lang then get custom bg from
+ # the company.
+ if self.is_bg_per_lang:
+ watermark = custom_bg_lang[:1].background_pdf
+ else:
+ company_watermark = (
+ company_background_dynamic.filtered(
+ lambda a: a.type == "remaining"
+ )
+ )
+ if company_watermark:
+ watermark = company_watermark.background_pdf
+ else:
+ watermark = company_background_img
+ # End. #22260
+ elif remaining_pages.background_pdf:
+ watermark = remaining_pages.background_pdf
+ else:
+ if remaining_pages:
+ if (
+ remaining_pages.fall_back_to_company
+ and company_background
+ ):
+ # Start. #22260
+ # If is_bg_per_lang then get custom bg from the company.
+ if self.is_bg_per_lang:
+ watermark = custom_bg_lang[:1].background_pdf
+ else:
+ company_watermark = (
+ company_background_dynamic.filtered(
+ lambda a: a.type == "remaining"
+ )
+ )
+ if company_watermark:
+ watermark = company_watermark.background_pdf
+ else:
+ watermark = company_background_img
+ # End. #22260
+ elif remaining_pages.background_pdf:
+ watermark = remaining_pages.background_pdf
+ if watermark:
+ page = self.add_pdf_watermarks(
+ watermark,
+ pdf_reader_content.getPage(i),
+ )
+ else:
+ page = pdf_reader_content.getPage(i)
+ output.addPage(page)
+ output.write(open(temp_report_path, "wb"))
+ pdf_report_path = temp_report_path
+ os.close(temp_report_id)
+ elif self.custom_report_background:
+ temp_back_id, temp_back_path = tempfile.mkstemp(
+ suffix=".pdf", prefix="back_report.tmp."
+ )
+ custom_background = False
+ # From Report Type.
+ if (
+ self
+ and self.custom_report_background
+ and self.custom_report_type == "report"
+ ):
+ # 222760 Starts.If background per lang is True then call method for
+ # get custom background based on different languages.
+ if self.is_bg_per_lang:
+ custom_background = self.get_bg_per_lang()
+ # 222760 Ends.
+ else:
+ custom_background = self.custom_report_background_image
+ # 222760 Ends.
+ # From Company Type.
+ if (
+ self.custom_report_background
+ and not custom_background
+ and (
+ self.custom_report_type == "company"
+ or not self.custom_report_type
+ )
+ and self._context.get("background_company") # #19896
+ ):
+ # report background will be displayed based on the current
+ # company #19896
+ company_id = self._context.get("background_company")
+ # 222760 Starts. If background per lang is True then call method for
+ # get custom background from company based on different languages.
+ if self.is_bg_per_lang:
+ custom_background = self.get_bg_per_lang()
+ # 222760 Ends.
+ else:
+ custom_background = company_id.custom_report_background_image
+ # If background found from any type then set that to the report.
+ if custom_background:
+ back_data = base64.b64decode(custom_background)
+ with closing(os.fdopen(temp_back_id, "wb")) as back_file:
+ back_file.write(back_data)
+ temp_report_id, temp_report_path = tempfile.mkstemp(
+ suffix=".pdf", prefix="with_back_report.tmp."
+ )
+ output = PdfFileWriter()
+ pdf_reader_content = PdfFileReader(pdf_report_path, "rb")
+
+ for i in range(pdf_reader_content.getNumPages()):
+ page = pdf_reader_content.getPage(i)
+ pdf_reader_watermark = PdfFileReader(temp_back_path, "rb")
+ watermark = pdf_reader_watermark.getPage(0)
+ watermark.mergePage(page)
+ output.addPage(watermark)
+ output.write(open(temp_report_path, "wb"))
+ pdf_report_path = temp_report_path
+ os.close(temp_report_id)
+ except Exception as ex:
+ logging.info("Error while PDF Background %s" % ex)
+ raise
+
+ with open(pdf_report_path, "rb") as pdf_document:
+ pdf_content = pdf_document.read()
+
+ # Manual cleanup of the temporary files
+ for temporary_file in temporary_files:
+ try:
+ os.unlink(temporary_file)
+ except (OSError, IOError):
+ _logger.error("Error when trying to remove file %s" % temporary_file)
+
+ return pdf_content
diff --git a/odex30_base/custom_background/models/report_background_lang.py b/odex30_base/custom_background/models/report_background_lang.py
new file mode 100644
index 0000000..c5b3b50
--- /dev/null
+++ b/odex30_base/custom_background/models/report_background_lang.py
@@ -0,0 +1,20 @@
+from odoo import fields, models
+
+
+class ReportBackgroundLang(models.Model):
+ _name = "report.background.lang"
+ _description = "Report Background Line Per Language"
+
+ # New fields. #22260
+ lang_id = fields.Many2one(
+ "res.lang",
+ required=True,
+ string="Language",
+ )
+ background_pdf = fields.Binary(string="Background PDF", required=True)
+ file_name = fields.Char(string="File Name")
+ report_id = fields.Many2one("ir.actions.report", string="Report")
+ company_id = fields.Many2one(
+ "res.company",
+ string="Company",
+ )
diff --git a/odex30_base/custom_background/models/res_company.py b/odex30_base/custom_background/models/res_company.py
new file mode 100644
index 0000000..6cfa61b
--- /dev/null
+++ b/odex30_base/custom_background/models/res_company.py
@@ -0,0 +1,74 @@
+# See LICENSE file for full copyright and licensing details.
+from odoo import _, api, fields, models
+from odoo.exceptions import UserError
+
+
+class ResCompany(models.Model):
+ _inherit = "res.company"
+
+ custom_report_background_image = fields.Binary(string="Custom Report Background")
+ # New field. #22260
+ is_bg_per_lang = fields.Boolean(
+ string="Is Background Per Language",
+ )
+ bg_per_lang_ids = fields.One2many(
+ "report.background.lang",
+ "company_id",
+ string="Background Per Language",
+ )
+
+ # Added new field #T5211
+ is_dynamic_background = fields.Boolean(
+ string="Is Dynamic Background",
+ )
+ background_ids = fields.One2many(
+ "report.background.line", "company_id", "Background Configuration"
+ )
+
+ @api.constrains(
+ "is_bg_per_lang", "bg_per_lang_ids", "is_dynamic_background", "background_ids"
+ )
+ def _check_company_custom_bg_config(self):
+ """New constrains method for check custom bg per company is set or not when
+ 'From Company' type is set at ir_actions_report level. #22260"""
+ # Env.
+ report_env = self.env["ir.actions.report"]
+ # Search report based on the 'company' type and 'is_bg_per_lang' boolean.
+ report_ids = report_env.search(
+ [
+ ("custom_report_type", "in", ["company", False]),
+ ("is_bg_per_lang", "=", True),
+ ]
+ )
+ # Search dynamic reoprt.
+ dynamic_report_ids = report_env.search(
+ [
+ ("custom_report_type", "=", "dynamic"),
+ ("is_bg_per_lang", "=", True),
+ ]
+ )
+ is_fall_back_to_company = False
+ if dynamic_report_ids:
+ # Get report in which Fall back to company is true.
+ is_fall_back_to_company = dynamic_report_ids.mapped(
+ "background_ids"
+ ).filtered(lambda r: r.fall_back_to_company)
+ # If fall_back_to_company and custom bg per lang is not set then raise warning.
+ if is_fall_back_to_company and not (
+ self.is_bg_per_lang and self.bg_per_lang_ids
+ ):
+ raise UserError(
+ _(
+ "Please configure Custom Background Per Language beacuse "
+ "'Fall Back To Company' is set in the dynamic type report level!"
+ )
+ )
+ # If any report with company type and custom bg per lang is not set at
+ # res_company level then raise warning.
+ if report_ids and not (self.is_bg_per_lang and self.bg_per_lang_ids):
+ raise UserError(
+ _(
+ "Please configure Custom Background Per Language beacuse "
+ "'From Company' type is set at the Report level!"
+ )
+ )
diff --git a/odex30_base/custom_background/security/ir.model.access.csv b/odex30_base/custom_background/security/ir.model.access.csv
new file mode 100644
index 0000000..8f8b55b
--- /dev/null
+++ b/odex30_base/custom_background/security/ir.model.access.csv
@@ -0,0 +1,5 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_report_background_line,access_report_background_line,model_report_background_line,base.group_user,1,0,0,0
+access_report_background_lang_user,access_report_background_lang,model_report_background_lang,base.group_user,1,0,0,0
+access_report_background_line_system,access_report_background_line_system,model_report_background_line,base.group_system,1,1,1,1
+access_report_background_lang_admin,access_report_background_lang,model_report_background_lang,base.group_system,1,1,1,1
diff --git a/odex30_base/custom_background/static/description/icon.png b/odex30_base/custom_background/static/description/icon.png
new file mode 100644
index 0000000..9ad73d7
Binary files /dev/null and b/odex30_base/custom_background/static/description/icon.png differ
diff --git a/odex30_base/custom_background/static/description/images/BackgroundConfiguration.png b/odex30_base/custom_background/static/description/images/BackgroundConfiguration.png
new file mode 100644
index 0000000..b9320de
Binary files /dev/null and b/odex30_base/custom_background/static/description/images/BackgroundConfiguration.png differ
diff --git a/odex30_base/custom_background/static/description/images/BackgroundConfigurationSelection.png b/odex30_base/custom_background/static/description/images/BackgroundConfigurationSelection.png
new file mode 100644
index 0000000..976a4f4
Binary files /dev/null and b/odex30_base/custom_background/static/description/images/BackgroundConfigurationSelection.png differ
diff --git a/odex30_base/custom_background/static/description/images/CreateBackgroundConfiguration.png b/odex30_base/custom_background/static/description/images/CreateBackgroundConfiguration.png
new file mode 100644
index 0000000..7823044
Binary files /dev/null and b/odex30_base/custom_background/static/description/images/CreateBackgroundConfiguration.png differ
diff --git a/odex30_base/custom_background/static/description/images/FixedBackgroundBasedOnLang.png b/odex30_base/custom_background/static/description/images/FixedBackgroundBasedOnLang.png
new file mode 100644
index 0000000..e0f8330
Binary files /dev/null and b/odex30_base/custom_background/static/description/images/FixedBackgroundBasedOnLang.png differ
diff --git a/odex30_base/custom_background/static/description/images/logo.png b/odex30_base/custom_background/static/description/images/logo.png
new file mode 100644
index 0000000..5ea55e5
Binary files /dev/null and b/odex30_base/custom_background/static/description/images/logo.png differ
diff --git a/odex30_base/custom_background/static/description/index.html b/odex30_base/custom_background/static/description/index.html
new file mode 100644
index 0000000..f79c2b5
--- /dev/null
+++ b/odex30_base/custom_background/static/description/index.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
+
+
+ Custom Background
+
+
+
+
+
+
+
+
+
+
+
+
Module Custom Background facilitates is to set the Header and footer or watermark in the report based on predifined PDF configured. the predefined PDF will be used as background PDF in all the page of the report(QWeb-PDF).
+
+
+
+
+
+
+
+
+
+ At level of the report you can configure that background pdf. You can configure based on company, language, or specifically for the report only. You can configure different PDF for First and last page as well as for page range.
+
+
+
+
+
+
+
+
+
+
There are different options for configuration
+
+ Fixed background image from Company
+ Fixed background image from Report
+ Dynamic image from report
+ Background image from report based on language
+
+
+
+
+
+
+
+
+
+
+ You can select custom reprot type based on your requirements
+
+
+
+
+
+
+
+
+
+
+
+
+
+ You can also configure Dynamic Background in your PDF as per your requirements
+
+
+
+
+
+
+
+
+
+
+
+
+
+ You can configure here Dynamic Background as per your requirements
+
+
+
+
+
+
+
+
+
+
+
+
+
+ You can configure Fixed Background Based on Langauge as per your requirements
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Report Without Background
+
+
+
+
+
+
+
+
+ Report With Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Need Any Help ?
+
+ Contact With Us
+
+
+
+
+
+
+
+
diff --git a/odex30_base/custom_background/static/src/scss/report_qweb_pdf.scss b/odex30_base/custom_background/static/src/scss/report_qweb_pdf.scss
new file mode 100644
index 0000000..83cc2eb
--- /dev/null
+++ b/odex30_base/custom_background/static/src/scss/report_qweb_pdf.scss
@@ -0,0 +1,3 @@
+body {
+ background: transparent !important;
+}
diff --git a/odex30_base/custom_background/views/ir_actions.xml b/odex30_base/custom_background/views/ir_actions.xml
new file mode 100644
index 0000000..5a55eac
--- /dev/null
+++ b/odex30_base/custom_background/views/ir_actions.xml
@@ -0,0 +1,204 @@
+
+
+
+
+ ir.actions.report.form
+ ir.actions.report
+ form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Interaction with the background configuration
+
+
+ You can set the backgroud watermark in a report based on
+ the options set in the "Background Configuration" tab.
+
+
+ Detailed algorithm (with their priorities):
+
+
+ First Page:
+ If the option "First Page" is chosen it will not
+ look at any other configurations for the first
+ page of the PDF.
+
+ If no "Background PDF" is set on the "First
+ Page" rule then it will set the background PDF
+ from the "Fixed Page", "Expression Page" or
+ "Remaining Pages".
+
+
+ Last Page:
+ If the option "Last Page" is selected, it will
+ not check for any other configurations for the
+ last page.
+ It will only set the last page background PDF
+ that you've applied.
+
+ If there was no "Background PDF" set on the last
+ page then it will set the background PDF from
+ the "Fixed Page", "Expression Page" or
+ "Remaining Pages".
+
+
+
+ Fixed Pages:
+ If the option "Fixed Pages" is selected you can
+ enter for which page you'd like to use the
+ "Background PDF".
+ For example: setting a custom background PDF for
+ the third page of a report by entering "3" in
+ the field "Page Number".
+
+ If the entered page number is first and last
+ then it will set the background from "First
+ Page" and "Last Page" if we configured the first
+ page and the last page otherwise it will use the
+ "Fixed Page" configuration.
+
+
+ Expression:
+ If the option "Expression" is selected you can
+ set custom background PDF's based on
+ expressions.
+
+ For example if you want only a background on
+ every second page you could do:
+
+ result=page%2==0
+
+ If you want only a background on every uneven
+ page (for example page 1,3 ,5) you could do:
+
+ result=page%2!=0
+
+ Or if you only want a background starting from
+ page 2 on for example you could do:
+
+ result=page>2
+
+
+ Remaining Pages:
+ If the option "Remaining Pages" is selected the
+ module will apply the "Background PDF" set on
+ this rule for any pages that have no rule.
+ You could use this for example if you have a
+ rule "First Page" set and then have a second
+ rule "Remaining Pages" it would apply this
+ background on page 2, 3, .. and any other page
+ you have not configured.
+
+
+ Extra Note
+
+ If there are no "Background Configuration" rules
+ added for any line it will work as a normal Odoo
+ report and will not apply any background to the
+ report.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/custom_background/views/report_template.xml b/odex30_base/custom_background/views/report_template.xml
new file mode 100644
index 0000000..8278577
--- /dev/null
+++ b/odex30_base/custom_background/views/report_template.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/custom_background/views/res_company_view.xml b/odex30_base/custom_background/views/res_company_view.xml
new file mode 100644
index 0000000..cee33c0
--- /dev/null
+++ b/odex30_base/custom_background/views/res_company_view.xml
@@ -0,0 +1,114 @@
+
+
+
+
+ res.company.form
+ res.company
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/data_chart/__init__.py b/odex30_base/data_chart/__init__.py
new file mode 100644
index 0000000..5305644
--- /dev/null
+++ b/odex30_base/data_chart/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+from . import models
\ No newline at end of file
diff --git a/odex30_base/data_chart/__manifest__.py b/odex30_base/data_chart/__manifest__.py
new file mode 100644
index 0000000..b3ce027
--- /dev/null
+++ b/odex30_base/data_chart/__manifest__.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+{
+ 'name': "data visualization",
+ 'version': '18.0.1.0.0',
+
+ 'summary': """
+ add data visualization in to odoo
+ this module is adding the ability to create and manage new table reports
+ for a spacific model or a query based on data items
+ """,
+
+ 'category': 'Extra Tools',
+ 'author': "Expert Co. Ltd.",
+ 'website': "http://www.exp-sa.com",
+ # any module necessary for this one to work correctly
+ 'depends': ['web'],
+
+ # always loaded
+ 'data': [
+ 'security/groups.xml',
+ 'security/ir.model.access.csv',
+ 'views/views.xml',
+ 'views/data_chart_report_view.xml',
+ ],
+ 'assets': {
+ 'web.assets_backend': [
+ 'data_chart/static/src/js/data_chart.js',
+ 'data_chart/static/src/js/jspdf_custom.js',
+ 'data_chart/static/src/xml/data_chart_templates.xml',
+ ],
+ },
+
+
+}
diff --git a/odex30_base/data_chart/data/demo.xml b/odex30_base/data_chart/data/demo.xml
new file mode 100644
index 0000000..e671b37
--- /dev/null
+++ b/odex30_base/data_chart/data/demo.xml
@@ -0,0 +1,44 @@
+
+
+
+
+ Partners
+ Partners
+ model
+
+
+
+
+ city
+ working city
+
+
+
+
+
+ Query Partners
+ Partners
+ query
+ select prt.name as name, prt.city as city from prt;
+
+
+
+ city
+ working city
+
+
+
+
+ name
+ partner name
+
+
+
+
+ prt
+
+
+
+
+
+
\ No newline at end of file
diff --git a/odex30_base/data_chart/i18n/ar_SY.po b/odex30_base/data_chart/i18n/ar_SY.po
new file mode 100644
index 0000000..056a567
--- /dev/null
+++ b/odex30_base/data_chart/i18n/ar_SY.po
@@ -0,0 +1,262 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * data_chart
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 11.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-06-15 11:38+0000\n"
+"PO-Revision-Date: 2019-06-15 11:38+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: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_action_id
+msgid "Action"
+msgstr "الإجراء"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_report_names
+msgid "Cols Names"
+msgstr "أسماء اﻷعمدة"
+
+#. module: data_chart
+#: model:ir.ui.view,arch_db:data_chart.data_chart_report_view_form
+msgid "Create Menu"
+msgstr "إنشاء القائمة"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_data_item_create_uid
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_model_create_uid
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_create_uid
+#: model:ir.model.fields,field_description:data_chart.field_report_cols_names_create_uid
+msgid "Created by"
+msgstr "أنشئ بواسطة"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_data_item_create_date
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_model_create_date
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_create_date
+#: model:ir.model.fields,field_description:data_chart.field_report_cols_names_create_date
+msgid "Created on"
+msgstr "أنشئ في"
+
+#. module: data_chart
+#: model:ir.ui.menu,name:data_chart.data_chart_menu_root
+msgid "Data Chart"
+msgstr "مخطط البيانات"
+
+#. module: data_chart
+#: model:ir.model,name:data_chart.model_report_cols_names
+msgid "Data Chart Data Cols Names"
+msgstr "Data Chart Data Cols Names"
+
+#. module: data_chart
+#: model:ir.model,name:data_chart.model_data_chart_data_item
+msgid "Data Chart Data Item"
+msgstr "Data Chart Data Item"
+
+#. module: data_chart
+#: model:ir.model,name:data_chart.model_data_chart_report
+msgid "Data Chart Report"
+msgstr "Data Chart Report"
+
+#. module: data_chart
+#: model:ir.ui.view,arch_db:data_chart.data_chart_report_view_form
+msgid "Data Items"
+msgstr "وحدات بيانات"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_data_item_data_item
+msgid "Data node"
+msgstr "وحدة بيانات"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_basemodel_extend_custom_data_chart_display_name
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_data_item_display_name
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_model_display_name
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_display_name
+#: model:ir.model.fields,field_description:data_chart.field_report_cols_names_d_name
+#: model:ir.model.fields,field_description:data_chart.field_report_cols_names_display_name
+msgid "Display Name"
+msgstr "الاسم المعروض"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_footer
+msgid "Footer"
+msgstr "Footer"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_groups_ids
+#: model:ir.ui.view,arch_db:data_chart.data_chart_report_view_form
+msgid "Groups"
+msgstr "المجموعات"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_header
+msgid "Header"
+msgstr "Header"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_basemodel_extend_custom_data_chart_id
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_data_item_id
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_model_id
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_id
+#: model:ir.model.fields,field_description:data_chart.field_report_cols_names_id
+msgid "ID"
+msgstr "المعرف"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_basemodel_extend_custom_data_chart___last_update
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_data_item___last_update
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_model___last_update
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report___last_update
+#: model:ir.model.fields,field_description:data_chart.field_report_cols_names___last_update
+msgid "Last Modified on"
+msgstr "آخر تعديل في"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_data_item_write_uid
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_model_write_uid
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_write_uid
+#: model:ir.model.fields,field_description:data_chart.field_report_cols_names_write_uid
+msgid "Last Updated by"
+msgstr "آخر تحديث بواسطة"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_data_item_write_date
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_model_write_date
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_write_date
+#: model:ir.model.fields,field_description:data_chart.field_report_cols_names_write_date
+msgid "Last Updated on"
+msgstr "آخر تحديث في"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_menu_id
+msgid "Menu"
+msgstr "القائمة"
+
+#. module: data_chart
+#: selection:data.chart.report,type:0
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_model_model
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_model_id
+msgid "Model"
+msgstr "النموذج"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_data_items_ids
+msgid "Models"
+msgstr "نماذج"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_data_item_name
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_name
+msgid "Name"
+msgstr "اﻹسم"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_model_options
+msgid "Options"
+msgstr "خيارات"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_parent_menu_id
+msgid "Parent Menu"
+msgstr "القائمة الأصل"
+
+#. module: data_chart
+#: selection:data.chart.report,type:0
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_query
+msgid "Query"
+msgstr "Query"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_data_item_report_id
+#: model:ir.model.fields,field_description:data_chart.field_report_cols_names_report_id
+msgid "Report"
+msgstr "التقرير"
+
+#. module: data_chart
+#: model:ir.ui.view,arch_db:data_chart.data_chart_report_view_form
+msgid "Report Columns Names"
+msgstr "أسماء اﻷعمدة في التقرير"
+
+#. module: data_chart
+#: model:ir.ui.view,arch_db:data_chart.data_chart_report_view_form
+msgid "Report Data"
+msgstr "Report Data"
+
+#. module: data_chart
+#: model:ir.ui.menu,name:data_chart.data_chart_menu
+msgid "Reports"
+msgstr "التقارير"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_model_res_id
+msgid "Res"
+msgstr "Res"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_seq
+msgid "Sequence"
+msgstr "التسلسل"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_report_cols_names_t_name
+msgid "Technical Name"
+msgstr "الاسم التقني"
+
+#. module: data_chart
+#: model:ir.ui.view,arch_db:data_chart.data_chart_report_view_form
+msgid "Test Data"
+msgstr "أختبار البيانات"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_title
+msgid "Title"
+msgstr "العنوان"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_report_type
+msgid "Type"
+msgstr "نوع الحساب الرئيس"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_model_user_id
+msgid "User"
+msgstr "المستخدم"
+
+#. module: data_chart
+#: model:ir.model,name:data_chart.model_basemodel_extend_custom_data_chart
+msgid "basemodel.extend_custom_data_chart"
+msgstr "basemodel.extend_custom_data_chart"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_model_conditions
+msgid "conditions"
+msgstr "الشروط"
+
+#. module: data_chart
+#: model:ir.actions.act_window,name:data_chart.data_chart_report_action
+msgid "data.chart.report.action"
+msgstr "data.chart.report.action"
+
+#. module: data_chart
+#: model:ir.model,name:data_chart.model_data_chart_model
+msgid "data_chart_model"
+msgstr "data_chart_model"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_model_formats
+msgid "formats"
+msgstr "formats"
+
+#. module: data_chart
+#: model:ir.model.fields,field_description:data_chart.field_data_chart_model_slice
+msgid "slice"
+msgstr "slice"
diff --git a/odex30_base/data_chart/models/__init__.py b/odex30_base/data_chart/models/__init__.py
new file mode 100644
index 0000000..066e62c
--- /dev/null
+++ b/odex30_base/data_chart/models/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+
+from . import data_chart
+from . import models_custom
diff --git a/odex30_base/data_chart/models/data_chart.py b/odex30_base/data_chart/models/data_chart.py
new file mode 100644
index 0000000..a06efab
--- /dev/null
+++ b/odex30_base/data_chart/models/data_chart.py
@@ -0,0 +1,689 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Expert Co. Ltd.
+# Copyright (C) 2018 ( ).
+#
+##############################################################################
+import base64
+
+from odoo import models, fields, api, _
+
+import datetime
+
+from odoo.http import request
+from itertools import groupby
+import time
+import sqlite3
+from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT
+from odoo.exceptions import ValidationError
+
+import json
+
+sqllite_keys = ["ABORT",
+ "ACTION",
+ "ADD",
+ "AFTER",
+ "ALL",
+ "ALTER",
+ "ANALYZE",
+ "AND",
+ "AS",
+ "ASC",
+ "ATTACH",
+ "AUTOINCREMENT",
+ "BEFORE",
+ "BEGIN",
+ "BETWEEN",
+ "BY",
+ "CASCADE",
+ "CASE",
+ "CAST",
+ "CHECK",
+ "COLLATE",
+ "COLUMN",
+ "COMMIT",
+ "CONFLICT",
+ "CONSTRAINT",
+ "CREATE",
+ "CROSS",
+ "CURRENT",
+ "CURRENT_DATE",
+ "CURRENT_TIME",
+ "CURRENT_TIMESTAMP",
+ "DATABASE",
+ "DEFAULT",
+ "DEFERRABLE",
+ "DEFERRED",
+ "DELETE",
+ "DESC",
+ "DETACH",
+ "DISTINCT",
+ "DO",
+ "DROP",
+ "EACH",
+ "ELSE",
+ "END",
+ "ESCAPE",
+ "EXCEPT",
+ "EXCLUDE",
+ "EXCLUSIVE",
+ "EXISTS",
+ "EXPLAIN",
+ "FAIL",
+ "FILTER",
+ "FOLLOWING",
+ "FOR",
+ "FOREIGN",
+ "FROM",
+ "FULL",
+ "GLOB",
+ "GROUP",
+ "GROUPS",
+ "HAVING",
+ "IF",
+ "IGNORE",
+ "IMMEDIATE",
+ "IN",
+ "INDEX",
+ "INDEXED",
+ "INITIALLY",
+ "INNER",
+ "INSERT",
+ "INSTEAD",
+ "INTERSECT",
+ "INTO",
+ "IS",
+ "ISNULL",
+ "JOIN",
+ "KEY",
+ "LEFT",
+ "LIKE",
+ "LIMIT",
+ "MATCH",
+ "NATURAL",
+ "NO",
+ "NOT",
+ "NOTHING",
+ "NOTNULL",
+ "NULL",
+ "OF",
+ "OFFSET",
+ "ON",
+ "OR",
+ "ORDER",
+ "OTHERS",
+ "OUTER",
+ "OVER",
+ "PARTITION",
+ "PLAN",
+ "PRAGMA",
+ "PRECEDING",
+ "PRIMARY",
+ "QUERY",
+ "RAISE",
+ "RANGE",
+ "RECURSIVE",
+ "REFERENCES",
+ "REGEXP",
+ "REINDEX",
+ "RELEASE",
+ "RENAME",
+ "REPLACE",
+ "RESTRICT",
+ "RIGHT",
+ "ROLLBACK",
+ "ROW",
+ "ROWS",
+ "SAVEPOINT",
+ "SELECT",
+ "SET",
+ "TABLE",
+ "TEMP",
+ "TEMPORARY",
+ "THEN",
+ "TIES",
+ "TO",
+ "TRANSACTION",
+ "TRIGGER",
+ "UNBOUNDED",
+ "UNION",
+ "UNIQUE",
+ "UPDATE",
+ "USING",
+ "VACUUM",
+ "VALUES",
+ "VIEW",
+ "VIRTUAL",
+ "WHEN",
+ "WHERE",
+ "WINDOW",
+ "WITH",
+ "WITHOUT"]
+
+
+class data_chart_report(models.Model):
+ _name = 'data.chart.report'
+ _description = 'Data Chart Report'
+
+ name = fields.Char(string='Name', copy=False)
+
+ title = fields.Text(string='Title', copy=False)
+
+ type = fields.Selection(
+ selection=[('model', 'Model'),
+ ('query', 'Query')],
+ string='Type', copy=True)
+
+ header = fields.Html(string='Header')
+ footer = fields.Html(string='Footer')
+
+ seq = fields.Char(string='Sequence')
+
+ menu_id = fields.Many2one(comodel_name='ir.ui.menu', string='Menu', copy=False)
+
+ parent_menu_id = fields.Many2one(comodel_name='ir.ui.menu', string='Parent Menu')
+
+ action_id = fields.Many2one(comodel_name='ir.actions.client', string='Action', copy=False)
+
+ data_items_ids = fields.One2many(comodel_name='data_chart_data_item',
+ inverse_name='report_id', string='Models', copy=True)
+
+ report_names = fields.One2many(comodel_name='report_cols_names',
+ inverse_name='report_id', string='Cols Names', copy=True)
+
+ query = fields.Text(string='Query')
+
+ model_id = fields.Many2one(comodel_name='ir.model', string='Model')
+
+ groups_ids = fields.Many2many(comodel_name='res.groups', string='Groups', copy=True)
+
+ def create_menu(self):
+ self.ensure_one()
+ if type == 'query':
+ self.get_data()
+ if self.menu_id:
+ self.menu_id.unlink()
+ if self.action_id:
+ self.action_id.unlink()
+
+ if self.type == 'query':
+ action_id = self.env['ir.actions.client'].create({
+ 'name': self.name,
+ 'tag': 'data_view',
+ 'context': {
+ 'model': 'data.chart.report',
+ 'active_id': self.id,
+ 'title': self.title,
+ 'create': False,
+ },
+ 'target': 'current',
+ })
+ else:
+ action_id = self.env['ir.actions.client'].create({
+ 'name': self.name,
+ 'tag': 'data_view',
+ 'context': {
+ 'model': self.model_id.model,
+ 'active_id': self.id,
+ 'title': self.title,
+ 'create': False,
+ },
+ 'target': 'current',
+ })
+
+ self.action_id = action_id.id
+
+ menu_id = self.env['ir.ui.menu'].create({
+ 'name': self.name,
+ 'parent_id': self.parent_menu_id and self.parent_menu_id.id or False,
+ 'action': 'ir.actions.client,%d' % (action_id,),
+ 'groups_id': [[6, 0, [x.id for x in self.groups_ids]]]
+ })
+
+ self.menu_id = menu_id.id
+
+ def show_data(self):
+ if self.type == 'query':
+ return {
+ 'name': self.name,
+ 'type': 'ir.actions.client',
+ 'tag': 'data_chart',
+ 'context': {
+ 'model': 'data.chart.report',
+ 'active_id': self.id,
+ 'title': self.title,
+ 'admin_view': True,
+ },
+ }
+ else:
+ return {
+ 'name': self.name,
+ 'tag': 'data_view',
+ 'context': {
+ 'model': self.model_id.model,
+ 'active_id': self.id,
+ 'title': self.title,
+ 'admin_view': True,
+ },
+ 'type': 'ir.actions.client',
+ 'target': 'new',
+ }
+
+ def get_data(self):
+ self.ensure_one()
+ # Create database connection to an in-memory database
+
+ connectionObject = sqlite3.connect(":memory:")
+
+ def display_name(model, field, value):
+ try:
+ # context = {'lang': user.lang}
+ # self.env = self.env(context=context)
+ data_items = self.data_items_ids.filtered(lambda x: x.name == model)
+ if data_items:
+ data_item = data_items[0]
+
+ model_id = data_item.data_item
+
+ model = model_id.model
+ if self.env[model]._fields[field].type == 'selection':
+ value = dict(self.env[model]._fields[field]._description_selection(
+ self.env))[value]
+ except:
+ return value
+ return value
+
+ connectionObject.create_function("display_name", 3, display_name)
+
+ connectionObject.row_factory = dict_factory
+ # Obtain a cursor object
+
+ cursorObject = connectionObject.cursor()
+
+ # Create a table in the in-memory database
+
+ for data_item in self.data_items_ids:
+ model = table = False
+
+ # if data_item.data_item.startswith('model_'):
+ # model = data_item.data_item.replace('model_', '', 1)
+
+ #model_id = self.env['ir.model'].search([('model', '=', model)])
+ model_id = data_item.data_item
+ model = model_id.model
+ fields = self.env['ir.model.fields'].search(
+ [('model_id', 'in', model_id.ids)])
+ fields = fields.read(['name', 'field_description', 'ttype'])
+
+ fields_types = {x['name']: x['ttype'] for x in fields}
+ cols = ""
+ cols_names = ""
+ for field in fields_types:
+ if field.upper() in sqllite_keys:
+ continue
+ if fields_types[field] in ['char', 'text', 'selection']:
+ cols += field + ' text , '
+ cols_names += field + ' , '
+ elif fields_types[field] in ['integer']:
+ cols += field + ' int , '
+ cols_names += field + ' , '
+ elif fields_types[field] in ['float', 'monetary']:
+ cols += field + ' REAL , '
+ cols_names += field + ' , '
+ elif fields_types[field] in ['date']:
+ cols += field + ' DATE , '
+ cols_names += field + ' , '
+ elif fields_types[field] in ['datetime']:
+ cols += field + ' datetime , '
+ cols_names += field + ' , '
+ elif fields_types[field] in ['many2one']:
+ cols += field + ' int , '
+ cols_names += field + ' , '
+ elif fields_types[field] in ['boolean']:
+ cols += field + ' boolean , '
+ cols_names += field + ' , '
+ createTable = "CREATE TABLE " + data_item.name + " (" + cols[0:-2] + " )"
+
+ cursorObject.execute(createTable)
+ # insert the data
+
+ data = self.env[model].with_context({'data_chart_search': True}).search([])
+ for rec in data:
+ row = ""
+ readed = rec.with_context({'data_chart_search': False}).read()[0]
+ for item in cols_names[0:-3].split(' , '):
+ item_data = readed.get(item, False)
+ if item == 'name':
+ readed['name'] = rec.name_get()[0][1]
+ if item_data:
+ row += '"'+str(item_data)+'"' + " , "
+ if not item_data:
+ row += '" "' + " , "
+
+ elif fields_types[item] == 'many2one':
+ if item_data:
+ row += str(item_data[0]) + " , "
+ else:
+ row += 'null' + " , "
+ elif fields_types[item] in ['char', 'text', 'selection']:
+ if item_data:
+ item_data = str(item_data).replace('"', '\'')
+ row += '"'+str(item_data)+'"' + " , "
+ if not item_data:
+ row += '" "' + " , "
+
+ elif fields_types[item] in ['date', 'datetime']:
+ row += '"'+str(item_data)+'"' + " , "
+ elif fields_types[item] in ['boolean']:
+ if item_data:
+ row += str('1') + " , "
+ if not item_data:
+ row += str('0') + " , "
+ else:
+ if item_data:
+ row += str(item_data) + " , "
+ if not item_data:
+ row += 'null' + " , "
+
+ insertValues = """INSERT INTO """ + data_item.name + \
+ """( """ + cols_names[0:-3] + """ )""" + """ values(""" + row[0:-3] + """ )"""
+ cursorObject.execute(insertValues)
+
+ queryTable = self.query
+
+ queryResults = cursorObject.execute(queryTable)
+
+ data = queryResults.fetchall()
+
+ report_names = self.report_names
+
+ #report_names = {x.d_name: x.t_name for x in report_names}
+
+ report_names = {x.t_name: x.d_name for x in report_names}
+ new_data = []
+ for rec in data:
+ new_rec = rec
+ for item in list(filter(lambda x: x in report_names, rec.keys())):
+ new_rec[report_names[item]] = rec[item]
+ del new_rec[item]
+
+ new_data.append(new_rec)
+
+ connectionObject.close()
+ return new_data
+
+
+class data_chart_report_models(models.Model):
+ _name = 'data_chart_data_item'
+ _description = 'Data Chart Data Item'
+
+ def _get_models_tables(self):
+ ir_model_relation = self.env['ir.model.relation'].search([])
+ ir_model_relation = ir_model_relation.read(['name'])
+ ir_model_relation = [('rel'+'_'+x['name'], x['name']) for x in ir_model_relation]
+
+ ir_model = self.env['ir.model'].search([])
+ ir_model = ir_model.read(['model', 'name'])
+ ir_model = [('model'+'_'+x['model'], x['name']+'_'+x['model']) for x in ir_model]
+
+ return ir_model_relation + ir_model
+
+ data_item = fields.Many2one('ir.model', string='Data node')
+
+ name = fields.Char(string='Name')
+
+ report_id = fields.Many2one(comodel_name='data.chart.report', string='Report')
+
+
+class report_cols_names(models.Model):
+ _name = 'report_cols_names'
+ _description = 'Data Chart Data Cols Names'
+
+ t_name = fields.Char(string='Technical Name')
+ d_name = fields.Char(string='Display Name')
+ report_id = fields.Many2one(comodel_name='data.chart.report', string='Report')
+
+
+class data_chart_model(models.Model):
+ _name = 'data_chart_model'
+
+ model = fields.Char(string='Model')
+ user_id = fields.Many2one(comodel_name='res.users', string='User')
+ res_id = fields.Integer()
+
+ options = fields.Text(string='Options')
+ slice = fields.Text(string='slice')
+ conditions = fields.Text(string='conditions')
+ formats = fields.Text(string='formats')
+ cols_types = fields.Text(string='Column Types')
+
+ @api.model
+ def data_chart_details(self, model, res_id=False, with_default=False):
+ try:
+ return self._data_chart_details(model, res_id, with_default)
+ except:
+ raise ValidationError(
+ _('''ERROR IN REPORT CONFIGURATION ! '''))
+
+ @api.model
+ def _data_chart_details(self, model, res_id=False, with_default=False):
+ """
+ get the list of dicts in sorted oreder to fit in data view
+ """
+ uid = request.session.uid
+ exist = self.search([('user_id', '=', uid), ('model', '=', model), ('res_id', '=', res_id)])
+
+ if(with_default) or not exist:
+ exist = self.search(
+ [('user_id', '=', False),
+ ('model', '=', model),
+ ('res_id', '=', res_id)])
+
+ company_image = False
+ header = footer = False
+ report_names = {}
+ user = self.env['res.users'].search([('id', '=', uid)])
+ if user:
+ company_image = ""+str(user.company_id.logo, 'utf-8', 'ignore')+""
+ context = {'lang': user.lang}
+ self.env = self.env(context=context)
+
+ if res_id and model == 'data.chart.report':
+ data_object = self.env[model].search(
+ [('id', '=', res_id)])
+ data = data_object.get_data()
+ cols_types = self.get_data_types(data)
+ # for a dum reason
+ cols_types = json.dumps(cols_types)
+ header = data_object.header
+ footer = data_object.footer
+
+ if exist:
+ return {'data': data, 'options': exist.options,
+ 'slice': exist.slice, 'conditions': exist.conditions, 'formats': exist.formats,
+ 'cols_types': exist.cols_types and exist.cols_types or cols_types,
+ 'header': header, 'footer': footer, 'company_image': company_image}
+ else:
+ return {'data': data, 'header': header, 'footer': footer, 'cols_types': cols_types, 'company_image': company_image}
+
+ if res_id and model != 'data.chart.report':
+ data_object = self.env['data.chart.report'].search(
+ [('id', '=', res_id)])
+
+ data = self.env[model].search([])
+ header = data_object.header
+ footer = data_object.footer
+
+ report_names = data_object.report_names
+
+ report_names = {x.t_name: x.d_name for x in report_names}
+
+ else:
+ data = self.env[model].search([])
+
+ model_id = self.env['ir.model'].search([('model', '=', model)])
+ fields = self.env['ir.model.fields'].search(
+ [('model_id', 'in', model_id.ids)])
+ fields = fields.read(['name', 'field_description', 'ttype'])
+
+ fields_names = {x['name']: x['field_description'] for x in fields}
+
+ fields_types = {x['name']: x['ttype'] for x in fields}
+
+ selectoin_fields = {}
+ for fff in self.env[model]._fields:
+ if self.env[model]._fields[fff].type == 'selection':
+ selectoin_fields[fff] = dict(
+ self.env[model]._fields[fff]._description_selection(self.env))
+
+ all_data = []
+ cols_types = {}
+
+ cols_in_report = []
+ for field in fields_types:
+ if fields_types[field] in ['char', 'text', 'selection']:
+ cols_types[field in report_names and report_names[field]
+ or fields_names[field]] = {'type': 'string'}
+ cols_in_report.append(field)
+ elif fields_types[field] in ['integer', 'float', 'monetary']:
+ cols_types[field in report_names and report_names[field]
+ or fields_names[field]] = {'type': 'number'}
+ cols_in_report.append(field)
+ elif fields_types[field] in ['date']:
+ cols_types[field in report_names and report_names[field]
+ or fields_names[field]] = {'type': 'date string'}
+ cols_in_report.append(field)
+ elif fields_types[field] in ['datetime']:
+ cols_types[field in report_names and report_names[field]
+ or fields_names[field]] = {'type': 'datetime'}
+ cols_in_report.append(field)
+ elif fields_types[field] in ['many2one']:
+ cols_types[field in report_names and report_names[field]
+ or fields_names[field]] = {'type': 'string'}
+ cols_in_report.append(field)
+
+ # all_data.append(cols_types)
+ # for a dum reason
+
+ cols_types = json.dumps(cols_types)
+ for rec in data:
+ row = {}
+ readed = rec.read()[0]
+ for item in cols_in_report:
+ if item == 'name':
+ readed['name'] = rec.name_get()[0][1]
+ if fields_types[item] == 'many2one':
+ readed[item] = readed[item] and readed[item][1] or ""
+ if fields_types[item] == 'selection':
+ readed[item] = selectoin_fields[item].get(readed[item], "")
+ row[item in report_names and report_names[item] or fields_names[item]] = readed[item]
+
+ all_data.append(row)
+
+ if exist:
+ return {'data': all_data, 'options': exist.options,
+ 'slice': exist.slice, 'conditions': exist.conditions,
+ 'cols_types': exist.cols_types and exist.cols_types or cols_types,
+ 'formats': exist.formats,
+ 'header': header, 'footer': footer,
+ 'company_image': company_image}
+ else:
+ return {'data': all_data, 'company_image': company_image,
+ 'header': header, 'footer': footer, 'cols_types': cols_types}
+
+ def get_key_type(self, key, data, index):
+
+ if not data[index][key]:
+ if index + 1 < len(data):
+ return self.get_key_type(key, data, index + 1)
+ else:
+ return {}
+ # check if the data type is not string
+ if type(data[index][key]) in [int, float]:
+ return {'type': 'number'}
+
+ # check date
+ try:
+ datetime.datetime.strptime(data[index][key], DEFAULT_SERVER_DATE_FORMAT)
+ return {'type': 'date string'}
+ except:
+ pass
+
+ # check datetime
+ try:
+ datetime.datetime.strptime(data[index][key], DEFAULT_SERVER_DATETIME_FORMAT)
+ return {'type': 'datetime'}
+ except:
+ pass
+
+ if data[index][key].isdigit():
+ return {'type': 'number'}
+
+ elif data[index][key] != 'null':
+ return {'type': 'string'}
+ else:
+ if index + 1 < len(data):
+ return self.get_key_type(key, data, index + 1)
+ else:
+ return {}
+
+ def get_data_types(self, data):
+ types_dict = {}
+ for key in data[0]:
+ types_dict[key] = self.get_key_type(key, data, 0)
+ return types_dict
+
+ @api.model
+ def save_options(self, model, res_id, options, slice, conditions, formats, cols_types):
+ uid = request.session.uid
+ exist = self.search([('user_id', '=', uid), ('model', '=', model), ('res_id', '=', res_id)])
+
+ if exist:
+ exist.options = options
+ exist.slice = slice
+ exist.conditions = conditions
+ exist.formats = formats
+ exist.cols_types = cols_types
+ else:
+ self.create({
+ 'user_id': uid,
+ 'model': model,
+ 'res_id': res_id,
+ 'options': options,
+ 'slice': slice,
+ 'conditions': conditions,
+ 'formats': formats,
+ 'cols_types': cols_types,
+ })
+
+ @api.model
+ def set_default(self, model, res_id, options, slice, conditions, formats, cols_types):
+ exist = self.search(
+ [('user_id', '=', False),
+ ('model', '=', model),
+ ('res_id', '=', res_id)])
+ if exist:
+ exist.options = options
+ exist.slice = slice
+ exist.conditions = conditions
+ exist.formats = formats
+ exist.cols_types = cols_types
+ else:
+ self.create({
+ 'user_id': False,
+ 'model': model,
+ 'res_id': res_id,
+ 'options': options,
+ 'slice': slice,
+ 'conditions': conditions,
+ 'formats': formats,
+ 'cols_types': cols_types,
+ })
+
+
+def dict_factory(cursor, row):
+ d = {}
+ for idx, col in enumerate(cursor.description):
+ d[col[0]] = row[idx]
+ return d
diff --git a/odex30_base/data_chart/models/models_custom.py b/odex30_base/data_chart/models/models_custom.py
new file mode 100644
index 0000000..ece99c6
--- /dev/null
+++ b/odex30_base/data_chart/models/models_custom.py
@@ -0,0 +1,26 @@
+from odoo import models, fields, api, _
+
+
+class BaseModelExtend(models.BaseModel):
+ _name = 'basemodel.extend_custom_data_chart'
+
+ def _register_hook(self):
+
+ @api.model
+ @api.returns(
+ 'self', upgrade=lambda self, value, args, offset=0, limit=None, order=None,
+ count=False: value if count else self.browse(value), downgrade=lambda self, value, args,
+ offset=0, limit=None, order=None, count=False: value if count else value.ids)
+ def search(self, args, offset=0, limit=None, order=None, count=False):
+ context = dict(self.env.context)
+ if context.get('data_chart_search', False):
+ res = self._search([], offset=offset, limit=limit, order=order, count=count)
+ else:
+ res = self._search(args, offset=offset, limit=limit, order=order, count=count)
+
+ return res if count else self.browse(res)
+
+
+# -------------------------------------------------------
+ models.BaseModel.search = search
+ return super(BaseModelExtend, self)._register_hook()
diff --git a/odex30_base/data_chart/security/groups.xml b/odex30_base/data_chart/security/groups.xml
new file mode 100644
index 0000000..60d27e1
--- /dev/null
+++ b/odex30_base/data_chart/security/groups.xml
@@ -0,0 +1,8 @@
+
+
+
+
+ data visualization manager
+
+
+
diff --git a/odex30_base/data_chart/security/ir.model.access.csv b/odex30_base/data_chart/security/ir.model.access.csv
new file mode 100644
index 0000000..8a3226e
--- /dev/null
+++ b/odex30_base/data_chart/security/ir.model.access.csv
@@ -0,0 +1,19 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_data_chart_report,access_data_chart_report,model_data_chart_report,base.group_user,1,0,0,0
+
+access_report_cols_names,access_report_cols_names,model_report_cols_names,base.group_user,1,0,0,0
+
+access_data_chart_model,access_data_chart_model,model_data_chart_model,base.group_user,1,0,0,0
+
+access_data_chart_data_item,access_data_chart_data_item,model_data_chart_data_item,base.group_user,1,0,0,0
+
+
+access_data_chart_report_manager,access_data_chart_report_manager,model_data_chart_report,data_chart.group_data_chart_manager,1,1,1,1
+
+access_report_cols_names_manager,access_report_cols_names_manager,model_report_cols_names,data_chart.group_data_chart_manager,1,1,1,1
+
+access_data_chart_model_manager,access_data_chart_model_manager,model_data_chart_model,data_chart.group_data_chart_manager,1,1,1,1
+
+access_data_chart_data_item_manager,access_data_chart_data_item_manager,model_data_chart_data_item,data_chart.group_data_chart_manager,1,1,1,1
+
+
diff --git a/odex30_base/data_chart/static/description/all_fields.png b/odex30_base/data_chart/static/description/all_fields.png
new file mode 100644
index 0000000..cfa75fb
Binary files /dev/null and b/odex30_base/data_chart/static/description/all_fields.png differ
diff --git a/odex30_base/data_chart/static/description/calcu.png b/odex30_base/data_chart/static/description/calcu.png
new file mode 100644
index 0000000..f1df9e5
Binary files /dev/null and b/odex30_base/data_chart/static/description/calcu.png differ
diff --git a/odex30_base/data_chart/static/description/conditional_format.png b/odex30_base/data_chart/static/description/conditional_format.png
new file mode 100644
index 0000000..e65f8fc
Binary files /dev/null and b/odex30_base/data_chart/static/description/conditional_format.png differ
diff --git a/odex30_base/data_chart/static/description/format.png b/odex30_base/data_chart/static/description/format.png
new file mode 100644
index 0000000..4cdb41b
Binary files /dev/null and b/odex30_base/data_chart/static/description/format.png differ
diff --git a/odex30_base/data_chart/static/description/icon.png b/odex30_base/data_chart/static/description/icon.png
new file mode 100644
index 0000000..4141f52
Binary files /dev/null and b/odex30_base/data_chart/static/description/icon.png differ
diff --git a/odex30_base/data_chart/static/description/index.html b/odex30_base/data_chart/static/description/index.html
new file mode 100644
index 0000000..c98fbd7
--- /dev/null
+++ b/odex30_base/data_chart/static/description/index.html
@@ -0,0 +1,115 @@
+
+
+
Make Aweasome Visualization Of Your Data
+
Get data from your models and custom make queries and
+ Turn
+ them into data pivot table with tree different layouta
+
+
+
+ Create new report configuration.
+
+
+
+
+
+ Test Data to see how the report will be shown.
+
+
+
+
+
+ add the created report to the selected parent menu.
+
+
+
+
+
+
+
+
+
+
+
+
+
See What You Want
+
Select which Fields To See With The Ordering And Grouping You Want And More ...
+
+
+
+ set the format of the selected fields.
+
+
+
+
+
+
+ set the format of the selected fields..
+
+
+
+
+
+
+ add new computed Fields with the custom value you want.
+
+
+
+
+
+
+ change the type of data rendered in the view.
+
+
+
+
+
+
+
+ change the Layout of the view.
+
+
+
+
+
+
+
+
+ any employee can save his custom design settings.
+
+
+
+
+
+ set default design settings by admin, So you can get back to it by original button.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/odex30_base/data_chart/static/description/options.png b/odex30_base/data_chart/static/description/options.png
new file mode 100644
index 0000000..b4a467f
Binary files /dev/null and b/odex30_base/data_chart/static/description/options.png differ
diff --git a/odex30_base/data_chart/static/description/page1.png b/odex30_base/data_chart/static/description/page1.png
new file mode 100644
index 0000000..7a70cc4
Binary files /dev/null and b/odex30_base/data_chart/static/description/page1.png differ
diff --git a/odex30_base/data_chart/static/description/types.png b/odex30_base/data_chart/static/description/types.png
new file mode 100644
index 0000000..038184a
Binary files /dev/null and b/odex30_base/data_chart/static/description/types.png differ
diff --git a/odex30_base/data_chart/static/description/webdatarocks.png b/odex30_base/data_chart/static/description/webdatarocks.png
new file mode 100644
index 0000000..b69010d
Binary files /dev/null and b/odex30_base/data_chart/static/description/webdatarocks.png differ
diff --git a/odex30_base/data_chart/static/fonts/ae_AlMohanad.ttf b/odex30_base/data_chart/static/fonts/ae_AlMohanad.ttf
new file mode 100644
index 0000000..bdd7360
Binary files /dev/null and b/odex30_base/data_chart/static/fonts/ae_AlMohanad.ttf differ
diff --git a/odex30_base/data_chart/static/src/css/buttons.jqueryui.min.css b/odex30_base/data_chart/static/src/css/buttons.jqueryui.min.css
new file mode 100644
index 0000000..436c430
--- /dev/null
+++ b/odex30_base/data_chart/static/src/css/buttons.jqueryui.min.css
@@ -0,0 +1 @@
+@keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,0.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:0.5em;margin:0;font-weight:normal;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}div.dt-buttons{position:relative;float:left}div.dt-buttons .dt-button{margin-right:0}div.dt-buttons .dt-button span.ui-icon{display:inline-block;vertical-align:middle;margin-top:-2px}div.dt-buttons .dt-button:active{outline:none}div.dt-buttons .dt-button:hover>span{background-color:rgba(0,0,0,0.05)}div.dt-button-collection{position:absolute;top:0;left:0;width:150px;margin-top:3px;padding:8px 8px 4px 8px;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.4);background-color:#f3f3f3;background-color:rgba(255,255,255,0.3);overflow:hidden;z-index:2002;border-radius:5px;box-shadow:3px 3px 5px rgba(0,0,0,0.3);z-index:2002;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px;-webkit-column-gap:0;-moz-column-gap:0;-ms-column-gap:0;-o-column-gap:0;column-gap:0}div.dt-button-collection .dt-button{position:relative;left:0;right:0;width:100%;display:block;float:none;margin-right:0;margin-bottom:4px}div.dt-button-collection .dt-button:hover>span{background-color:rgba(0,0,0,0.05)}div.dt-button-collection.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}div.dt-button-collection.fixed.two-column{margin-left:-150px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:300px;padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}div.dt-button-collection.three-column{width:450px;padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}div.dt-button-collection.four-column{width:600px;padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}div.dt-button-collection .dt-button{border-radius:0}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0,0,0,0.3)), color-stop(1, rgba(0,0,0,0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:2001}@media screen and (max-width: 640px){div.dt-buttons{float:none !important;text-align:center}}button.dt-button.processing,div.dt-button.processing,a.dt-button.processing{color:rgba(0,0,0,0.2)}button.dt-button.processing:after,div.dt-button.processing:after,a.dt-button.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:' ';border:2px solid #282828;border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear}
\ No newline at end of file
diff --git a/odex30_base/data_chart/static/src/css/dataTables.jqueryui.min.css b/odex30_base/data_chart/static/src/css/dataTables.jqueryui.min.css
new file mode 100644
index 0000000..6025963
--- /dev/null
+++ b/odex30_base/data_chart/static/src/css/dataTables.jqueryui.min.css
@@ -0,0 +1 @@
+table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px}table.dataTable tbody tr{background-color:#ffffff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}}table.dataTable thead th div.DataTables_sort_wrapper{position:relative}table.dataTable thead th div.DataTables_sort_wrapper span{position:absolute;top:50%;margin-top:-8px;right:-18px}table.dataTable thead th.ui-state-default,table.dataTable tfoot th.ui-state-default{border-left-width:0}table.dataTable thead th.ui-state-default:first-child,table.dataTable tfoot th.ui-state-default:first-child{border-left-width:1px}.dataTables_wrapper .dataTables_paginate .fg-button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;border:1px solid transparent}.dataTables_wrapper .dataTables_paginate .fg-button:active{outline:none}.dataTables_wrapper .dataTables_paginate .fg-button:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.dataTables_wrapper .dataTables_paginate .fg-button:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.dataTables_wrapper .ui-widget-header{font-weight:normal}.dataTables_wrapper .ui-toolbar{padding:8px}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:inherit}
\ No newline at end of file
diff --git a/odex30_base/data_chart/static/src/css/datatables.min.css b/odex30_base/data_chart/static/src/css/datatables.min.css
new file mode 100644
index 0000000..d0370e0
--- /dev/null
+++ b/odex30_base/data_chart/static/src/css/datatables.min.css
@@ -0,0 +1,18 @@
+/*
+ * This combined file was created by the DataTables downloader builder:
+ * https://datatables.net/download
+ *
+ * To rebuild or modify this file with the latest versions of the included
+ * software please visit:
+ * https://datatables.net/download/#bs/dt-1.10.18/b-1.5.4/b-html5-1.5.4
+ *
+ * Included libraries:
+ * DataTables 1.10.18, Buttons 1.5.4, HTML5 export 1.5.4
+ */
+
+ table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:8px;right:8px;display:block;font-family:'Glyphicons Halflings';opacity:0.5}table.dataTable thead .sorting:after{opacity:0.2;content:"\e150"}table.dataTable thead .sorting_asc:after{content:"\e155"}table.dataTable thead .sorting_desc:after{content:"\e156"}table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{color:#eee}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody>table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody>table>thead .sorting:after,div.dataTables_scrollBody>table>thead .sorting_asc:after,div.dataTables_scrollBody>table>thead .sorting_desc:after{display:none}div.dataTables_scrollBody>table>tbody>tr:first-child>th,div.dataTables_scrollBody>table>tbody>tr:first-child>td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-condensed>thead>tr>th{padding-right:20px}table.dataTable.table-condensed .sorting:after,table.dataTable.table-condensed .sorting_asc:after,table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0}
+
+
+ @keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,0.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:0.5em;margin:0;font-weight:normal;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}div.dt-button-collection-title{text-align:center;padding:0.3em 0 0.5em;font-size:0.9em}ul.dt-button-collection.dropdown-menu{display:block;z-index:2002;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}ul.dt-button-collection.dropdown-menu.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}ul.dt-button-collection.dropdown-menu.fixed.two-column{margin-left:-150px}ul.dt-button-collection.dropdown-menu.fixed.three-column{margin-left:-225px}ul.dt-button-collection.dropdown-menu.fixed.four-column{margin-left:-300px}ul.dt-button-collection.dropdown-menu>*{-webkit-column-break-inside:avoid;break-inside:avoid}ul.dt-button-collection.dropdown-menu.two-column{width:300px;padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}ul.dt-button-collection.dropdown-menu.three-column{width:450px;padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}ul.dt-button-collection.dropdown-menu.four-column{width:600px;padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}ul.dt-button-collection.dropdown-menu .dt-button{border-radius:0}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2001}@media screen and (max-width: 767px){div.dt-buttons{float:none;width:100%;text-align:center;margin-bottom:0.5em}div.dt-buttons a.btn{float:none}}div.dt-buttons button.btn.processing,div.dt-buttons div.btn.processing,div.dt-buttons a.btn.processing{color:rgba(0,0,0,0.2)}div.dt-buttons button.btn.processing:after,div.dt-buttons div.btn.processing:after,div.dt-buttons a.btn.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:' ';border:2px solid #282828;border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear}
+
+
\ No newline at end of file
diff --git a/odex30_base/data_chart/static/src/css/jquery-simple-tree-table.css b/odex30_base/data_chart/static/src/css/jquery-simple-tree-table.css
new file mode 100644
index 0000000..103d3a4
--- /dev/null
+++ b/odex30_base/data_chart/static/src/css/jquery-simple-tree-table.css
@@ -0,0 +1 @@
+table.simple-tree-table span.tree-icon{display:inline-block;width:12px;margin:5px;padding:0 5px}table.simple-tree-table span.tree-closed,table.simple-tree-table span.tree-opened{background-color:#eee;text-align:center;cursor:pointer}table.simple-tree-table span.tree-icon.tree-opened:after{content:"-"}table.simple-tree-table span.tree-icon.tree-closed:after{content:"+"}
\ No newline at end of file
diff --git a/odex30_base/data_chart/static/src/css/themes/default-dark/32px.png b/odex30_base/data_chart/static/src/css/themes/default-dark/32px.png
new file mode 100644
index 0000000..6039572
Binary files /dev/null and b/odex30_base/data_chart/static/src/css/themes/default-dark/32px.png differ
diff --git a/odex30_base/data_chart/static/src/css/themes/default-dark/40px.png b/odex30_base/data_chart/static/src/css/themes/default-dark/40px.png
new file mode 100644
index 0000000..aae89ad
Binary files /dev/null and b/odex30_base/data_chart/static/src/css/themes/default-dark/40px.png differ
diff --git a/odex30_base/data_chart/static/src/css/themes/default-dark/style.css b/odex30_base/data_chart/static/src/css/themes/default-dark/style.css
new file mode 100644
index 0000000..d8dc188
--- /dev/null
+++ b/odex30_base/data_chart/static/src/css/themes/default-dark/style.css
@@ -0,0 +1,1146 @@
+/* jsTree default dark theme */
+.jstree-node,
+.jstree-children,
+.jstree-container-ul {
+ display: block;
+ margin: 0;
+ padding: 0;
+ list-style-type: none;
+ list-style-image: none;
+}
+.jstree-node {
+ white-space: nowrap;
+}
+.jstree-anchor {
+ display: inline-block;
+ color: black;
+ white-space: nowrap;
+ padding: 0 4px 0 1px;
+ margin: 0;
+ vertical-align: top;
+}
+.jstree-anchor:focus {
+ outline: 0;
+}
+.jstree-anchor,
+.jstree-anchor:link,
+.jstree-anchor:visited,
+.jstree-anchor:hover,
+.jstree-anchor:active {
+ text-decoration: none;
+ color: inherit;
+}
+.jstree-icon {
+ display: inline-block;
+ text-decoration: none;
+ margin: 0;
+ padding: 0;
+ vertical-align: top;
+ text-align: center;
+}
+.jstree-icon:empty {
+ display: inline-block;
+ text-decoration: none;
+ margin: 0;
+ padding: 0;
+ vertical-align: top;
+ text-align: center;
+}
+.jstree-ocl {
+ cursor: pointer;
+}
+.jstree-leaf > .jstree-ocl {
+ cursor: default;
+}
+.jstree .jstree-open > .jstree-children {
+ display: block;
+}
+.jstree .jstree-closed > .jstree-children,
+.jstree .jstree-leaf > .jstree-children {
+ display: none;
+}
+.jstree-anchor > .jstree-themeicon {
+ margin-right: 2px;
+}
+.jstree-no-icons .jstree-themeicon,
+.jstree-anchor > .jstree-themeicon-hidden {
+ display: none;
+}
+.jstree-hidden,
+.jstree-node.jstree-hidden {
+ display: none;
+}
+.jstree-rtl .jstree-anchor {
+ padding: 0 1px 0 4px;
+}
+.jstree-rtl .jstree-anchor > .jstree-themeicon {
+ margin-left: 2px;
+ margin-right: 0;
+}
+.jstree-rtl .jstree-node {
+ margin-left: 0;
+}
+.jstree-rtl .jstree-container-ul > .jstree-node {
+ margin-right: 0;
+}
+.jstree-wholerow-ul {
+ position: relative;
+ display: inline-block;
+ min-width: 100%;
+}
+.jstree-wholerow-ul .jstree-leaf > .jstree-ocl {
+ cursor: pointer;
+}
+.jstree-wholerow-ul .jstree-anchor,
+.jstree-wholerow-ul .jstree-icon {
+ position: relative;
+}
+.jstree-wholerow-ul .jstree-wholerow {
+ width: 100%;
+ cursor: pointer;
+ position: absolute;
+ left: 0;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.jstree-contextmenu .jstree-anchor {
+ -webkit-user-select: none;
+ /* disable selection/Copy of UIWebView */
+ -webkit-touch-callout: none;
+ /* disable the IOS popup when long-press on a link */
+}
+.vakata-context {
+ display: none;
+}
+.vakata-context,
+.vakata-context ul {
+ margin: 0;
+ padding: 2px;
+ position: absolute;
+ background: #f5f5f5;
+ border: 1px solid #979797;
+ box-shadow: 2px 2px 2px #999999;
+}
+.vakata-context ul {
+ list-style: none;
+ left: 100%;
+ margin-top: -2.7em;
+ margin-left: -4px;
+}
+.vakata-context .vakata-context-right ul {
+ left: auto;
+ right: 100%;
+ margin-left: auto;
+ margin-right: -4px;
+}
+.vakata-context li {
+ list-style: none;
+}
+.vakata-context li > a {
+ display: block;
+ padding: 0 2em 0 2em;
+ text-decoration: none;
+ width: auto;
+ color: black;
+ white-space: nowrap;
+ line-height: 2.4em;
+ text-shadow: 1px 1px 0 white;
+ border-radius: 1px;
+}
+.vakata-context li > a:hover {
+ position: relative;
+ background-color: #e8eff7;
+ box-shadow: 0 0 2px #0a6aa1;
+}
+.vakata-context li > a.vakata-context-parent {
+ background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==");
+ background-position: right center;
+ background-repeat: no-repeat;
+}
+.vakata-context li > a:focus {
+ outline: 0;
+}
+.vakata-context .vakata-context-hover > a {
+ position: relative;
+ background-color: #e8eff7;
+ box-shadow: 0 0 2px #0a6aa1;
+}
+.vakata-context .vakata-context-separator > a,
+.vakata-context .vakata-context-separator > a:hover {
+ background: white;
+ border: 0;
+ border-top: 1px solid #e2e3e3;
+ height: 1px;
+ min-height: 1px;
+ max-height: 1px;
+ padding: 0;
+ margin: 0 0 0 2.4em;
+ border-left: 1px solid #e0e0e0;
+ text-shadow: 0 0 0 transparent;
+ box-shadow: 0 0 0 transparent;
+ border-radius: 0;
+}
+.vakata-context .vakata-contextmenu-disabled a,
+.vakata-context .vakata-contextmenu-disabled a:hover {
+ color: silver;
+ background-color: transparent;
+ border: 0;
+ box-shadow: 0 0 0;
+}
+.vakata-context .vakata-contextmenu-disabled > a > i {
+ filter: grayscale(100%);
+}
+.vakata-context li > a > i {
+ text-decoration: none;
+ display: inline-block;
+ width: 2.4em;
+ height: 2.4em;
+ background: transparent;
+ margin: 0 0 0 -2em;
+ vertical-align: top;
+ text-align: center;
+ line-height: 2.4em;
+}
+.vakata-context li > a > i:empty {
+ width: 2.4em;
+ line-height: 2.4em;
+}
+.vakata-context li > a .vakata-contextmenu-sep {
+ display: inline-block;
+ width: 1px;
+ height: 2.4em;
+ background: white;
+ margin: 0 0.5em 0 0;
+ border-left: 1px solid #e2e3e3;
+}
+.vakata-context .vakata-contextmenu-shortcut {
+ font-size: 0.8em;
+ color: silver;
+ opacity: 0.5;
+ display: none;
+}
+.vakata-context-rtl ul {
+ left: auto;
+ right: 100%;
+ margin-left: auto;
+ margin-right: -4px;
+}
+.vakata-context-rtl li > a.vakata-context-parent {
+ background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7");
+ background-position: left center;
+ background-repeat: no-repeat;
+}
+.vakata-context-rtl .vakata-context-separator > a {
+ margin: 0 2.4em 0 0;
+ border-left: 0;
+ border-right: 1px solid #e2e3e3;
+}
+.vakata-context-rtl .vakata-context-left ul {
+ right: auto;
+ left: 100%;
+ margin-left: -4px;
+ margin-right: auto;
+}
+.vakata-context-rtl li > a > i {
+ margin: 0 -2em 0 0;
+}
+.vakata-context-rtl li > a .vakata-contextmenu-sep {
+ margin: 0 0 0 0.5em;
+ border-left-color: white;
+ background: #e2e3e3;
+}
+#jstree-marker {
+ position: absolute;
+ top: 0;
+ left: 0;
+ margin: -5px 0 0 0;
+ padding: 0;
+ border-right: 0;
+ border-top: 5px solid transparent;
+ border-bottom: 5px solid transparent;
+ border-left: 5px solid;
+ width: 0;
+ height: 0;
+ font-size: 0;
+ line-height: 0;
+}
+#jstree-dnd {
+ line-height: 16px;
+ margin: 0;
+ padding: 4px;
+}
+#jstree-dnd .jstree-icon,
+#jstree-dnd .jstree-copy {
+ display: inline-block;
+ text-decoration: none;
+ margin: 0 2px 0 0;
+ padding: 0;
+ width: 16px;
+ height: 16px;
+}
+#jstree-dnd .jstree-ok {
+ background: green;
+}
+#jstree-dnd .jstree-er {
+ background: red;
+}
+#jstree-dnd .jstree-copy {
+ margin: 0 2px 0 2px;
+}
+.jstree-default-dark .jstree-node,
+.jstree-default-dark .jstree-icon {
+ background-repeat: no-repeat;
+ background-color: transparent;
+}
+.jstree-default-dark .jstree-anchor,
+.jstree-default-dark .jstree-animated,
+.jstree-default-dark .jstree-wholerow {
+ transition: background-color 0.15s, box-shadow 0.15s;
+}
+.jstree-default-dark .jstree-hovered {
+ background: #555;
+ border-radius: 2px;
+ box-shadow: inset 0 0 1px #555;
+}
+.jstree-default-dark .jstree-context {
+ background: #555;
+ border-radius: 2px;
+ box-shadow: inset 0 0 1px #555;
+}
+.jstree-default-dark .jstree-clicked {
+ background: #5fa2db;
+ border-radius: 2px;
+ box-shadow: inset 0 0 1px #666666;
+}
+.jstree-default-dark .jstree-no-icons .jstree-anchor > .jstree-themeicon {
+ display: none;
+}
+.jstree-default-dark .jstree-disabled {
+ background: transparent;
+ color: #666666;
+}
+.jstree-default-dark .jstree-disabled.jstree-hovered {
+ background: transparent;
+ box-shadow: none;
+}
+.jstree-default-dark .jstree-disabled.jstree-clicked {
+ background: #333333;
+}
+.jstree-default-dark .jstree-disabled > .jstree-icon {
+ opacity: 0.8;
+ filter: url("data:image/svg+xml;utf8, #jstree-grayscale");
+ /* Firefox 10+ */
+ filter: gray;
+ /* IE6-9 */
+ -webkit-filter: grayscale(100%);
+ /* Chrome 19+ & Safari 6+ */
+}
+.jstree-default-dark .jstree-search {
+ font-style: italic;
+ color: #ffffff;
+ font-weight: bold;
+}
+.jstree-default-dark .jstree-no-checkboxes .jstree-checkbox {
+ display: none !important;
+}
+.jstree-default-dark.jstree-checkbox-no-clicked .jstree-clicked {
+ background: transparent;
+ box-shadow: none;
+}
+.jstree-default-dark.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered {
+ background: #555;
+}
+.jstree-default-dark.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked {
+ background: transparent;
+}
+.jstree-default-dark.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered {
+ background: #555;
+}
+.jstree-default-dark > .jstree-striped {
+ min-width: 100%;
+ display: inline-block;
+ background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==") left top repeat;
+}
+.jstree-default-dark > .jstree-wholerow-ul .jstree-hovered,
+.jstree-default-dark > .jstree-wholerow-ul .jstree-clicked {
+ background: transparent;
+ box-shadow: none;
+ border-radius: 0;
+}
+.jstree-default-dark .jstree-wholerow {
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.jstree-default-dark .jstree-wholerow-hovered {
+ background: #555;
+}
+.jstree-default-dark .jstree-wholerow-clicked {
+ background: #5fa2db;
+ background: -webkit-linear-gradient(top, #5fa2db 0%, #5fa2db 100%);
+ background: linear-gradient(to bottom, #5fa2db 0%, #5fa2db 100%);
+}
+.jstree-default-dark .jstree-node {
+ min-height: 24px;
+ line-height: 24px;
+ margin-left: 24px;
+ min-width: 24px;
+}
+.jstree-default-dark .jstree-anchor {
+ line-height: 24px;
+ height: 24px;
+}
+.jstree-default-dark .jstree-icon {
+ width: 24px;
+ height: 24px;
+ line-height: 24px;
+}
+.jstree-default-dark .jstree-icon:empty {
+ width: 24px;
+ height: 24px;
+ line-height: 24px;
+}
+.jstree-default-dark.jstree-rtl .jstree-node {
+ margin-right: 24px;
+}
+.jstree-default-dark .jstree-wholerow {
+ height: 24px;
+}
+.jstree-default-dark .jstree-node,
+.jstree-default-dark .jstree-icon {
+ background-image: url("32px.png");
+}
+.jstree-default-dark .jstree-node {
+ background-position: -292px -4px;
+ background-repeat: repeat-y;
+}
+.jstree-default-dark .jstree-last {
+ background: transparent;
+}
+.jstree-default-dark .jstree-open > .jstree-ocl {
+ background-position: -132px -4px;
+}
+.jstree-default-dark .jstree-closed > .jstree-ocl {
+ background-position: -100px -4px;
+}
+.jstree-default-dark .jstree-leaf > .jstree-ocl {
+ background-position: -68px -4px;
+}
+.jstree-default-dark .jstree-themeicon {
+ background-position: -260px -4px;
+}
+.jstree-default-dark > .jstree-no-dots .jstree-node,
+.jstree-default-dark > .jstree-no-dots .jstree-leaf > .jstree-ocl {
+ background: transparent;
+}
+.jstree-default-dark > .jstree-no-dots .jstree-open > .jstree-ocl {
+ background-position: -36px -4px;
+}
+.jstree-default-dark > .jstree-no-dots .jstree-closed > .jstree-ocl {
+ background-position: -4px -4px;
+}
+.jstree-default-dark .jstree-disabled {
+ background: transparent;
+}
+.jstree-default-dark .jstree-disabled.jstree-hovered {
+ background: transparent;
+}
+.jstree-default-dark .jstree-disabled.jstree-clicked {
+ background: #efefef;
+}
+.jstree-default-dark .jstree-checkbox {
+ background-position: -164px -4px;
+}
+.jstree-default-dark .jstree-checkbox:hover {
+ background-position: -164px -36px;
+}
+.jstree-default-dark.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox,
+.jstree-default-dark .jstree-checked > .jstree-checkbox {
+ background-position: -228px -4px;
+}
+.jstree-default-dark.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover,
+.jstree-default-dark .jstree-checked > .jstree-checkbox:hover {
+ background-position: -228px -36px;
+}
+.jstree-default-dark .jstree-anchor > .jstree-undetermined {
+ background-position: -196px -4px;
+}
+.jstree-default-dark .jstree-anchor > .jstree-undetermined:hover {
+ background-position: -196px -36px;
+}
+.jstree-default-dark .jstree-checkbox-disabled {
+ opacity: 0.8;
+ filter: url("data:image/svg+xml;utf8, #jstree-grayscale");
+ /* Firefox 10+ */
+ filter: gray;
+ /* IE6-9 */
+ -webkit-filter: grayscale(100%);
+ /* Chrome 19+ & Safari 6+ */
+}
+.jstree-default-dark > .jstree-striped {
+ background-size: auto 48px;
+}
+.jstree-default-dark.jstree-rtl .jstree-node {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");
+ background-position: 100% 1px;
+ background-repeat: repeat-y;
+}
+.jstree-default-dark.jstree-rtl .jstree-last {
+ background: transparent;
+}
+.jstree-default-dark.jstree-rtl .jstree-open > .jstree-ocl {
+ background-position: -132px -36px;
+}
+.jstree-default-dark.jstree-rtl .jstree-closed > .jstree-ocl {
+ background-position: -100px -36px;
+}
+.jstree-default-dark.jstree-rtl .jstree-leaf > .jstree-ocl {
+ background-position: -68px -36px;
+}
+.jstree-default-dark.jstree-rtl > .jstree-no-dots .jstree-node,
+.jstree-default-dark.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl {
+ background: transparent;
+}
+.jstree-default-dark.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl {
+ background-position: -36px -36px;
+}
+.jstree-default-dark.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl {
+ background-position: -4px -36px;
+}
+.jstree-default-dark .jstree-themeicon-custom {
+ background-color: transparent;
+ background-image: none;
+ background-position: 0 0;
+}
+.jstree-default-dark > .jstree-container-ul .jstree-loading > .jstree-ocl {
+ background: url("throbber.gif") center center no-repeat;
+}
+.jstree-default-dark .jstree-file {
+ background: url("32px.png") -100px -68px no-repeat;
+}
+.jstree-default-dark .jstree-folder {
+ background: url("32px.png") -260px -4px no-repeat;
+}
+.jstree-default-dark > .jstree-container-ul > .jstree-node {
+ margin-left: 0;
+ margin-right: 0;
+}
+#jstree-dnd.jstree-default-dark {
+ line-height: 24px;
+ padding: 0 4px;
+}
+#jstree-dnd.jstree-default-dark .jstree-ok,
+#jstree-dnd.jstree-default-dark .jstree-er {
+ background-image: url("32px.png");
+ background-repeat: no-repeat;
+ background-color: transparent;
+}
+#jstree-dnd.jstree-default-dark i {
+ background: transparent;
+ width: 24px;
+ height: 24px;
+ line-height: 24px;
+}
+#jstree-dnd.jstree-default-dark .jstree-ok {
+ background-position: -4px -68px;
+}
+#jstree-dnd.jstree-default-dark .jstree-er {
+ background-position: -36px -68px;
+}
+.jstree-default-dark .jstree-ellipsis {
+ overflow: hidden;
+}
+.jstree-default-dark .jstree-ellipsis .jstree-anchor {
+ width: calc(100% - 29px);
+ text-overflow: ellipsis;
+ overflow: hidden;
+}
+.jstree-default-dark.jstree-rtl .jstree-node {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");
+}
+.jstree-default-dark.jstree-rtl .jstree-last {
+ background: transparent;
+}
+.jstree-default-dark-small .jstree-node {
+ min-height: 18px;
+ line-height: 18px;
+ margin-left: 18px;
+ min-width: 18px;
+}
+.jstree-default-dark-small .jstree-anchor {
+ line-height: 18px;
+ height: 18px;
+}
+.jstree-default-dark-small .jstree-icon {
+ width: 18px;
+ height: 18px;
+ line-height: 18px;
+}
+.jstree-default-dark-small .jstree-icon:empty {
+ width: 18px;
+ height: 18px;
+ line-height: 18px;
+}
+.jstree-default-dark-small.jstree-rtl .jstree-node {
+ margin-right: 18px;
+}
+.jstree-default-dark-small .jstree-wholerow {
+ height: 18px;
+}
+.jstree-default-dark-small .jstree-node,
+.jstree-default-dark-small .jstree-icon {
+ background-image: url("32px.png");
+}
+.jstree-default-dark-small .jstree-node {
+ background-position: -295px -7px;
+ background-repeat: repeat-y;
+}
+.jstree-default-dark-small .jstree-last {
+ background: transparent;
+}
+.jstree-default-dark-small .jstree-open > .jstree-ocl {
+ background-position: -135px -7px;
+}
+.jstree-default-dark-small .jstree-closed > .jstree-ocl {
+ background-position: -103px -7px;
+}
+.jstree-default-dark-small .jstree-leaf > .jstree-ocl {
+ background-position: -71px -7px;
+}
+.jstree-default-dark-small .jstree-themeicon {
+ background-position: -263px -7px;
+}
+.jstree-default-dark-small > .jstree-no-dots .jstree-node,
+.jstree-default-dark-small > .jstree-no-dots .jstree-leaf > .jstree-ocl {
+ background: transparent;
+}
+.jstree-default-dark-small > .jstree-no-dots .jstree-open > .jstree-ocl {
+ background-position: -39px -7px;
+}
+.jstree-default-dark-small > .jstree-no-dots .jstree-closed > .jstree-ocl {
+ background-position: -7px -7px;
+}
+.jstree-default-dark-small .jstree-disabled {
+ background: transparent;
+}
+.jstree-default-dark-small .jstree-disabled.jstree-hovered {
+ background: transparent;
+}
+.jstree-default-dark-small .jstree-disabled.jstree-clicked {
+ background: #efefef;
+}
+.jstree-default-dark-small .jstree-checkbox {
+ background-position: -167px -7px;
+}
+.jstree-default-dark-small .jstree-checkbox:hover {
+ background-position: -167px -39px;
+}
+.jstree-default-dark-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox,
+.jstree-default-dark-small .jstree-checked > .jstree-checkbox {
+ background-position: -231px -7px;
+}
+.jstree-default-dark-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover,
+.jstree-default-dark-small .jstree-checked > .jstree-checkbox:hover {
+ background-position: -231px -39px;
+}
+.jstree-default-dark-small .jstree-anchor > .jstree-undetermined {
+ background-position: -199px -7px;
+}
+.jstree-default-dark-small .jstree-anchor > .jstree-undetermined:hover {
+ background-position: -199px -39px;
+}
+.jstree-default-dark-small .jstree-checkbox-disabled {
+ opacity: 0.8;
+ filter: url("data:image/svg+xml;utf8, #jstree-grayscale");
+ /* Firefox 10+ */
+ filter: gray;
+ /* IE6-9 */
+ -webkit-filter: grayscale(100%);
+ /* Chrome 19+ & Safari 6+ */
+}
+.jstree-default-dark-small > .jstree-striped {
+ background-size: auto 36px;
+}
+.jstree-default-dark-small.jstree-rtl .jstree-node {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");
+ background-position: 100% 1px;
+ background-repeat: repeat-y;
+}
+.jstree-default-dark-small.jstree-rtl .jstree-last {
+ background: transparent;
+}
+.jstree-default-dark-small.jstree-rtl .jstree-open > .jstree-ocl {
+ background-position: -135px -39px;
+}
+.jstree-default-dark-small.jstree-rtl .jstree-closed > .jstree-ocl {
+ background-position: -103px -39px;
+}
+.jstree-default-dark-small.jstree-rtl .jstree-leaf > .jstree-ocl {
+ background-position: -71px -39px;
+}
+.jstree-default-dark-small.jstree-rtl > .jstree-no-dots .jstree-node,
+.jstree-default-dark-small.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl {
+ background: transparent;
+}
+.jstree-default-dark-small.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl {
+ background-position: -39px -39px;
+}
+.jstree-default-dark-small.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl {
+ background-position: -7px -39px;
+}
+.jstree-default-dark-small .jstree-themeicon-custom {
+ background-color: transparent;
+ background-image: none;
+ background-position: 0 0;
+}
+.jstree-default-dark-small > .jstree-container-ul .jstree-loading > .jstree-ocl {
+ background: url("throbber.gif") center center no-repeat;
+}
+.jstree-default-dark-small .jstree-file {
+ background: url("32px.png") -103px -71px no-repeat;
+}
+.jstree-default-dark-small .jstree-folder {
+ background: url("32px.png") -263px -7px no-repeat;
+}
+.jstree-default-dark-small > .jstree-container-ul > .jstree-node {
+ margin-left: 0;
+ margin-right: 0;
+}
+#jstree-dnd.jstree-default-dark-small {
+ line-height: 18px;
+ padding: 0 4px;
+}
+#jstree-dnd.jstree-default-dark-small .jstree-ok,
+#jstree-dnd.jstree-default-dark-small .jstree-er {
+ background-image: url("32px.png");
+ background-repeat: no-repeat;
+ background-color: transparent;
+}
+#jstree-dnd.jstree-default-dark-small i {
+ background: transparent;
+ width: 18px;
+ height: 18px;
+ line-height: 18px;
+}
+#jstree-dnd.jstree-default-dark-small .jstree-ok {
+ background-position: -7px -71px;
+}
+#jstree-dnd.jstree-default-dark-small .jstree-er {
+ background-position: -39px -71px;
+}
+.jstree-default-dark-small .jstree-ellipsis {
+ overflow: hidden;
+}
+.jstree-default-dark-small .jstree-ellipsis .jstree-anchor {
+ width: calc(100% - 23px);
+ text-overflow: ellipsis;
+ overflow: hidden;
+}
+.jstree-default-dark-small.jstree-rtl .jstree-node {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==");
+}
+.jstree-default-dark-small.jstree-rtl .jstree-last {
+ background: transparent;
+}
+.jstree-default-dark-large .jstree-node {
+ min-height: 32px;
+ line-height: 32px;
+ margin-left: 32px;
+ min-width: 32px;
+}
+.jstree-default-dark-large .jstree-anchor {
+ line-height: 32px;
+ height: 32px;
+}
+.jstree-default-dark-large .jstree-icon {
+ width: 32px;
+ height: 32px;
+ line-height: 32px;
+}
+.jstree-default-dark-large .jstree-icon:empty {
+ width: 32px;
+ height: 32px;
+ line-height: 32px;
+}
+.jstree-default-dark-large.jstree-rtl .jstree-node {
+ margin-right: 32px;
+}
+.jstree-default-dark-large .jstree-wholerow {
+ height: 32px;
+}
+.jstree-default-dark-large .jstree-node,
+.jstree-default-dark-large .jstree-icon {
+ background-image: url("32px.png");
+}
+.jstree-default-dark-large .jstree-node {
+ background-position: -288px 0px;
+ background-repeat: repeat-y;
+}
+.jstree-default-dark-large .jstree-last {
+ background: transparent;
+}
+.jstree-default-dark-large .jstree-open > .jstree-ocl {
+ background-position: -128px 0px;
+}
+.jstree-default-dark-large .jstree-closed > .jstree-ocl {
+ background-position: -96px 0px;
+}
+.jstree-default-dark-large .jstree-leaf > .jstree-ocl {
+ background-position: -64px 0px;
+}
+.jstree-default-dark-large .jstree-themeicon {
+ background-position: -256px 0px;
+}
+.jstree-default-dark-large > .jstree-no-dots .jstree-node,
+.jstree-default-dark-large > .jstree-no-dots .jstree-leaf > .jstree-ocl {
+ background: transparent;
+}
+.jstree-default-dark-large > .jstree-no-dots .jstree-open > .jstree-ocl {
+ background-position: -32px 0px;
+}
+.jstree-default-dark-large > .jstree-no-dots .jstree-closed > .jstree-ocl {
+ background-position: 0px 0px;
+}
+.jstree-default-dark-large .jstree-disabled {
+ background: transparent;
+}
+.jstree-default-dark-large .jstree-disabled.jstree-hovered {
+ background: transparent;
+}
+.jstree-default-dark-large .jstree-disabled.jstree-clicked {
+ background: #efefef;
+}
+.jstree-default-dark-large .jstree-checkbox {
+ background-position: -160px 0px;
+}
+.jstree-default-dark-large .jstree-checkbox:hover {
+ background-position: -160px -32px;
+}
+.jstree-default-dark-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox,
+.jstree-default-dark-large .jstree-checked > .jstree-checkbox {
+ background-position: -224px 0px;
+}
+.jstree-default-dark-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover,
+.jstree-default-dark-large .jstree-checked > .jstree-checkbox:hover {
+ background-position: -224px -32px;
+}
+.jstree-default-dark-large .jstree-anchor > .jstree-undetermined {
+ background-position: -192px 0px;
+}
+.jstree-default-dark-large .jstree-anchor > .jstree-undetermined:hover {
+ background-position: -192px -32px;
+}
+.jstree-default-dark-large .jstree-checkbox-disabled {
+ opacity: 0.8;
+ filter: url("data:image/svg+xml;utf8, #jstree-grayscale");
+ /* Firefox 10+ */
+ filter: gray;
+ /* IE6-9 */
+ -webkit-filter: grayscale(100%);
+ /* Chrome 19+ & Safari 6+ */
+}
+.jstree-default-dark-large > .jstree-striped {
+ background-size: auto 64px;
+}
+.jstree-default-dark-large.jstree-rtl .jstree-node {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");
+ background-position: 100% 1px;
+ background-repeat: repeat-y;
+}
+.jstree-default-dark-large.jstree-rtl .jstree-last {
+ background: transparent;
+}
+.jstree-default-dark-large.jstree-rtl .jstree-open > .jstree-ocl {
+ background-position: -128px -32px;
+}
+.jstree-default-dark-large.jstree-rtl .jstree-closed > .jstree-ocl {
+ background-position: -96px -32px;
+}
+.jstree-default-dark-large.jstree-rtl .jstree-leaf > .jstree-ocl {
+ background-position: -64px -32px;
+}
+.jstree-default-dark-large.jstree-rtl > .jstree-no-dots .jstree-node,
+.jstree-default-dark-large.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl {
+ background: transparent;
+}
+.jstree-default-dark-large.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl {
+ background-position: -32px -32px;
+}
+.jstree-default-dark-large.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl {
+ background-position: 0px -32px;
+}
+.jstree-default-dark-large .jstree-themeicon-custom {
+ background-color: transparent;
+ background-image: none;
+ background-position: 0 0;
+}
+.jstree-default-dark-large > .jstree-container-ul .jstree-loading > .jstree-ocl {
+ background: url("throbber.gif") center center no-repeat;
+}
+.jstree-default-dark-large .jstree-file {
+ background: url("32px.png") -96px -64px no-repeat;
+}
+.jstree-default-dark-large .jstree-folder {
+ background: url("32px.png") -256px 0px no-repeat;
+}
+.jstree-default-dark-large > .jstree-container-ul > .jstree-node {
+ margin-left: 0;
+ margin-right: 0;
+}
+#jstree-dnd.jstree-default-dark-large {
+ line-height: 32px;
+ padding: 0 4px;
+}
+#jstree-dnd.jstree-default-dark-large .jstree-ok,
+#jstree-dnd.jstree-default-dark-large .jstree-er {
+ background-image: url("32px.png");
+ background-repeat: no-repeat;
+ background-color: transparent;
+}
+#jstree-dnd.jstree-default-dark-large i {
+ background: transparent;
+ width: 32px;
+ height: 32px;
+ line-height: 32px;
+}
+#jstree-dnd.jstree-default-dark-large .jstree-ok {
+ background-position: 0px -64px;
+}
+#jstree-dnd.jstree-default-dark-large .jstree-er {
+ background-position: -32px -64px;
+}
+.jstree-default-dark-large .jstree-ellipsis {
+ overflow: hidden;
+}
+.jstree-default-dark-large .jstree-ellipsis .jstree-anchor {
+ width: calc(100% - 37px);
+ text-overflow: ellipsis;
+ overflow: hidden;
+}
+.jstree-default-dark-large.jstree-rtl .jstree-node {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==");
+}
+.jstree-default-dark-large.jstree-rtl .jstree-last {
+ background: transparent;
+}
+@media (max-width: 768px) {
+ #jstree-dnd.jstree-dnd-responsive {
+ line-height: 40px;
+ font-weight: bold;
+ font-size: 1.1em;
+ text-shadow: 1px 1px white;
+ }
+ #jstree-dnd.jstree-dnd-responsive > i {
+ background: transparent;
+ width: 40px;
+ height: 40px;
+ }
+ #jstree-dnd.jstree-dnd-responsive > .jstree-ok {
+ background-image: url("40px.png");
+ background-position: 0 -200px;
+ background-size: 120px 240px;
+ }
+ #jstree-dnd.jstree-dnd-responsive > .jstree-er {
+ background-image: url("40px.png");
+ background-position: -40px -200px;
+ background-size: 120px 240px;
+ }
+ #jstree-marker.jstree-dnd-responsive {
+ border-left-width: 10px;
+ border-top-width: 10px;
+ border-bottom-width: 10px;
+ margin-top: -10px;
+ }
+}
+@media (max-width: 768px) {
+ .jstree-default-dark-responsive {
+ /*
+ .jstree-open > .jstree-ocl,
+ .jstree-closed > .jstree-ocl { border-radius:20px; background-color:white; }
+ */
+ }
+ .jstree-default-dark-responsive .jstree-icon {
+ background-image: url("40px.png");
+ }
+ .jstree-default-dark-responsive .jstree-node,
+ .jstree-default-dark-responsive .jstree-leaf > .jstree-ocl {
+ background: transparent;
+ }
+ .jstree-default-dark-responsive .jstree-node {
+ min-height: 40px;
+ line-height: 40px;
+ margin-left: 40px;
+ min-width: 40px;
+ white-space: nowrap;
+ }
+ .jstree-default-dark-responsive .jstree-anchor {
+ line-height: 40px;
+ height: 40px;
+ }
+ .jstree-default-dark-responsive .jstree-icon,
+ .jstree-default-dark-responsive .jstree-icon:empty {
+ width: 40px;
+ height: 40px;
+ line-height: 40px;
+ }
+ .jstree-default-dark-responsive > .jstree-container-ul > .jstree-node {
+ margin-left: 0;
+ }
+ .jstree-default-dark-responsive.jstree-rtl .jstree-node {
+ margin-left: 0;
+ margin-right: 40px;
+ background: transparent;
+ }
+ .jstree-default-dark-responsive.jstree-rtl .jstree-container-ul > .jstree-node {
+ margin-right: 0;
+ }
+ .jstree-default-dark-responsive .jstree-ocl,
+ .jstree-default-dark-responsive .jstree-themeicon,
+ .jstree-default-dark-responsive .jstree-checkbox {
+ background-size: 120px 240px;
+ }
+ .jstree-default-dark-responsive .jstree-leaf > .jstree-ocl,
+ .jstree-default-dark-responsive.jstree-rtl .jstree-leaf > .jstree-ocl {
+ background: transparent;
+ }
+ .jstree-default-dark-responsive .jstree-open > .jstree-ocl {
+ background-position: 0 0 !important;
+ }
+ .jstree-default-dark-responsive .jstree-closed > .jstree-ocl {
+ background-position: 0 -40px !important;
+ }
+ .jstree-default-dark-responsive.jstree-rtl .jstree-closed > .jstree-ocl {
+ background-position: -40px 0 !important;
+ }
+ .jstree-default-dark-responsive .jstree-themeicon {
+ background-position: -40px -40px;
+ }
+ .jstree-default-dark-responsive .jstree-checkbox,
+ .jstree-default-dark-responsive .jstree-checkbox:hover {
+ background-position: -40px -80px;
+ }
+ .jstree-default-dark-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox,
+ .jstree-default-dark-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover,
+ .jstree-default-dark-responsive .jstree-checked > .jstree-checkbox,
+ .jstree-default-dark-responsive .jstree-checked > .jstree-checkbox:hover {
+ background-position: 0 -80px;
+ }
+ .jstree-default-dark-responsive .jstree-anchor > .jstree-undetermined,
+ .jstree-default-dark-responsive .jstree-anchor > .jstree-undetermined:hover {
+ background-position: 0 -120px;
+ }
+ .jstree-default-dark-responsive .jstree-anchor {
+ font-weight: bold;
+ font-size: 1.1em;
+ text-shadow: 1px 1px white;
+ }
+ .jstree-default-dark-responsive > .jstree-striped {
+ background: transparent;
+ }
+ .jstree-default-dark-responsive .jstree-wholerow {
+ border-top: 1px solid #666;
+ border-bottom: 1px solid #000;
+ background: #333333;
+ height: 40px;
+ }
+ .jstree-default-dark-responsive .jstree-wholerow-hovered {
+ background: #555;
+ }
+ .jstree-default-dark-responsive .jstree-wholerow-clicked {
+ background: #5fa2db;
+ }
+ .jstree-default-dark-responsive .jstree-children .jstree-last > .jstree-wholerow {
+ box-shadow: inset 0 -6px 3px -5px #111111;
+ }
+ .jstree-default-dark-responsive .jstree-children .jstree-open > .jstree-wholerow {
+ box-shadow: inset 0 6px 3px -5px #111111;
+ border-top: 0;
+ }
+ .jstree-default-dark-responsive .jstree-children .jstree-open + .jstree-open {
+ box-shadow: none;
+ }
+ .jstree-default-dark-responsive .jstree-node,
+ .jstree-default-dark-responsive .jstree-icon,
+ .jstree-default-dark-responsive .jstree-node > .jstree-ocl,
+ .jstree-default-dark-responsive .jstree-themeicon,
+ .jstree-default-dark-responsive .jstree-checkbox {
+ background-image: url("40px.png");
+ background-size: 120px 240px;
+ }
+ .jstree-default-dark-responsive .jstree-node {
+ background-position: -80px 0;
+ background-repeat: repeat-y;
+ }
+ .jstree-default-dark-responsive .jstree-last {
+ background: transparent;
+ }
+ .jstree-default-dark-responsive .jstree-leaf > .jstree-ocl {
+ background-position: -40px -120px;
+ }
+ .jstree-default-dark-responsive .jstree-last > .jstree-ocl {
+ background-position: -40px -160px;
+ }
+ .jstree-default-dark-responsive .jstree-themeicon-custom {
+ background-color: transparent;
+ background-image: none;
+ background-position: 0 0;
+ }
+ .jstree-default-dark-responsive .jstree-file {
+ background: url("40px.png") 0 -160px no-repeat;
+ background-size: 120px 240px;
+ }
+ .jstree-default-dark-responsive .jstree-folder {
+ background: url("40px.png") -40px -40px no-repeat;
+ background-size: 120px 240px;
+ }
+ .jstree-default-dark-responsive > .jstree-container-ul > .jstree-node {
+ margin-left: 0;
+ margin-right: 0;
+ }
+}
+.jstree-default-dark {
+ background: #333;
+}
+.jstree-default-dark .jstree-anchor {
+ color: #999;
+ text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5);
+}
+.jstree-default-dark .jstree-clicked,
+.jstree-default-dark .jstree-checked {
+ color: white;
+}
+.jstree-default-dark .jstree-hovered {
+ color: white;
+}
+#jstree-marker.jstree-default-dark {
+ border-left-color: #999;
+ background: transparent;
+}
+.jstree-default-dark .jstree-anchor > .jstree-icon {
+ opacity: 0.75;
+}
+.jstree-default-dark .jstree-clicked > .jstree-icon,
+.jstree-default-dark .jstree-hovered > .jstree-icon,
+.jstree-default-dark .jstree-checked > .jstree-icon {
+ opacity: 1;
+}
+.jstree-default-dark.jstree-rtl .jstree-node {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");
+}
+.jstree-default-dark.jstree-rtl .jstree-last {
+ background: transparent;
+}
+.jstree-default-dark-small.jstree-rtl .jstree-node {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==");
+}
+.jstree-default-dark-small.jstree-rtl .jstree-last {
+ background: transparent;
+}
+.jstree-default-dark-large.jstree-rtl .jstree-node {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==");
+}
+.jstree-default-dark-large.jstree-rtl .jstree-last {
+ background: transparent;
+}
diff --git a/odex30_base/data_chart/static/src/css/themes/default-dark/style.min.css b/odex30_base/data_chart/static/src/css/themes/default-dark/style.min.css
new file mode 100644
index 0000000..fb1d236
--- /dev/null
+++ b/odex30_base/data_chart/static/src/css/themes/default-dark/style.min.css
@@ -0,0 +1 @@
+.jstree-node,.jstree-children,.jstree-container-ul{display:block;margin:0;padding:0;list-style-type:none;list-style-image:none}.jstree-node{white-space:nowrap}.jstree-anchor{display:inline-block;color:black;white-space:nowrap;padding:0 4px 0 1px;margin:0;vertical-align:top}.jstree-anchor:focus{outline:0}.jstree-anchor,.jstree-anchor:link,.jstree-anchor:visited,.jstree-anchor:hover,.jstree-anchor:active{text-decoration:none;color:inherit}.jstree-icon{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-icon:empty{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-ocl{cursor:pointer}.jstree-leaf>.jstree-ocl{cursor:default}.jstree .jstree-open>.jstree-children{display:block}.jstree .jstree-closed>.jstree-children,.jstree .jstree-leaf>.jstree-children{display:none}.jstree-anchor>.jstree-themeicon{margin-right:2px}.jstree-no-icons .jstree-themeicon,.jstree-anchor>.jstree-themeicon-hidden{display:none}.jstree-hidden,.jstree-node.jstree-hidden{display:none}.jstree-rtl .jstree-anchor{padding:0 1px 0 4px}.jstree-rtl .jstree-anchor>.jstree-themeicon{margin-left:2px;margin-right:0}.jstree-rtl .jstree-node{margin-left:0}.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-wholerow-ul{position:relative;display:inline-block;min-width:100%}.jstree-wholerow-ul .jstree-leaf>.jstree-ocl{cursor:pointer}.jstree-wholerow-ul .jstree-anchor,.jstree-wholerow-ul .jstree-icon{position:relative}.jstree-wholerow-ul .jstree-wholerow{width:100%;cursor:pointer;position:absolute;left:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.jstree-contextmenu .jstree-anchor{-webkit-user-select:none;-webkit-touch-callout:none}.vakata-context{display:none}.vakata-context,.vakata-context ul{margin:0;padding:2px;position:absolute;background:#f5f5f5;border:1px solid #979797;box-shadow:2px 2px 2px #999999}.vakata-context ul{list-style:none;left:100%;margin-top:-2.7em;margin-left:-4px}.vakata-context .vakata-context-right ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context li{list-style:none}.vakata-context li>a{display:block;padding:0 2em 0 2em;text-decoration:none;width:auto;color:black;white-space:nowrap;line-height:2.4em;text-shadow:1px 1px 0 white;border-radius:1px}.vakata-context li>a:hover{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context li>a.vakata-context-parent{background-image:url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==");background-position:right center;background-repeat:no-repeat}.vakata-context li>a:focus{outline:0}.vakata-context .vakata-context-hover>a{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context .vakata-context-separator>a,.vakata-context .vakata-context-separator>a:hover{background:white;border:0;border-top:1px solid #e2e3e3;height:1px;min-height:1px;max-height:1px;padding:0;margin:0 0 0 2.4em;border-left:1px solid #e0e0e0;text-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;border-radius:0}.vakata-context .vakata-contextmenu-disabled a,.vakata-context .vakata-contextmenu-disabled a:hover{color:silver;background-color:transparent;border:0;box-shadow:0 0 0}.vakata-context .vakata-contextmenu-disabled>a>i{filter:grayscale(100%)}.vakata-context li>a>i{text-decoration:none;display:inline-block;width:2.4em;height:2.4em;background:transparent;margin:0 0 0 -2em;vertical-align:top;text-align:center;line-height:2.4em}.vakata-context li>a>i:empty{width:2.4em;line-height:2.4em}.vakata-context li>a .vakata-contextmenu-sep{display:inline-block;width:1px;height:2.4em;background:white;margin:0 .5em 0 0;border-left:1px solid #e2e3e3}.vakata-context .vakata-contextmenu-shortcut{font-size:.8em;color:silver;opacity:.5;display:none}.vakata-context-rtl ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context-rtl li>a.vakata-context-parent{background-image:url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7");background-position:left center;background-repeat:no-repeat}.vakata-context-rtl .vakata-context-separator>a{margin:0 2.4em 0 0;border-left:0;border-right:1px solid #e2e3e3}.vakata-context-rtl .vakata-context-left ul{right:auto;left:100%;margin-left:-4px;margin-right:auto}.vakata-context-rtl li>a>i{margin:0 -2em 0 0}.vakata-context-rtl li>a .vakata-contextmenu-sep{margin:0 0 0 .5em;border-left-color:white;background:#e2e3e3}#jstree-marker{position:absolute;top:0;left:0;margin:-5px 0 0 0;padding:0;border-right:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid;width:0;height:0;font-size:0;line-height:0}#jstree-dnd{line-height:16px;margin:0;padding:4px}#jstree-dnd .jstree-icon,#jstree-dnd .jstree-copy{display:inline-block;text-decoration:none;margin:0 2px 0 0;padding:0;width:16px;height:16px}#jstree-dnd .jstree-ok{background:green}#jstree-dnd .jstree-er{background:red}#jstree-dnd .jstree-copy{margin:0 2px 0 2px}.jstree-default-dark .jstree-node,.jstree-default-dark .jstree-icon{background-repeat:no-repeat;background-color:transparent}.jstree-default-dark .jstree-anchor,.jstree-default-dark .jstree-animated,.jstree-default-dark .jstree-wholerow{transition:background-color .15s,box-shadow .15s}.jstree-default-dark .jstree-hovered{background:#555;border-radius:2px;box-shadow:inset 0 0 1px #555}.jstree-default-dark .jstree-context{background:#555;border-radius:2px;box-shadow:inset 0 0 1px #555}.jstree-default-dark .jstree-clicked{background:#5fa2db;border-radius:2px;box-shadow:inset 0 0 1px #666666}.jstree-default-dark .jstree-no-icons .jstree-anchor>.jstree-themeicon{display:none}.jstree-default-dark .jstree-disabled{background:transparent;color:#666666}.jstree-default-dark .jstree-disabled.jstree-hovered{background:transparent;box-shadow:none}.jstree-default-dark .jstree-disabled.jstree-clicked{background:#333333}.jstree-default-dark .jstree-disabled>.jstree-icon{opacity:.8;filter:url("data:image/svg+xml;utf8, #jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-dark .jstree-search{font-style:italic;color:#ffffff;font-weight:bold}.jstree-default-dark .jstree-no-checkboxes .jstree-checkbox{display:none !important}.jstree-default-dark.jstree-checkbox-no-clicked .jstree-clicked{background:transparent;box-shadow:none}.jstree-default-dark.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered{background:#555}.jstree-default-dark.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked{background:transparent}.jstree-default-dark.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered{background:#555}.jstree-default-dark>.jstree-striped{min-width:100%;display:inline-block;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==") left top repeat}.jstree-default-dark>.jstree-wholerow-ul .jstree-hovered,.jstree-default-dark>.jstree-wholerow-ul .jstree-clicked{background:transparent;box-shadow:none;border-radius:0}.jstree-default-dark .jstree-wholerow{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.jstree-default-dark .jstree-wholerow-hovered{background:#555}.jstree-default-dark .jstree-wholerow-clicked{background:#5fa2db;background:-webkit-linear-gradient(top, #5fa2db 0, #5fa2db 100%);background:linear-gradient(to bottom, #5fa2db 0, #5fa2db 100%)}.jstree-default-dark .jstree-node{min-height:24px;line-height:24px;margin-left:24px;min-width:24px}.jstree-default-dark .jstree-anchor{line-height:24px;height:24px}.jstree-default-dark .jstree-icon{width:24px;height:24px;line-height:24px}.jstree-default-dark .jstree-icon:empty{width:24px;height:24px;line-height:24px}.jstree-default-dark.jstree-rtl .jstree-node{margin-right:24px}.jstree-default-dark .jstree-wholerow{height:24px}.jstree-default-dark .jstree-node,.jstree-default-dark .jstree-icon{background-image:url("32px.png")}.jstree-default-dark .jstree-node{background-position:-292px -4px;background-repeat:repeat-y}.jstree-default-dark .jstree-last{background:transparent}.jstree-default-dark .jstree-open>.jstree-ocl{background-position:-132px -4px}.jstree-default-dark .jstree-closed>.jstree-ocl{background-position:-100px -4px}.jstree-default-dark .jstree-leaf>.jstree-ocl{background-position:-68px -4px}.jstree-default-dark .jstree-themeicon{background-position:-260px -4px}.jstree-default-dark>.jstree-no-dots .jstree-node,.jstree-default-dark>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:transparent}.jstree-default-dark>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -4px}.jstree-default-dark>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -4px}.jstree-default-dark .jstree-disabled{background:transparent}.jstree-default-dark .jstree-disabled.jstree-hovered{background:transparent}.jstree-default-dark .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-dark .jstree-checkbox{background-position:-164px -4px}.jstree-default-dark .jstree-checkbox:hover{background-position:-164px -36px}.jstree-default-dark.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-dark .jstree-checked>.jstree-checkbox{background-position:-228px -4px}.jstree-default-dark.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-dark .jstree-checked>.jstree-checkbox:hover{background-position:-228px -36px}.jstree-default-dark .jstree-anchor>.jstree-undetermined{background-position:-196px -4px}.jstree-default-dark .jstree-anchor>.jstree-undetermined:hover{background-position:-196px -36px}.jstree-default-dark .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8, #jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-dark>.jstree-striped{background-size:auto 48px}.jstree-default-dark.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");background-position:100% 1px;background-repeat:repeat-y}.jstree-default-dark.jstree-rtl .jstree-last{background:transparent}.jstree-default-dark.jstree-rtl .jstree-open>.jstree-ocl{background-position:-132px -36px}.jstree-default-dark.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-100px -36px}.jstree-default-dark.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-68px -36px}.jstree-default-dark.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-dark.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:transparent}.jstree-default-dark.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -36px}.jstree-default-dark.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -36px}.jstree-default-dark .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-dark>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url("throbber.gif") center center no-repeat}.jstree-default-dark .jstree-file{background:url("32px.png") -100px -68px no-repeat}.jstree-default-dark .jstree-folder{background:url("32px.png") -260px -4px no-repeat}.jstree-default-dark>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-dark{line-height:24px;padding:0 4px}#jstree-dnd.jstree-default-dark .jstree-ok,#jstree-dnd.jstree-default-dark .jstree-er{background-image:url("32px.png");background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-dark i{background:transparent;width:24px;height:24px;line-height:24px}#jstree-dnd.jstree-default-dark .jstree-ok{background-position:-4px -68px}#jstree-dnd.jstree-default-dark .jstree-er{background-position:-36px -68px}.jstree-default-dark .jstree-ellipsis{overflow:hidden}.jstree-default-dark .jstree-ellipsis .jstree-anchor{width:calc(100% - 29px);text-overflow:ellipsis;overflow:hidden}.jstree-default-dark.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==")}.jstree-default-dark.jstree-rtl .jstree-last{background:transparent}.jstree-default-dark-small .jstree-node{min-height:18px;line-height:18px;margin-left:18px;min-width:18px}.jstree-default-dark-small .jstree-anchor{line-height:18px;height:18px}.jstree-default-dark-small .jstree-icon{width:18px;height:18px;line-height:18px}.jstree-default-dark-small .jstree-icon:empty{width:18px;height:18px;line-height:18px}.jstree-default-dark-small.jstree-rtl .jstree-node{margin-right:18px}.jstree-default-dark-small .jstree-wholerow{height:18px}.jstree-default-dark-small .jstree-node,.jstree-default-dark-small .jstree-icon{background-image:url("32px.png")}.jstree-default-dark-small .jstree-node{background-position:-295px -7px;background-repeat:repeat-y}.jstree-default-dark-small .jstree-last{background:transparent}.jstree-default-dark-small .jstree-open>.jstree-ocl{background-position:-135px -7px}.jstree-default-dark-small .jstree-closed>.jstree-ocl{background-position:-103px -7px}.jstree-default-dark-small .jstree-leaf>.jstree-ocl{background-position:-71px -7px}.jstree-default-dark-small .jstree-themeicon{background-position:-263px -7px}.jstree-default-dark-small>.jstree-no-dots .jstree-node,.jstree-default-dark-small>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:transparent}.jstree-default-dark-small>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -7px}.jstree-default-dark-small>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -7px}.jstree-default-dark-small .jstree-disabled{background:transparent}.jstree-default-dark-small .jstree-disabled.jstree-hovered{background:transparent}.jstree-default-dark-small .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-dark-small .jstree-checkbox{background-position:-167px -7px}.jstree-default-dark-small .jstree-checkbox:hover{background-position:-167px -39px}.jstree-default-dark-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-dark-small .jstree-checked>.jstree-checkbox{background-position:-231px -7px}.jstree-default-dark-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-dark-small .jstree-checked>.jstree-checkbox:hover{background-position:-231px -39px}.jstree-default-dark-small .jstree-anchor>.jstree-undetermined{background-position:-199px -7px}.jstree-default-dark-small .jstree-anchor>.jstree-undetermined:hover{background-position:-199px -39px}.jstree-default-dark-small .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8, #jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-dark-small>.jstree-striped{background-size:auto 36px}.jstree-default-dark-small.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");background-position:100% 1px;background-repeat:repeat-y}.jstree-default-dark-small.jstree-rtl .jstree-last{background:transparent}.jstree-default-dark-small.jstree-rtl .jstree-open>.jstree-ocl{background-position:-135px -39px}.jstree-default-dark-small.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-103px -39px}.jstree-default-dark-small.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-71px -39px}.jstree-default-dark-small.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-dark-small.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:transparent}.jstree-default-dark-small.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -39px}.jstree-default-dark-small.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -39px}.jstree-default-dark-small .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-dark-small>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url("throbber.gif") center center no-repeat}.jstree-default-dark-small .jstree-file{background:url("32px.png") -103px -71px no-repeat}.jstree-default-dark-small .jstree-folder{background:url("32px.png") -263px -7px no-repeat}.jstree-default-dark-small>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-dark-small{line-height:18px;padding:0 4px}#jstree-dnd.jstree-default-dark-small .jstree-ok,#jstree-dnd.jstree-default-dark-small .jstree-er{background-image:url("32px.png");background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-dark-small i{background:transparent;width:18px;height:18px;line-height:18px}#jstree-dnd.jstree-default-dark-small .jstree-ok{background-position:-7px -71px}#jstree-dnd.jstree-default-dark-small .jstree-er{background-position:-39px -71px}.jstree-default-dark-small .jstree-ellipsis{overflow:hidden}.jstree-default-dark-small .jstree-ellipsis .jstree-anchor{width:calc(100% - 23px);text-overflow:ellipsis;overflow:hidden}.jstree-default-dark-small.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==")}.jstree-default-dark-small.jstree-rtl .jstree-last{background:transparent}.jstree-default-dark-large .jstree-node{min-height:32px;line-height:32px;margin-left:32px;min-width:32px}.jstree-default-dark-large .jstree-anchor{line-height:32px;height:32px}.jstree-default-dark-large .jstree-icon{width:32px;height:32px;line-height:32px}.jstree-default-dark-large .jstree-icon:empty{width:32px;height:32px;line-height:32px}.jstree-default-dark-large.jstree-rtl .jstree-node{margin-right:32px}.jstree-default-dark-large .jstree-wholerow{height:32px}.jstree-default-dark-large .jstree-node,.jstree-default-dark-large .jstree-icon{background-image:url("32px.png")}.jstree-default-dark-large .jstree-node{background-position:-288px 0;background-repeat:repeat-y}.jstree-default-dark-large .jstree-last{background:transparent}.jstree-default-dark-large .jstree-open>.jstree-ocl{background-position:-128px 0}.jstree-default-dark-large .jstree-closed>.jstree-ocl{background-position:-96px 0}.jstree-default-dark-large .jstree-leaf>.jstree-ocl{background-position:-64px 0}.jstree-default-dark-large .jstree-themeicon{background-position:-256px 0}.jstree-default-dark-large>.jstree-no-dots .jstree-node,.jstree-default-dark-large>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:transparent}.jstree-default-dark-large>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px 0}.jstree-default-dark-large>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 0}.jstree-default-dark-large .jstree-disabled{background:transparent}.jstree-default-dark-large .jstree-disabled.jstree-hovered{background:transparent}.jstree-default-dark-large .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-dark-large .jstree-checkbox{background-position:-160px 0}.jstree-default-dark-large .jstree-checkbox:hover{background-position:-160px -32px}.jstree-default-dark-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-dark-large .jstree-checked>.jstree-checkbox{background-position:-224px 0}.jstree-default-dark-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-dark-large .jstree-checked>.jstree-checkbox:hover{background-position:-224px -32px}.jstree-default-dark-large .jstree-anchor>.jstree-undetermined{background-position:-192px 0}.jstree-default-dark-large .jstree-anchor>.jstree-undetermined:hover{background-position:-192px -32px}.jstree-default-dark-large .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8, #jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-dark-large>.jstree-striped{background-size:auto 64px}.jstree-default-dark-large.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");background-position:100% 1px;background-repeat:repeat-y}.jstree-default-dark-large.jstree-rtl .jstree-last{background:transparent}.jstree-default-dark-large.jstree-rtl .jstree-open>.jstree-ocl{background-position:-128px -32px}.jstree-default-dark-large.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-96px -32px}.jstree-default-dark-large.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-64px -32px}.jstree-default-dark-large.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-dark-large.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:transparent}.jstree-default-dark-large.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px -32px}.jstree-default-dark-large.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 -32px}.jstree-default-dark-large .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-dark-large>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url("throbber.gif") center center no-repeat}.jstree-default-dark-large .jstree-file{background:url("32px.png") -96px -64px no-repeat}.jstree-default-dark-large .jstree-folder{background:url("32px.png") -256px 0 no-repeat}.jstree-default-dark-large>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-dark-large{line-height:32px;padding:0 4px}#jstree-dnd.jstree-default-dark-large .jstree-ok,#jstree-dnd.jstree-default-dark-large .jstree-er{background-image:url("32px.png");background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-dark-large i{background:transparent;width:32px;height:32px;line-height:32px}#jstree-dnd.jstree-default-dark-large .jstree-ok{background-position:0 -64px}#jstree-dnd.jstree-default-dark-large .jstree-er{background-position:-32px -64px}.jstree-default-dark-large .jstree-ellipsis{overflow:hidden}.jstree-default-dark-large .jstree-ellipsis .jstree-anchor{width:calc(100% - 37px);text-overflow:ellipsis;overflow:hidden}.jstree-default-dark-large.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==")}.jstree-default-dark-large.jstree-rtl .jstree-last{background:transparent}@media (max-width:768px){#jstree-dnd.jstree-dnd-responsive{line-height:40px;font-weight:bold;font-size:1.1em;text-shadow:1px 1px white}#jstree-dnd.jstree-dnd-responsive>i{background:transparent;width:40px;height:40px}#jstree-dnd.jstree-dnd-responsive>.jstree-ok{background-image:url("40px.png");background-position:0 -200px;background-size:120px 240px}#jstree-dnd.jstree-dnd-responsive>.jstree-er{background-image:url("40px.png");background-position:-40px -200px;background-size:120px 240px}#jstree-marker.jstree-dnd-responsive{border-left-width:10px;border-top-width:10px;border-bottom-width:10px;margin-top:-10px}}@media (max-width:768px){.jstree-default-dark-responsive .jstree-icon{background-image:url("40px.png")}.jstree-default-dark-responsive .jstree-node,.jstree-default-dark-responsive .jstree-leaf>.jstree-ocl{background:transparent}.jstree-default-dark-responsive .jstree-node{min-height:40px;line-height:40px;margin-left:40px;min-width:40px;white-space:nowrap}.jstree-default-dark-responsive .jstree-anchor{line-height:40px;height:40px}.jstree-default-dark-responsive .jstree-icon,.jstree-default-dark-responsive .jstree-icon:empty{width:40px;height:40px;line-height:40px}.jstree-default-dark-responsive>.jstree-container-ul>.jstree-node{margin-left:0}.jstree-default-dark-responsive.jstree-rtl .jstree-node{margin-left:0;margin-right:40px;background:transparent}.jstree-default-dark-responsive.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-default-dark-responsive .jstree-ocl,.jstree-default-dark-responsive .jstree-themeicon,.jstree-default-dark-responsive .jstree-checkbox{background-size:120px 240px}.jstree-default-dark-responsive .jstree-leaf>.jstree-ocl,.jstree-default-dark-responsive.jstree-rtl .jstree-leaf>.jstree-ocl{background:transparent}.jstree-default-dark-responsive .jstree-open>.jstree-ocl{background-position:0 0 !important}.jstree-default-dark-responsive .jstree-closed>.jstree-ocl{background-position:0 -40px !important}.jstree-default-dark-responsive.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-40px 0 !important}.jstree-default-dark-responsive .jstree-themeicon{background-position:-40px -40px}.jstree-default-dark-responsive .jstree-checkbox,.jstree-default-dark-responsive .jstree-checkbox:hover{background-position:-40px -80px}.jstree-default-dark-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-dark-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-dark-responsive .jstree-checked>.jstree-checkbox,.jstree-default-dark-responsive .jstree-checked>.jstree-checkbox:hover{background-position:0 -80px}.jstree-default-dark-responsive .jstree-anchor>.jstree-undetermined,.jstree-default-dark-responsive .jstree-anchor>.jstree-undetermined:hover{background-position:0 -120px}.jstree-default-dark-responsive .jstree-anchor{font-weight:bold;font-size:1.1em;text-shadow:1px 1px white}.jstree-default-dark-responsive>.jstree-striped{background:transparent}.jstree-default-dark-responsive .jstree-wholerow{border-top:1px solid #666;border-bottom:1px solid #000;background:#333333;height:40px}.jstree-default-dark-responsive .jstree-wholerow-hovered{background:#555}.jstree-default-dark-responsive .jstree-wholerow-clicked{background:#5fa2db}.jstree-default-dark-responsive .jstree-children .jstree-last>.jstree-wholerow{box-shadow:inset 0 -6px 3px -5px #111111}.jstree-default-dark-responsive .jstree-children .jstree-open>.jstree-wholerow{box-shadow:inset 0 6px 3px -5px #111111;border-top:0}.jstree-default-dark-responsive .jstree-children .jstree-open+.jstree-open{box-shadow:none}.jstree-default-dark-responsive .jstree-node,.jstree-default-dark-responsive .jstree-icon,.jstree-default-dark-responsive .jstree-node>.jstree-ocl,.jstree-default-dark-responsive .jstree-themeicon,.jstree-default-dark-responsive .jstree-checkbox{background-image:url("40px.png");background-size:120px 240px}.jstree-default-dark-responsive .jstree-node{background-position:-80px 0;background-repeat:repeat-y}.jstree-default-dark-responsive .jstree-last{background:transparent}.jstree-default-dark-responsive .jstree-leaf>.jstree-ocl{background-position:-40px -120px}.jstree-default-dark-responsive .jstree-last>.jstree-ocl{background-position:-40px -160px}.jstree-default-dark-responsive .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-dark-responsive .jstree-file{background:url("40px.png") 0 -160px no-repeat;background-size:120px 240px}.jstree-default-dark-responsive .jstree-folder{background:url("40px.png") -40px -40px no-repeat;background-size:120px 240px}.jstree-default-dark-responsive>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}}.jstree-default-dark{background:#333}.jstree-default-dark .jstree-anchor{color:#999;text-shadow:1px 1px 0 rgba(0,0,0,0.5)}.jstree-default-dark .jstree-clicked,.jstree-default-dark .jstree-checked{color:white}.jstree-default-dark .jstree-hovered{color:white}#jstree-marker.jstree-default-dark{border-left-color:#999;background:transparent}.jstree-default-dark .jstree-anchor>.jstree-icon{opacity:.75}.jstree-default-dark .jstree-clicked>.jstree-icon,.jstree-default-dark .jstree-hovered>.jstree-icon,.jstree-default-dark .jstree-checked>.jstree-icon{opacity:1}.jstree-default-dark.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==")}.jstree-default-dark.jstree-rtl .jstree-last{background:transparent}.jstree-default-dark-small.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==")}.jstree-default-dark-small.jstree-rtl .jstree-last{background:transparent}.jstree-default-dark-large.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==")}.jstree-default-dark-large.jstree-rtl .jstree-last{background:transparent}
\ No newline at end of file
diff --git a/odex30_base/data_chart/static/src/css/themes/default-dark/throbber.gif b/odex30_base/data_chart/static/src/css/themes/default-dark/throbber.gif
new file mode 100644
index 0000000..c6a1c85
Binary files /dev/null and b/odex30_base/data_chart/static/src/css/themes/default-dark/throbber.gif differ
diff --git a/odex30_base/data_chart/static/src/css/themes/default/32px.png b/odex30_base/data_chart/static/src/css/themes/default/32px.png
new file mode 100644
index 0000000..4357b91
Binary files /dev/null and b/odex30_base/data_chart/static/src/css/themes/default/32px.png differ
diff --git a/odex30_base/data_chart/static/src/css/themes/default/40px.png b/odex30_base/data_chart/static/src/css/themes/default/40px.png
new file mode 100644
index 0000000..d025522
Binary files /dev/null and b/odex30_base/data_chart/static/src/css/themes/default/40px.png differ
diff --git a/odex30_base/data_chart/static/src/css/themes/default/style.css b/odex30_base/data_chart/static/src/css/themes/default/style.css
new file mode 100644
index 0000000..0703168
--- /dev/null
+++ b/odex30_base/data_chart/static/src/css/themes/default/style.css
@@ -0,0 +1,1102 @@
+/* jsTree default theme */
+.jstree-node,
+.jstree-children,
+.jstree-container-ul {
+ display: block;
+ margin: 0;
+ padding: 0;
+ list-style-type: none;
+ list-style-image: none;
+}
+.jstree-node {
+ white-space: nowrap;
+}
+.jstree-anchor {
+ display: inline-block;
+ color: black;
+ white-space: nowrap;
+ padding: 0 4px 0 1px;
+ margin: 0;
+ vertical-align: top;
+}
+.jstree-anchor:focus {
+ outline: 0;
+}
+.jstree-anchor,
+.jstree-anchor:link,
+.jstree-anchor:visited,
+.jstree-anchor:hover,
+.jstree-anchor:active {
+ text-decoration: none;
+ color: inherit;
+}
+.jstree-icon {
+ display: inline-block;
+ text-decoration: none;
+ margin: 0;
+ padding: 0;
+ vertical-align: top;
+ text-align: center;
+}
+.jstree-icon:empty {
+ display: inline-block;
+ text-decoration: none;
+ margin: 0;
+ padding: 0;
+ vertical-align: top;
+ text-align: center;
+}
+.jstree-ocl {
+ cursor: pointer;
+}
+.jstree-leaf > .jstree-ocl {
+ cursor: default;
+}
+.jstree .jstree-open > .jstree-children {
+ display: block;
+}
+.jstree .jstree-closed > .jstree-children,
+.jstree .jstree-leaf > .jstree-children {
+ display: none;
+}
+.jstree-anchor > .jstree-themeicon {
+ margin-right: 2px;
+}
+.jstree-no-icons .jstree-themeicon,
+.jstree-anchor > .jstree-themeicon-hidden {
+ display: none;
+}
+.jstree-hidden,
+.jstree-node.jstree-hidden {
+ display: none;
+}
+.jstree-rtl .jstree-anchor {
+ padding: 0 1px 0 4px;
+}
+.jstree-rtl .jstree-anchor > .jstree-themeicon {
+ margin-left: 2px;
+ margin-right: 0;
+}
+.jstree-rtl .jstree-node {
+ margin-left: 0;
+}
+.jstree-rtl .jstree-container-ul > .jstree-node {
+ margin-right: 0;
+}
+.jstree-wholerow-ul {
+ position: relative;
+ display: inline-block;
+ min-width: 100%;
+}
+.jstree-wholerow-ul .jstree-leaf > .jstree-ocl {
+ cursor: pointer;
+}
+.jstree-wholerow-ul .jstree-anchor,
+.jstree-wholerow-ul .jstree-icon {
+ position: relative;
+}
+.jstree-wholerow-ul .jstree-wholerow {
+ width: 100%;
+ cursor: pointer;
+ position: absolute;
+ left: 0;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.jstree-contextmenu .jstree-anchor {
+ -webkit-user-select: none;
+ /* disable selection/Copy of UIWebView */
+ -webkit-touch-callout: none;
+ /* disable the IOS popup when long-press on a link */
+}
+.vakata-context {
+ display: none;
+}
+.vakata-context,
+.vakata-context ul {
+ margin: 0;
+ padding: 2px;
+ position: absolute;
+ background: #f5f5f5;
+ border: 1px solid #979797;
+ box-shadow: 2px 2px 2px #999999;
+}
+.vakata-context ul {
+ list-style: none;
+ left: 100%;
+ margin-top: -2.7em;
+ margin-left: -4px;
+}
+.vakata-context .vakata-context-right ul {
+ left: auto;
+ right: 100%;
+ margin-left: auto;
+ margin-right: -4px;
+}
+.vakata-context li {
+ list-style: none;
+}
+.vakata-context li > a {
+ display: block;
+ padding: 0 2em 0 2em;
+ text-decoration: none;
+ width: auto;
+ color: black;
+ white-space: nowrap;
+ line-height: 2.4em;
+ text-shadow: 1px 1px 0 white;
+ border-radius: 1px;
+}
+.vakata-context li > a:hover {
+ position: relative;
+ background-color: #e8eff7;
+ box-shadow: 0 0 2px #0a6aa1;
+}
+.vakata-context li > a.vakata-context-parent {
+ background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==");
+ background-position: right center;
+ background-repeat: no-repeat;
+}
+.vakata-context li > a:focus {
+ outline: 0;
+}
+.vakata-context .vakata-context-hover > a {
+ position: relative;
+ background-color: #e8eff7;
+ box-shadow: 0 0 2px #0a6aa1;
+}
+.vakata-context .vakata-context-separator > a,
+.vakata-context .vakata-context-separator > a:hover {
+ background: white;
+ border: 0;
+ border-top: 1px solid #e2e3e3;
+ height: 1px;
+ min-height: 1px;
+ max-height: 1px;
+ padding: 0;
+ margin: 0 0 0 2.4em;
+ border-left: 1px solid #e0e0e0;
+ text-shadow: 0 0 0 transparent;
+ box-shadow: 0 0 0 transparent;
+ border-radius: 0;
+}
+.vakata-context .vakata-contextmenu-disabled a,
+.vakata-context .vakata-contextmenu-disabled a:hover {
+ color: silver;
+ background-color: transparent;
+ border: 0;
+ box-shadow: 0 0 0;
+}
+.vakata-context .vakata-contextmenu-disabled > a > i {
+ filter: grayscale(100%);
+}
+.vakata-context li > a > i {
+ text-decoration: none;
+ display: inline-block;
+ width: 2.4em;
+ height: 2.4em;
+ background: transparent;
+ margin: 0 0 0 -2em;
+ vertical-align: top;
+ text-align: center;
+ line-height: 2.4em;
+}
+.vakata-context li > a > i:empty {
+ width: 2.4em;
+ line-height: 2.4em;
+}
+.vakata-context li > a .vakata-contextmenu-sep {
+ display: inline-block;
+ width: 1px;
+ height: 2.4em;
+ background: white;
+ margin: 0 0.5em 0 0;
+ border-left: 1px solid #e2e3e3;
+}
+.vakata-context .vakata-contextmenu-shortcut {
+ font-size: 0.8em;
+ color: silver;
+ opacity: 0.5;
+ display: none;
+}
+.vakata-context-rtl ul {
+ left: auto;
+ right: 100%;
+ margin-left: auto;
+ margin-right: -4px;
+}
+.vakata-context-rtl li > a.vakata-context-parent {
+ background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7");
+ background-position: left center;
+ background-repeat: no-repeat;
+}
+.vakata-context-rtl .vakata-context-separator > a {
+ margin: 0 2.4em 0 0;
+ border-left: 0;
+ border-right: 1px solid #e2e3e3;
+}
+.vakata-context-rtl .vakata-context-left ul {
+ right: auto;
+ left: 100%;
+ margin-left: -4px;
+ margin-right: auto;
+}
+.vakata-context-rtl li > a > i {
+ margin: 0 -2em 0 0;
+}
+.vakata-context-rtl li > a .vakata-contextmenu-sep {
+ margin: 0 0 0 0.5em;
+ border-left-color: white;
+ background: #e2e3e3;
+}
+#jstree-marker {
+ position: absolute;
+ top: 0;
+ left: 0;
+ margin: -5px 0 0 0;
+ padding: 0;
+ border-right: 0;
+ border-top: 5px solid transparent;
+ border-bottom: 5px solid transparent;
+ border-left: 5px solid;
+ width: 0;
+ height: 0;
+ font-size: 0;
+ line-height: 0;
+}
+#jstree-dnd {
+ line-height: 16px;
+ margin: 0;
+ padding: 4px;
+}
+#jstree-dnd .jstree-icon,
+#jstree-dnd .jstree-copy {
+ display: inline-block;
+ text-decoration: none;
+ margin: 0 2px 0 0;
+ padding: 0;
+ width: 16px;
+ height: 16px;
+}
+#jstree-dnd .jstree-ok {
+ background: green;
+}
+#jstree-dnd .jstree-er {
+ background: red;
+}
+#jstree-dnd .jstree-copy {
+ margin: 0 2px 0 2px;
+}
+.jstree-default .jstree-node,
+.jstree-default .jstree-icon {
+ background-repeat: no-repeat;
+ background-color: transparent;
+}
+.jstree-default .jstree-anchor,
+.jstree-default .jstree-animated,
+.jstree-default .jstree-wholerow {
+ transition: background-color 0.15s, box-shadow 0.15s;
+}
+.jstree-default .jstree-hovered {
+ background: #e7f4f9;
+ border-radius: 2px;
+ box-shadow: inset 0 0 1px #cccccc;
+}
+.jstree-default .jstree-context {
+ background: #e7f4f9;
+ border-radius: 2px;
+ box-shadow: inset 0 0 1px #cccccc;
+}
+.jstree-default .jstree-clicked {
+ background: #beebff;
+ border-radius: 2px;
+ box-shadow: inset 0 0 1px #999999;
+}
+.jstree-default .jstree-no-icons .jstree-anchor > .jstree-themeicon {
+ display: none;
+}
+.jstree-default .jstree-disabled {
+ background: transparent;
+ color: #666666;
+}
+.jstree-default .jstree-disabled.jstree-hovered {
+ background: transparent;
+ box-shadow: none;
+}
+.jstree-default .jstree-disabled.jstree-clicked {
+ background: #efefef;
+}
+.jstree-default .jstree-disabled > .jstree-icon {
+ opacity: 0.8;
+ filter: url("data:image/svg+xml;utf8, #jstree-grayscale");
+ /* Firefox 10+ */
+ filter: gray;
+ /* IE6-9 */
+ -webkit-filter: grayscale(100%);
+ /* Chrome 19+ & Safari 6+ */
+}
+.jstree-default .jstree-search {
+ font-style: italic;
+ color: #8b0000;
+ font-weight: bold;
+}
+.jstree-default .jstree-no-checkboxes .jstree-checkbox {
+ display: none !important;
+}
+.jstree-default.jstree-checkbox-no-clicked .jstree-clicked {
+ background: transparent;
+ box-shadow: none;
+}
+.jstree-default.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered {
+ background: #e7f4f9;
+}
+.jstree-default.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked {
+ background: transparent;
+}
+.jstree-default.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered {
+ background: #e7f4f9;
+}
+.jstree-default > .jstree-striped {
+ min-width: 100%;
+ display: inline-block;
+ background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==") left top repeat;
+}
+.jstree-default > .jstree-wholerow-ul .jstree-hovered,
+.jstree-default > .jstree-wholerow-ul .jstree-clicked {
+ background: transparent;
+ box-shadow: none;
+ border-radius: 0;
+}
+.jstree-default .jstree-wholerow {
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.jstree-default .jstree-wholerow-hovered {
+ background: #e7f4f9;
+}
+.jstree-default .jstree-wholerow-clicked {
+ background: #beebff;
+ background: -webkit-linear-gradient(top, #beebff 0%, #a8e4ff 100%);
+ background: linear-gradient(to bottom, #beebff 0%, #a8e4ff 100%);
+}
+.jstree-default .jstree-node {
+ min-height: 24px;
+ line-height: 24px;
+ margin-left: 24px;
+ min-width: 24px;
+}
+.jstree-default .jstree-anchor {
+ line-height: 24px;
+ height: 24px;
+}
+.jstree-default .jstree-icon {
+ width: 24px;
+ height: 24px;
+ line-height: 24px;
+}
+.jstree-default .jstree-icon:empty {
+ width: 24px;
+ height: 24px;
+ line-height: 24px;
+}
+.jstree-default.jstree-rtl .jstree-node {
+ margin-right: 24px;
+}
+.jstree-default .jstree-wholerow {
+ height: 24px;
+}
+.jstree-default .jstree-node,
+.jstree-default .jstree-icon {
+ background-image: url("32px.png");
+}
+.jstree-default .jstree-node {
+ background-position: -292px -4px;
+ background-repeat: repeat-y;
+}
+.jstree-default .jstree-last {
+ background: transparent;
+}
+.jstree-default .jstree-open > .jstree-ocl {
+ background-position: -132px -4px;
+}
+.jstree-default .jstree-closed > .jstree-ocl {
+ background-position: -100px -4px;
+}
+.jstree-default .jstree-leaf > .jstree-ocl {
+ background-position: -68px -4px;
+}
+.jstree-default .jstree-themeicon {
+ background-position: -260px -4px;
+}
+.jstree-default > .jstree-no-dots .jstree-node,
+.jstree-default > .jstree-no-dots .jstree-leaf > .jstree-ocl {
+ background: transparent;
+}
+.jstree-default > .jstree-no-dots .jstree-open > .jstree-ocl {
+ background-position: -36px -4px;
+}
+.jstree-default > .jstree-no-dots .jstree-closed > .jstree-ocl {
+ background-position: -4px -4px;
+}
+.jstree-default .jstree-disabled {
+ background: transparent;
+}
+.jstree-default .jstree-disabled.jstree-hovered {
+ background: transparent;
+}
+.jstree-default .jstree-disabled.jstree-clicked {
+ background: #efefef;
+}
+.jstree-default .jstree-checkbox {
+ background-position: -164px -4px;
+}
+.jstree-default .jstree-checkbox:hover {
+ background-position: -164px -36px;
+}
+.jstree-default.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox,
+.jstree-default .jstree-checked > .jstree-checkbox {
+ background-position: -228px -4px;
+}
+.jstree-default.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover,
+.jstree-default .jstree-checked > .jstree-checkbox:hover {
+ background-position: -228px -36px;
+}
+.jstree-default .jstree-anchor > .jstree-undetermined {
+ background-position: -196px -4px;
+}
+.jstree-default .jstree-anchor > .jstree-undetermined:hover {
+ background-position: -196px -36px;
+}
+.jstree-default .jstree-checkbox-disabled {
+ opacity: 0.8;
+ filter: url("data:image/svg+xml;utf8, #jstree-grayscale");
+ /* Firefox 10+ */
+ filter: gray;
+ /* IE6-9 */
+ -webkit-filter: grayscale(100%);
+ /* Chrome 19+ & Safari 6+ */
+}
+.jstree-default > .jstree-striped {
+ background-size: auto 48px;
+}
+.jstree-default.jstree-rtl .jstree-node {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");
+ background-position: 100% 1px;
+ background-repeat: repeat-y;
+}
+.jstree-default.jstree-rtl .jstree-last {
+ background: transparent;
+}
+.jstree-default.jstree-rtl .jstree-open > .jstree-ocl {
+ background-position: -132px -36px;
+}
+.jstree-default.jstree-rtl .jstree-closed > .jstree-ocl {
+ background-position: -100px -36px;
+}
+.jstree-default.jstree-rtl .jstree-leaf > .jstree-ocl {
+ background-position: -68px -36px;
+}
+.jstree-default.jstree-rtl > .jstree-no-dots .jstree-node,
+.jstree-default.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl {
+ background: transparent;
+}
+.jstree-default.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl {
+ background-position: -36px -36px;
+}
+.jstree-default.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl {
+ background-position: -4px -36px;
+}
+.jstree-default .jstree-themeicon-custom {
+ background-color: transparent;
+ background-image: none;
+ background-position: 0 0;
+}
+.jstree-default > .jstree-container-ul .jstree-loading > .jstree-ocl {
+ background: url("throbber.gif") center center no-repeat;
+}
+.jstree-default .jstree-file {
+ background: url("32px.png") -100px -68px no-repeat;
+}
+.jstree-default .jstree-folder {
+ background: url("32px.png") -260px -4px no-repeat;
+}
+.jstree-default > .jstree-container-ul > .jstree-node {
+ margin-left: 0;
+ margin-right: 0;
+}
+#jstree-dnd.jstree-default {
+ line-height: 24px;
+ padding: 0 4px;
+}
+#jstree-dnd.jstree-default .jstree-ok,
+#jstree-dnd.jstree-default .jstree-er {
+ background-image: url("32px.png");
+ background-repeat: no-repeat;
+ background-color: transparent;
+}
+#jstree-dnd.jstree-default i {
+ background: transparent;
+ width: 24px;
+ height: 24px;
+ line-height: 24px;
+}
+#jstree-dnd.jstree-default .jstree-ok {
+ background-position: -4px -68px;
+}
+#jstree-dnd.jstree-default .jstree-er {
+ background-position: -36px -68px;
+}
+.jstree-default .jstree-ellipsis {
+ overflow: hidden;
+}
+.jstree-default .jstree-ellipsis .jstree-anchor {
+ width: calc(100% - 29px);
+ text-overflow: ellipsis;
+ overflow: hidden;
+}
+.jstree-default.jstree-rtl .jstree-node {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");
+}
+.jstree-default.jstree-rtl .jstree-last {
+ background: transparent;
+}
+.jstree-default-small .jstree-node {
+ min-height: 18px;
+ line-height: 18px;
+ margin-left: 18px;
+ min-width: 18px;
+}
+.jstree-default-small .jstree-anchor {
+ line-height: 18px;
+ height: 18px;
+}
+.jstree-default-small .jstree-icon {
+ width: 18px;
+ height: 18px;
+ line-height: 18px;
+}
+.jstree-default-small .jstree-icon:empty {
+ width: 18px;
+ height: 18px;
+ line-height: 18px;
+}
+.jstree-default-small.jstree-rtl .jstree-node {
+ margin-right: 18px;
+}
+.jstree-default-small .jstree-wholerow {
+ height: 18px;
+}
+.jstree-default-small .jstree-node,
+.jstree-default-small .jstree-icon {
+ background-image: url("32px.png");
+}
+.jstree-default-small .jstree-node {
+ background-position: -295px -7px;
+ background-repeat: repeat-y;
+}
+.jstree-default-small .jstree-last {
+ background: transparent;
+}
+.jstree-default-small .jstree-open > .jstree-ocl {
+ background-position: -135px -7px;
+}
+.jstree-default-small .jstree-closed > .jstree-ocl {
+ background-position: -103px -7px;
+}
+.jstree-default-small .jstree-leaf > .jstree-ocl {
+ background-position: -71px -7px;
+}
+.jstree-default-small .jstree-themeicon {
+ background-position: -263px -7px;
+}
+.jstree-default-small > .jstree-no-dots .jstree-node,
+.jstree-default-small > .jstree-no-dots .jstree-leaf > .jstree-ocl {
+ background: transparent;
+}
+.jstree-default-small > .jstree-no-dots .jstree-open > .jstree-ocl {
+ background-position: -39px -7px;
+}
+.jstree-default-small > .jstree-no-dots .jstree-closed > .jstree-ocl {
+ background-position: -7px -7px;
+}
+.jstree-default-small .jstree-disabled {
+ background: transparent;
+}
+.jstree-default-small .jstree-disabled.jstree-hovered {
+ background: transparent;
+}
+.jstree-default-small .jstree-disabled.jstree-clicked {
+ background: #efefef;
+}
+.jstree-default-small .jstree-checkbox {
+ background-position: -167px -7px;
+}
+.jstree-default-small .jstree-checkbox:hover {
+ background-position: -167px -39px;
+}
+.jstree-default-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox,
+.jstree-default-small .jstree-checked > .jstree-checkbox {
+ background-position: -231px -7px;
+}
+.jstree-default-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover,
+.jstree-default-small .jstree-checked > .jstree-checkbox:hover {
+ background-position: -231px -39px;
+}
+.jstree-default-small .jstree-anchor > .jstree-undetermined {
+ background-position: -199px -7px;
+}
+.jstree-default-small .jstree-anchor > .jstree-undetermined:hover {
+ background-position: -199px -39px;
+}
+.jstree-default-small .jstree-checkbox-disabled {
+ opacity: 0.8;
+ filter: url("data:image/svg+xml;utf8, #jstree-grayscale");
+ /* Firefox 10+ */
+ filter: gray;
+ /* IE6-9 */
+ -webkit-filter: grayscale(100%);
+ /* Chrome 19+ & Safari 6+ */
+}
+.jstree-default-small > .jstree-striped {
+ background-size: auto 36px;
+}
+.jstree-default-small.jstree-rtl .jstree-node {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");
+ background-position: 100% 1px;
+ background-repeat: repeat-y;
+}
+.jstree-default-small.jstree-rtl .jstree-last {
+ background: transparent;
+}
+.jstree-default-small.jstree-rtl .jstree-open > .jstree-ocl {
+ background-position: -135px -39px;
+}
+.jstree-default-small.jstree-rtl .jstree-closed > .jstree-ocl {
+ background-position: -103px -39px;
+}
+.jstree-default-small.jstree-rtl .jstree-leaf > .jstree-ocl {
+ background-position: -71px -39px;
+}
+.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-node,
+.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl {
+ background: transparent;
+}
+.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl {
+ background-position: -39px -39px;
+}
+.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl {
+ background-position: -7px -39px;
+}
+.jstree-default-small .jstree-themeicon-custom {
+ background-color: transparent;
+ background-image: none;
+ background-position: 0 0;
+}
+.jstree-default-small > .jstree-container-ul .jstree-loading > .jstree-ocl {
+ background: url("throbber.gif") center center no-repeat;
+}
+.jstree-default-small .jstree-file {
+ background: url("32px.png") -103px -71px no-repeat;
+}
+.jstree-default-small .jstree-folder {
+ background: url("32px.png") -263px -7px no-repeat;
+}
+.jstree-default-small > .jstree-container-ul > .jstree-node {
+ margin-left: 0;
+ margin-right: 0;
+}
+#jstree-dnd.jstree-default-small {
+ line-height: 18px;
+ padding: 0 4px;
+}
+#jstree-dnd.jstree-default-small .jstree-ok,
+#jstree-dnd.jstree-default-small .jstree-er {
+ background-image: url("32px.png");
+ background-repeat: no-repeat;
+ background-color: transparent;
+}
+#jstree-dnd.jstree-default-small i {
+ background: transparent;
+ width: 18px;
+ height: 18px;
+ line-height: 18px;
+}
+#jstree-dnd.jstree-default-small .jstree-ok {
+ background-position: -7px -71px;
+}
+#jstree-dnd.jstree-default-small .jstree-er {
+ background-position: -39px -71px;
+}
+.jstree-default-small .jstree-ellipsis {
+ overflow: hidden;
+}
+.jstree-default-small .jstree-ellipsis .jstree-anchor {
+ width: calc(100% - 23px);
+ text-overflow: ellipsis;
+ overflow: hidden;
+}
+.jstree-default-small.jstree-rtl .jstree-node {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==");
+}
+.jstree-default-small.jstree-rtl .jstree-last {
+ background: transparent;
+}
+.jstree-default-large .jstree-node {
+ min-height: 32px;
+ line-height: 32px;
+ margin-left: 32px;
+ min-width: 32px;
+}
+.jstree-default-large .jstree-anchor {
+ line-height: 32px;
+ height: 32px;
+}
+.jstree-default-large .jstree-icon {
+ width: 32px;
+ height: 32px;
+ line-height: 32px;
+}
+.jstree-default-large .jstree-icon:empty {
+ width: 32px;
+ height: 32px;
+ line-height: 32px;
+}
+.jstree-default-large.jstree-rtl .jstree-node {
+ margin-right: 32px;
+}
+.jstree-default-large .jstree-wholerow {
+ height: 32px;
+}
+.jstree-default-large .jstree-node,
+.jstree-default-large .jstree-icon {
+ background-image: url("32px.png");
+}
+.jstree-default-large .jstree-node {
+ background-position: -288px 0px;
+ background-repeat: repeat-y;
+}
+.jstree-default-large .jstree-last {
+ background: transparent;
+}
+.jstree-default-large .jstree-open > .jstree-ocl {
+ background-position: -128px 0px;
+}
+.jstree-default-large .jstree-closed > .jstree-ocl {
+ background-position: -96px 0px;
+}
+.jstree-default-large .jstree-leaf > .jstree-ocl {
+ background-position: -64px 0px;
+}
+.jstree-default-large .jstree-themeicon {
+ background-position: -256px 0px;
+}
+.jstree-default-large > .jstree-no-dots .jstree-node,
+.jstree-default-large > .jstree-no-dots .jstree-leaf > .jstree-ocl {
+ background: transparent;
+}
+.jstree-default-large > .jstree-no-dots .jstree-open > .jstree-ocl {
+ background-position: -32px 0px;
+}
+.jstree-default-large > .jstree-no-dots .jstree-closed > .jstree-ocl {
+ background-position: 0px 0px;
+}
+.jstree-default-large .jstree-disabled {
+ background: transparent;
+}
+.jstree-default-large .jstree-disabled.jstree-hovered {
+ background: transparent;
+}
+.jstree-default-large .jstree-disabled.jstree-clicked {
+ background: #efefef;
+}
+.jstree-default-large .jstree-checkbox {
+ background-position: -160px 0px;
+}
+.jstree-default-large .jstree-checkbox:hover {
+ background-position: -160px -32px;
+}
+.jstree-default-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox,
+.jstree-default-large .jstree-checked > .jstree-checkbox {
+ background-position: -224px 0px;
+}
+.jstree-default-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover,
+.jstree-default-large .jstree-checked > .jstree-checkbox:hover {
+ background-position: -224px -32px;
+}
+.jstree-default-large .jstree-anchor > .jstree-undetermined {
+ background-position: -192px 0px;
+}
+.jstree-default-large .jstree-anchor > .jstree-undetermined:hover {
+ background-position: -192px -32px;
+}
+.jstree-default-large .jstree-checkbox-disabled {
+ opacity: 0.8;
+ filter: url("data:image/svg+xml;utf8, #jstree-grayscale");
+ /* Firefox 10+ */
+ filter: gray;
+ /* IE6-9 */
+ -webkit-filter: grayscale(100%);
+ /* Chrome 19+ & Safari 6+ */
+}
+.jstree-default-large > .jstree-striped {
+ background-size: auto 64px;
+}
+.jstree-default-large.jstree-rtl .jstree-node {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");
+ background-position: 100% 1px;
+ background-repeat: repeat-y;
+}
+.jstree-default-large.jstree-rtl .jstree-last {
+ background: transparent;
+}
+.jstree-default-large.jstree-rtl .jstree-open > .jstree-ocl {
+ background-position: -128px -32px;
+}
+.jstree-default-large.jstree-rtl .jstree-closed > .jstree-ocl {
+ background-position: -96px -32px;
+}
+.jstree-default-large.jstree-rtl .jstree-leaf > .jstree-ocl {
+ background-position: -64px -32px;
+}
+.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-node,
+.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl {
+ background: transparent;
+}
+.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl {
+ background-position: -32px -32px;
+}
+.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl {
+ background-position: 0px -32px;
+}
+.jstree-default-large .jstree-themeicon-custom {
+ background-color: transparent;
+ background-image: none;
+ background-position: 0 0;
+}
+.jstree-default-large > .jstree-container-ul .jstree-loading > .jstree-ocl {
+ background: url("throbber.gif") center center no-repeat;
+}
+.jstree-default-large .jstree-file {
+ background: url("32px.png") -96px -64px no-repeat;
+}
+.jstree-default-large .jstree-folder {
+ background: url("32px.png") -256px 0px no-repeat;
+}
+.jstree-default-large > .jstree-container-ul > .jstree-node {
+ margin-left: 0;
+ margin-right: 0;
+}
+#jstree-dnd.jstree-default-large {
+ line-height: 32px;
+ padding: 0 4px;
+}
+#jstree-dnd.jstree-default-large .jstree-ok,
+#jstree-dnd.jstree-default-large .jstree-er {
+ background-image: url("32px.png");
+ background-repeat: no-repeat;
+ background-color: transparent;
+}
+#jstree-dnd.jstree-default-large i {
+ background: transparent;
+ width: 32px;
+ height: 32px;
+ line-height: 32px;
+}
+#jstree-dnd.jstree-default-large .jstree-ok {
+ background-position: 0px -64px;
+}
+#jstree-dnd.jstree-default-large .jstree-er {
+ background-position: -32px -64px;
+}
+.jstree-default-large .jstree-ellipsis {
+ overflow: hidden;
+}
+.jstree-default-large .jstree-ellipsis .jstree-anchor {
+ width: calc(100% - 37px);
+ text-overflow: ellipsis;
+ overflow: hidden;
+}
+.jstree-default-large.jstree-rtl .jstree-node {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==");
+}
+.jstree-default-large.jstree-rtl .jstree-last {
+ background: transparent;
+}
+@media (max-width: 768px) {
+ #jstree-dnd.jstree-dnd-responsive {
+ line-height: 40px;
+ font-weight: bold;
+ font-size: 1.1em;
+ text-shadow: 1px 1px white;
+ }
+ #jstree-dnd.jstree-dnd-responsive > i {
+ background: transparent;
+ width: 40px;
+ height: 40px;
+ }
+ #jstree-dnd.jstree-dnd-responsive > .jstree-ok {
+ background-image: url("40px.png");
+ background-position: 0 -200px;
+ background-size: 120px 240px;
+ }
+ #jstree-dnd.jstree-dnd-responsive > .jstree-er {
+ background-image: url("40px.png");
+ background-position: -40px -200px;
+ background-size: 120px 240px;
+ }
+ #jstree-marker.jstree-dnd-responsive {
+ border-left-width: 10px;
+ border-top-width: 10px;
+ border-bottom-width: 10px;
+ margin-top: -10px;
+ }
+}
+@media (max-width: 768px) {
+ .jstree-default-responsive {
+ /*
+ .jstree-open > .jstree-ocl,
+ .jstree-closed > .jstree-ocl { border-radius:20px; background-color:white; }
+ */
+ }
+ .jstree-default-responsive .jstree-icon {
+ background-image: url("40px.png");
+ }
+ .jstree-default-responsive .jstree-node,
+ .jstree-default-responsive .jstree-leaf > .jstree-ocl {
+ background: transparent;
+ }
+ .jstree-default-responsive .jstree-node {
+ min-height: 40px;
+ line-height: 40px;
+ margin-left: 40px;
+ min-width: 40px;
+ white-space: nowrap;
+ }
+ .jstree-default-responsive .jstree-anchor {
+ line-height: 40px;
+ height: 40px;
+ }
+ .jstree-default-responsive .jstree-icon,
+ .jstree-default-responsive .jstree-icon:empty {
+ width: 40px;
+ height: 40px;
+ line-height: 40px;
+ }
+ .jstree-default-responsive > .jstree-container-ul > .jstree-node {
+ margin-left: 0;
+ }
+ .jstree-default-responsive.jstree-rtl .jstree-node {
+ margin-left: 0;
+ margin-right: 40px;
+ background: transparent;
+ }
+ .jstree-default-responsive.jstree-rtl .jstree-container-ul > .jstree-node {
+ margin-right: 0;
+ }
+ .jstree-default-responsive .jstree-ocl,
+ .jstree-default-responsive .jstree-themeicon,
+ .jstree-default-responsive .jstree-checkbox {
+ background-size: 120px 240px;
+ }
+ .jstree-default-responsive .jstree-leaf > .jstree-ocl,
+ .jstree-default-responsive.jstree-rtl .jstree-leaf > .jstree-ocl {
+ background: transparent;
+ }
+ .jstree-default-responsive .jstree-open > .jstree-ocl {
+ background-position: 0 0 !important;
+ }
+ .jstree-default-responsive .jstree-closed > .jstree-ocl {
+ background-position: 0 -40px !important;
+ }
+ .jstree-default-responsive.jstree-rtl .jstree-closed > .jstree-ocl {
+ background-position: -40px 0 !important;
+ }
+ .jstree-default-responsive .jstree-themeicon {
+ background-position: -40px -40px;
+ }
+ .jstree-default-responsive .jstree-checkbox,
+ .jstree-default-responsive .jstree-checkbox:hover {
+ background-position: -40px -80px;
+ }
+ .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox,
+ .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover,
+ .jstree-default-responsive .jstree-checked > .jstree-checkbox,
+ .jstree-default-responsive .jstree-checked > .jstree-checkbox:hover {
+ background-position: 0 -80px;
+ }
+ .jstree-default-responsive .jstree-anchor > .jstree-undetermined,
+ .jstree-default-responsive .jstree-anchor > .jstree-undetermined:hover {
+ background-position: 0 -120px;
+ }
+ .jstree-default-responsive .jstree-anchor {
+ font-weight: bold;
+ font-size: 1.1em;
+ text-shadow: 1px 1px white;
+ }
+ .jstree-default-responsive > .jstree-striped {
+ background: transparent;
+ }
+ .jstree-default-responsive .jstree-wholerow {
+ border-top: 1px solid rgba(255, 255, 255, 0.7);
+ border-bottom: 1px solid rgba(64, 64, 64, 0.2);
+ background: #ebebeb;
+ height: 40px;
+ }
+ .jstree-default-responsive .jstree-wholerow-hovered {
+ background: #e7f4f9;
+ }
+ .jstree-default-responsive .jstree-wholerow-clicked {
+ background: #beebff;
+ }
+ .jstree-default-responsive .jstree-children .jstree-last > .jstree-wholerow {
+ box-shadow: inset 0 -6px 3px -5px #666666;
+ }
+ .jstree-default-responsive .jstree-children .jstree-open > .jstree-wholerow {
+ box-shadow: inset 0 6px 3px -5px #666666;
+ border-top: 0;
+ }
+ .jstree-default-responsive .jstree-children .jstree-open + .jstree-open {
+ box-shadow: none;
+ }
+ .jstree-default-responsive .jstree-node,
+ .jstree-default-responsive .jstree-icon,
+ .jstree-default-responsive .jstree-node > .jstree-ocl,
+ .jstree-default-responsive .jstree-themeicon,
+ .jstree-default-responsive .jstree-checkbox {
+ background-image: url("40px.png");
+ background-size: 120px 240px;
+ }
+ .jstree-default-responsive .jstree-node {
+ background-position: -80px 0;
+ background-repeat: repeat-y;
+ }
+ .jstree-default-responsive .jstree-last {
+ background: transparent;
+ }
+ .jstree-default-responsive .jstree-leaf > .jstree-ocl {
+ background-position: -40px -120px;
+ }
+ .jstree-default-responsive .jstree-last > .jstree-ocl {
+ background-position: -40px -160px;
+ }
+ .jstree-default-responsive .jstree-themeicon-custom {
+ background-color: transparent;
+ background-image: none;
+ background-position: 0 0;
+ }
+ .jstree-default-responsive .jstree-file {
+ background: url("40px.png") 0 -160px no-repeat;
+ background-size: 120px 240px;
+ }
+ .jstree-default-responsive .jstree-folder {
+ background: url("40px.png") -40px -40px no-repeat;
+ background-size: 120px 240px;
+ }
+ .jstree-default-responsive > .jstree-container-ul > .jstree-node {
+ margin-left: 0;
+ margin-right: 0;
+ }
+}
diff --git a/odex30_base/data_chart/static/src/css/themes/default/style.min.css b/odex30_base/data_chart/static/src/css/themes/default/style.min.css
new file mode 100644
index 0000000..93f80e9
--- /dev/null
+++ b/odex30_base/data_chart/static/src/css/themes/default/style.min.css
@@ -0,0 +1 @@
+.jstree-node,.jstree-children,.jstree-container-ul{display:block;margin:0;padding:0;list-style-type:none;list-style-image:none}.jstree-node{white-space:nowrap}.jstree-anchor{display:inline-block;color:black;white-space:nowrap;padding:0 4px 0 1px;margin:0;vertical-align:top}.jstree-anchor:focus{outline:0}.jstree-anchor,.jstree-anchor:link,.jstree-anchor:visited,.jstree-anchor:hover,.jstree-anchor:active{text-decoration:none;color:inherit}.jstree-icon{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-icon:empty{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-ocl{cursor:pointer}.jstree-leaf>.jstree-ocl{cursor:default}.jstree .jstree-open>.jstree-children{display:block}.jstree .jstree-closed>.jstree-children,.jstree .jstree-leaf>.jstree-children{display:none}.jstree-anchor>.jstree-themeicon{margin-right:2px}.jstree-no-icons .jstree-themeicon,.jstree-anchor>.jstree-themeicon-hidden{display:none}.jstree-hidden,.jstree-node.jstree-hidden{display:none}.jstree-rtl .jstree-anchor{padding:0 1px 0 4px}.jstree-rtl .jstree-anchor>.jstree-themeicon{margin-left:2px;margin-right:0}.jstree-rtl .jstree-node{margin-left:0}.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-wholerow-ul{position:relative;display:inline-block;min-width:100%}.jstree-wholerow-ul .jstree-leaf>.jstree-ocl{cursor:pointer}.jstree-wholerow-ul .jstree-anchor,.jstree-wholerow-ul .jstree-icon{position:relative}.jstree-wholerow-ul .jstree-wholerow{width:100%;cursor:pointer;position:absolute;left:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.jstree-contextmenu .jstree-anchor{-webkit-user-select:none;-webkit-touch-callout:none}.vakata-context{display:none}.vakata-context,.vakata-context ul{margin:0;padding:2px;position:absolute;background:#f5f5f5;border:1px solid #979797;box-shadow:2px 2px 2px #999999}.vakata-context ul{list-style:none;left:100%;margin-top:-2.7em;margin-left:-4px}.vakata-context .vakata-context-right ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context li{list-style:none}.vakata-context li>a{display:block;padding:0 2em 0 2em;text-decoration:none;width:auto;color:black;white-space:nowrap;line-height:2.4em;text-shadow:1px 1px 0 white;border-radius:1px}.vakata-context li>a:hover{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context li>a.vakata-context-parent{background-image:url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==");background-position:right center;background-repeat:no-repeat}.vakata-context li>a:focus{outline:0}.vakata-context .vakata-context-hover>a{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context .vakata-context-separator>a,.vakata-context .vakata-context-separator>a:hover{background:white;border:0;border-top:1px solid #e2e3e3;height:1px;min-height:1px;max-height:1px;padding:0;margin:0 0 0 2.4em;border-left:1px solid #e0e0e0;text-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;border-radius:0}.vakata-context .vakata-contextmenu-disabled a,.vakata-context .vakata-contextmenu-disabled a:hover{color:silver;background-color:transparent;border:0;box-shadow:0 0 0}.vakata-context .vakata-contextmenu-disabled>a>i{filter:grayscale(100%)}.vakata-context li>a>i{text-decoration:none;display:inline-block;width:2.4em;height:2.4em;background:transparent;margin:0 0 0 -2em;vertical-align:top;text-align:center;line-height:2.4em}.vakata-context li>a>i:empty{width:2.4em;line-height:2.4em}.vakata-context li>a .vakata-contextmenu-sep{display:inline-block;width:1px;height:2.4em;background:white;margin:0 .5em 0 0;border-left:1px solid #e2e3e3}.vakata-context .vakata-contextmenu-shortcut{font-size:.8em;color:silver;opacity:.5;display:none}.vakata-context-rtl ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context-rtl li>a.vakata-context-parent{background-image:url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7");background-position:left center;background-repeat:no-repeat}.vakata-context-rtl .vakata-context-separator>a{margin:0 2.4em 0 0;border-left:0;border-right:1px solid #e2e3e3}.vakata-context-rtl .vakata-context-left ul{right:auto;left:100%;margin-left:-4px;margin-right:auto}.vakata-context-rtl li>a>i{margin:0 -2em 0 0}.vakata-context-rtl li>a .vakata-contextmenu-sep{margin:0 0 0 .5em;border-left-color:white;background:#e2e3e3}#jstree-marker{position:absolute;top:0;left:0;margin:-5px 0 0 0;padding:0;border-right:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid;width:0;height:0;font-size:0;line-height:0}#jstree-dnd{line-height:16px;margin:0;padding:4px}#jstree-dnd .jstree-icon,#jstree-dnd .jstree-copy{display:inline-block;text-decoration:none;margin:0 2px 0 0;padding:0;width:16px;height:16px}#jstree-dnd .jstree-ok{background:green}#jstree-dnd .jstree-er{background:red}#jstree-dnd .jstree-copy{margin:0 2px 0 2px}.jstree-default .jstree-node,.jstree-default .jstree-icon{background-repeat:no-repeat;background-color:transparent}.jstree-default .jstree-anchor,.jstree-default .jstree-animated,.jstree-default .jstree-wholerow{transition:background-color .15s,box-shadow .15s}.jstree-default .jstree-hovered{background:#e7f4f9;border-radius:2px;box-shadow:inset 0 0 1px #cccccc}.jstree-default .jstree-context{background:#e7f4f9;border-radius:2px;box-shadow:inset 0 0 1px #cccccc}.jstree-default .jstree-clicked{background:#beebff;border-radius:2px;box-shadow:inset 0 0 1px #999999}.jstree-default .jstree-no-icons .jstree-anchor>.jstree-themeicon{display:none}.jstree-default .jstree-disabled{background:transparent;color:#666666}.jstree-default .jstree-disabled.jstree-hovered{background:transparent;box-shadow:none}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-disabled>.jstree-icon{opacity:.8;filter:url("data:image/svg+xml;utf8, #jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default .jstree-search{font-style:italic;color:#8b0000;font-weight:bold}.jstree-default .jstree-no-checkboxes .jstree-checkbox{display:none !important}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked{background:transparent;box-shadow:none}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered{background:#e7f4f9}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked{background:transparent}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered{background:#e7f4f9}.jstree-default>.jstree-striped{min-width:100%;display:inline-block;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==") left top repeat}.jstree-default>.jstree-wholerow-ul .jstree-hovered,.jstree-default>.jstree-wholerow-ul .jstree-clicked{background:transparent;box-shadow:none;border-radius:0}.jstree-default .jstree-wholerow{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.jstree-default .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default .jstree-wholerow-clicked{background:#beebff;background:-webkit-linear-gradient(top, #beebff 0, #a8e4ff 100%);background:linear-gradient(to bottom, #beebff 0, #a8e4ff 100%)}.jstree-default .jstree-node{min-height:24px;line-height:24px;margin-left:24px;min-width:24px}.jstree-default .jstree-anchor{line-height:24px;height:24px}.jstree-default .jstree-icon{width:24px;height:24px;line-height:24px}.jstree-default .jstree-icon:empty{width:24px;height:24px;line-height:24px}.jstree-default.jstree-rtl .jstree-node{margin-right:24px}.jstree-default .jstree-wholerow{height:24px}.jstree-default .jstree-node,.jstree-default .jstree-icon{background-image:url("32px.png")}.jstree-default .jstree-node{background-position:-292px -4px;background-repeat:repeat-y}.jstree-default .jstree-last{background:transparent}.jstree-default .jstree-open>.jstree-ocl{background-position:-132px -4px}.jstree-default .jstree-closed>.jstree-ocl{background-position:-100px -4px}.jstree-default .jstree-leaf>.jstree-ocl{background-position:-68px -4px}.jstree-default .jstree-themeicon{background-position:-260px -4px}.jstree-default>.jstree-no-dots .jstree-node,.jstree-default>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:transparent}.jstree-default>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -4px}.jstree-default>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -4px}.jstree-default .jstree-disabled{background:transparent}.jstree-default .jstree-disabled.jstree-hovered{background:transparent}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-checkbox{background-position:-164px -4px}.jstree-default .jstree-checkbox:hover{background-position:-164px -36px}.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default .jstree-checked>.jstree-checkbox{background-position:-228px -4px}.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default .jstree-checked>.jstree-checkbox:hover{background-position:-228px -36px}.jstree-default .jstree-anchor>.jstree-undetermined{background-position:-196px -4px}.jstree-default .jstree-anchor>.jstree-undetermined:hover{background-position:-196px -36px}.jstree-default .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8, #jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default>.jstree-striped{background-size:auto 48px}.jstree-default.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");background-position:100% 1px;background-repeat:repeat-y}.jstree-default.jstree-rtl .jstree-last{background:transparent}.jstree-default.jstree-rtl .jstree-open>.jstree-ocl{background-position:-132px -36px}.jstree-default.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-100px -36px}.jstree-default.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-68px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:transparent}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -36px}.jstree-default .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url("throbber.gif") center center no-repeat}.jstree-default .jstree-file{background:url("32px.png") -100px -68px no-repeat}.jstree-default .jstree-folder{background:url("32px.png") -260px -4px no-repeat}.jstree-default>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default{line-height:24px;padding:0 4px}#jstree-dnd.jstree-default .jstree-ok,#jstree-dnd.jstree-default .jstree-er{background-image:url("32px.png");background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default i{background:transparent;width:24px;height:24px;line-height:24px}#jstree-dnd.jstree-default .jstree-ok{background-position:-4px -68px}#jstree-dnd.jstree-default .jstree-er{background-position:-36px -68px}.jstree-default .jstree-ellipsis{overflow:hidden}.jstree-default .jstree-ellipsis .jstree-anchor{width:calc(100% - 29px);text-overflow:ellipsis;overflow:hidden}.jstree-default.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==")}.jstree-default.jstree-rtl .jstree-last{background:transparent}.jstree-default-small .jstree-node{min-height:18px;line-height:18px;margin-left:18px;min-width:18px}.jstree-default-small .jstree-anchor{line-height:18px;height:18px}.jstree-default-small .jstree-icon{width:18px;height:18px;line-height:18px}.jstree-default-small .jstree-icon:empty{width:18px;height:18px;line-height:18px}.jstree-default-small.jstree-rtl .jstree-node{margin-right:18px}.jstree-default-small .jstree-wholerow{height:18px}.jstree-default-small .jstree-node,.jstree-default-small .jstree-icon{background-image:url("32px.png")}.jstree-default-small .jstree-node{background-position:-295px -7px;background-repeat:repeat-y}.jstree-default-small .jstree-last{background:transparent}.jstree-default-small .jstree-open>.jstree-ocl{background-position:-135px -7px}.jstree-default-small .jstree-closed>.jstree-ocl{background-position:-103px -7px}.jstree-default-small .jstree-leaf>.jstree-ocl{background-position:-71px -7px}.jstree-default-small .jstree-themeicon{background-position:-263px -7px}.jstree-default-small>.jstree-no-dots .jstree-node,.jstree-default-small>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:transparent}.jstree-default-small>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -7px}.jstree-default-small>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -7px}.jstree-default-small .jstree-disabled{background:transparent}.jstree-default-small .jstree-disabled.jstree-hovered{background:transparent}.jstree-default-small .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-small .jstree-checkbox{background-position:-167px -7px}.jstree-default-small .jstree-checkbox:hover{background-position:-167px -39px}.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-small .jstree-checked>.jstree-checkbox{background-position:-231px -7px}.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-small .jstree-checked>.jstree-checkbox:hover{background-position:-231px -39px}.jstree-default-small .jstree-anchor>.jstree-undetermined{background-position:-199px -7px}.jstree-default-small .jstree-anchor>.jstree-undetermined:hover{background-position:-199px -39px}.jstree-default-small .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8, #jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-small>.jstree-striped{background-size:auto 36px}.jstree-default-small.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");background-position:100% 1px;background-repeat:repeat-y}.jstree-default-small.jstree-rtl .jstree-last{background:transparent}.jstree-default-small.jstree-rtl .jstree-open>.jstree-ocl{background-position:-135px -39px}.jstree-default-small.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-103px -39px}.jstree-default-small.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-71px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:transparent}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -39px}.jstree-default-small .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-small>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url("throbber.gif") center center no-repeat}.jstree-default-small .jstree-file{background:url("32px.png") -103px -71px no-repeat}.jstree-default-small .jstree-folder{background:url("32px.png") -263px -7px no-repeat}.jstree-default-small>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-small{line-height:18px;padding:0 4px}#jstree-dnd.jstree-default-small .jstree-ok,#jstree-dnd.jstree-default-small .jstree-er{background-image:url("32px.png");background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-small i{background:transparent;width:18px;height:18px;line-height:18px}#jstree-dnd.jstree-default-small .jstree-ok{background-position:-7px -71px}#jstree-dnd.jstree-default-small .jstree-er{background-position:-39px -71px}.jstree-default-small .jstree-ellipsis{overflow:hidden}.jstree-default-small .jstree-ellipsis .jstree-anchor{width:calc(100% - 23px);text-overflow:ellipsis;overflow:hidden}.jstree-default-small.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==")}.jstree-default-small.jstree-rtl .jstree-last{background:transparent}.jstree-default-large .jstree-node{min-height:32px;line-height:32px;margin-left:32px;min-width:32px}.jstree-default-large .jstree-anchor{line-height:32px;height:32px}.jstree-default-large .jstree-icon{width:32px;height:32px;line-height:32px}.jstree-default-large .jstree-icon:empty{width:32px;height:32px;line-height:32px}.jstree-default-large.jstree-rtl .jstree-node{margin-right:32px}.jstree-default-large .jstree-wholerow{height:32px}.jstree-default-large .jstree-node,.jstree-default-large .jstree-icon{background-image:url("32px.png")}.jstree-default-large .jstree-node{background-position:-288px 0;background-repeat:repeat-y}.jstree-default-large .jstree-last{background:transparent}.jstree-default-large .jstree-open>.jstree-ocl{background-position:-128px 0}.jstree-default-large .jstree-closed>.jstree-ocl{background-position:-96px 0}.jstree-default-large .jstree-leaf>.jstree-ocl{background-position:-64px 0}.jstree-default-large .jstree-themeicon{background-position:-256px 0}.jstree-default-large>.jstree-no-dots .jstree-node,.jstree-default-large>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:transparent}.jstree-default-large>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px 0}.jstree-default-large>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 0}.jstree-default-large .jstree-disabled{background:transparent}.jstree-default-large .jstree-disabled.jstree-hovered{background:transparent}.jstree-default-large .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-large .jstree-checkbox{background-position:-160px 0}.jstree-default-large .jstree-checkbox:hover{background-position:-160px -32px}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-large .jstree-checked>.jstree-checkbox{background-position:-224px 0}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-large .jstree-checked>.jstree-checkbox:hover{background-position:-224px -32px}.jstree-default-large .jstree-anchor>.jstree-undetermined{background-position:-192px 0}.jstree-default-large .jstree-anchor>.jstree-undetermined:hover{background-position:-192px -32px}.jstree-default-large .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8, #jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-large>.jstree-striped{background-size:auto 64px}.jstree-default-large.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");background-position:100% 1px;background-repeat:repeat-y}.jstree-default-large.jstree-rtl .jstree-last{background:transparent}.jstree-default-large.jstree-rtl .jstree-open>.jstree-ocl{background-position:-128px -32px}.jstree-default-large.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-96px -32px}.jstree-default-large.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-64px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:transparent}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 -32px}.jstree-default-large .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-large>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url("throbber.gif") center center no-repeat}.jstree-default-large .jstree-file{background:url("32px.png") -96px -64px no-repeat}.jstree-default-large .jstree-folder{background:url("32px.png") -256px 0 no-repeat}.jstree-default-large>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-large{line-height:32px;padding:0 4px}#jstree-dnd.jstree-default-large .jstree-ok,#jstree-dnd.jstree-default-large .jstree-er{background-image:url("32px.png");background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-large i{background:transparent;width:32px;height:32px;line-height:32px}#jstree-dnd.jstree-default-large .jstree-ok{background-position:0 -64px}#jstree-dnd.jstree-default-large .jstree-er{background-position:-32px -64px}.jstree-default-large .jstree-ellipsis{overflow:hidden}.jstree-default-large .jstree-ellipsis .jstree-anchor{width:calc(100% - 37px);text-overflow:ellipsis;overflow:hidden}.jstree-default-large.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==")}.jstree-default-large.jstree-rtl .jstree-last{background:transparent}@media (max-width:768px){#jstree-dnd.jstree-dnd-responsive{line-height:40px;font-weight:bold;font-size:1.1em;text-shadow:1px 1px white}#jstree-dnd.jstree-dnd-responsive>i{background:transparent;width:40px;height:40px}#jstree-dnd.jstree-dnd-responsive>.jstree-ok{background-image:url("40px.png");background-position:0 -200px;background-size:120px 240px}#jstree-dnd.jstree-dnd-responsive>.jstree-er{background-image:url("40px.png");background-position:-40px -200px;background-size:120px 240px}#jstree-marker.jstree-dnd-responsive{border-left-width:10px;border-top-width:10px;border-bottom-width:10px;margin-top:-10px}}@media (max-width:768px){.jstree-default-responsive .jstree-icon{background-image:url("40px.png")}.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-leaf>.jstree-ocl{background:transparent}.jstree-default-responsive .jstree-node{min-height:40px;line-height:40px;margin-left:40px;min-width:40px;white-space:nowrap}.jstree-default-responsive .jstree-anchor{line-height:40px;height:40px}.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-icon:empty{width:40px;height:40px;line-height:40px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0}.jstree-default-responsive.jstree-rtl .jstree-node{margin-left:0;margin-right:40px;background:transparent}.jstree-default-responsive.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-default-responsive .jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-size:120px 240px}.jstree-default-responsive .jstree-leaf>.jstree-ocl,.jstree-default-responsive.jstree-rtl .jstree-leaf>.jstree-ocl{background:transparent}.jstree-default-responsive .jstree-open>.jstree-ocl{background-position:0 0 !important}.jstree-default-responsive .jstree-closed>.jstree-ocl{background-position:0 -40px !important}.jstree-default-responsive.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-40px 0 !important}.jstree-default-responsive .jstree-themeicon{background-position:-40px -40px}.jstree-default-responsive .jstree-checkbox,.jstree-default-responsive .jstree-checkbox:hover{background-position:-40px -80px}.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-responsive .jstree-checked>.jstree-checkbox,.jstree-default-responsive .jstree-checked>.jstree-checkbox:hover{background-position:0 -80px}.jstree-default-responsive .jstree-anchor>.jstree-undetermined,.jstree-default-responsive .jstree-anchor>.jstree-undetermined:hover{background-position:0 -120px}.jstree-default-responsive .jstree-anchor{font-weight:bold;font-size:1.1em;text-shadow:1px 1px white}.jstree-default-responsive>.jstree-striped{background:transparent}.jstree-default-responsive .jstree-wholerow{border-top:1px solid rgba(255,255,255,0.7);border-bottom:1px solid rgba(64,64,64,0.2);background:#ebebeb;height:40px}.jstree-default-responsive .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default-responsive .jstree-wholerow-clicked{background:#beebff}.jstree-default-responsive .jstree-children .jstree-last>.jstree-wholerow{box-shadow:inset 0 -6px 3px -5px #666666}.jstree-default-responsive .jstree-children .jstree-open>.jstree-wholerow{box-shadow:inset 0 6px 3px -5px #666666;border-top:0}.jstree-default-responsive .jstree-children .jstree-open+.jstree-open{box-shadow:none}.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-node>.jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-image:url("40px.png");background-size:120px 240px}.jstree-default-responsive .jstree-node{background-position:-80px 0;background-repeat:repeat-y}.jstree-default-responsive .jstree-last{background:transparent}.jstree-default-responsive .jstree-leaf>.jstree-ocl{background-position:-40px -120px}.jstree-default-responsive .jstree-last>.jstree-ocl{background-position:-40px -160px}.jstree-default-responsive .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-responsive .jstree-file{background:url("40px.png") 0 -160px no-repeat;background-size:120px 240px}.jstree-default-responsive .jstree-folder{background:url("40px.png") -40px -40px no-repeat;background-size:120px 240px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}}
\ No newline at end of file
diff --git a/odex30_base/data_chart/static/src/css/themes/default/throbber.gif b/odex30_base/data_chart/static/src/css/themes/default/throbber.gif
new file mode 100644
index 0000000..64c8eeb
Binary files /dev/null and b/odex30_base/data_chart/static/src/css/themes/default/throbber.gif differ
diff --git a/odex30_base/data_chart/static/src/css/wdr.css b/odex30_base/data_chart/static/src/css/wdr.css
new file mode 100644
index 0000000..ccd1e89
--- /dev/null
+++ b/odex30_base/data_chart/static/src/css/wdr.css
@@ -0,0 +1,71 @@
+img.centered {
+ margin: auto !important;
+ padding-bottom: 10px;
+ color: transparent !important;
+ width: 22px;
+ height: 22px;
+ display: flex;
+ align-items: center;
+ font-size: 12px;
+ position: relative;
+ bottom: 4px;
+ left: 6px;
+}
+
+button {
+ border: 1px solid #0598df;
+ background: #fff;
+ color: #0598df;
+ text-transform: uppercase;
+ cursor: pointer;
+ margin: 5px 0;
+ display: inline-block;
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ font-weight: normal;
+ padding: 10px 10px;
+ font-size: 14px;
+}
+
+.classic {
+ width: 120px;
+}
+
+.flat {
+ width: 120px;
+}
+
+.compact {
+ width: 120px;
+}
+
+.hdrs-on {
+ width: 149px;
+ padding-left: 10px;
+}
+
+.hdrs-off {
+ width: 140px;
+ padding-left: 15px;
+}
+
+.wdr-colorpick-popup {
+ bottom: 20px;
+}
+
+.wdr-colorpick-popup.wdr-arrow-down {
+ bottom: 20px;
+}
+
+ul.wdr-ui-element.wdr-ui.wdr-ui-list {
+ top: 0px !important;
+}
+
+#wdr-toolbar-wrapper #wdr-printing-radio {
+ margin-left: 14px;
+ }
+
+ #wdr-drillthrough-view > div.wdr-ui-element.wdr-ui.wdr-details-container > span > b{
+ unicode-bidi:embed;
+ }
+
\ No newline at end of file
diff --git a/odex30_base/data_chart/static/src/css/wdr_rtl.css b/odex30_base/data_chart/static/src/css/wdr_rtl.css
new file mode 100644
index 0000000..b994324
--- /dev/null
+++ b/odex30_base/data_chart/static/src/css/wdr_rtl.css
@@ -0,0 +1,21 @@
+#wdr-toolbar-wrapper{
+ direction: ltr;
+}
+
+
+#wdr-toolbar{
+ direction: ltr;
+}
+
+
+#wdr-filter-view{
+ direction: ltr;
+}
+
+.wdr-cell.wdr-header.wdr-header-c.wdr-v-sort.wdr-filter-header.wdr-ui-element.wdr-draggable {
+ direction: ltr;
+}
+
+div#wdr-fields-view {
+ direction: ltr;
+}
\ No newline at end of file
diff --git a/odex30_base/data_chart/static/src/css/website_rtl.css b/odex30_base/data_chart/static/src/css/website_rtl.css
new file mode 100644
index 0000000..85347c6
--- /dev/null
+++ b/odex30_base/data_chart/static/src/css/website_rtl.css
@@ -0,0 +1,22 @@
+@media (min-width: 768px){
+ .rtl .navbar-right{
+ float: left !important;
+ }
+ .rtl .navbar-right .dropdown .dropdown-menu{
+ right: auto !important;
+ left: 0 !important;
+ }
+ .rtl .navbar-left{
+ float: right !important;
+ }
+ .rtl .navbar-left .dropdown .dropdown-menu{
+ left: auto !important;
+ right: 0 !important;
+ }
+ .navbar-nav.navbar-right:last-child{
+ margin-left: auto;
+ }
+ .rtl .pull-left{
+ float: right !important;
+ }
+}
diff --git a/odex30_base/data_chart/static/src/fonts/Amiri-Regular.ttf b/odex30_base/data_chart/static/src/fonts/Amiri-Regular.ttf
new file mode 100644
index 0000000..4d3f842
Binary files /dev/null and b/odex30_base/data_chart/static/src/fonts/Amiri-Regular.ttf differ
diff --git a/odex30_base/data_chart/static/src/img/icons8-clear-filters-64.png b/odex30_base/data_chart/static/src/img/icons8-clear-filters-64.png
new file mode 100644
index 0000000..ca0ec33
Binary files /dev/null and b/odex30_base/data_chart/static/src/img/icons8-clear-filters-64.png differ
diff --git a/odex30_base/data_chart/static/src/img/icons8-data-48.png b/odex30_base/data_chart/static/src/img/icons8-data-48.png
new file mode 100644
index 0000000..d213d33
Binary files /dev/null and b/odex30_base/data_chart/static/src/img/icons8-data-48.png differ
diff --git a/odex30_base/data_chart/static/src/img/icons8-reset-64.png b/odex30_base/data_chart/static/src/img/icons8-reset-64.png
new file mode 100644
index 0000000..410a859
Binary files /dev/null and b/odex30_base/data_chart/static/src/img/icons8-reset-64.png differ
diff --git a/odex30_base/data_chart/static/src/img/user-cog-solid.svg b/odex30_base/data_chart/static/src/img/user-cog-solid.svg
new file mode 100644
index 0000000..62ae6cf
--- /dev/null
+++ b/odex30_base/data_chart/static/src/img/user-cog-solid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/odex30_base/data_chart/static/src/js/data_chart.js b/odex30_base/data_chart/static/src/js/data_chart.js
new file mode 100644
index 0000000..a7dbe8c
--- /dev/null
+++ b/odex30_base/data_chart/static/src/js/data_chart.js
@@ -0,0 +1,289 @@
+import { Component, onMounted, onWillStart, useRef, useState } from "@odoo/owl";
+import { registry } from "@web/core/registry";
+import { useService } from "@web/core/utils/hooks";
+import { _t } from "@web/core/l10n/translation";
+import { jsonrpc } from "@web/core/network/rpc_service";
+
+class DataChart extends Component {
+ static template = "data_chart.data_chart_temp";
+ static props = {
+ action: Object,
+ context: { type: Object, optional: true },
+ };
+
+ setup() {
+ this.rpc = useService("rpc");
+ this.chartRef = useRef("chart");
+ this.state = useState({
+ isLoaded: false,
+ });
+
+ this.pivot = null;
+ this.params = this.props.action;
+
+ onWillStart(async () => {
+ await this.loadData();
+ });
+
+ onMounted(() => {
+ this.initializeChart();
+ });
+ }
+
+ async loadData(withDefault = false) {
+ try {
+ const result = await this.rpc("/web/dataset/call_kw", {
+ model: "data_chart_model",
+ method: "data_chart_details",
+ args: [
+ this.params.context?.model,
+ this.params.context?.active_id,
+ withDefault
+ ],
+ kwargs: {},
+ });
+
+ this.processData(result);
+ } catch (error) {
+ console.error("Error loading data chart:", error);
+ alert("ERROR IN REPORT CONFIGURATION!");
+ }
+ }
+
+ processData(result) {
+ const data = result.data;
+ let options, slice, conditions, formats, colsTypes, header = "", footer = "";
+
+ if (result.options) {
+ options = JSON.parse(result.options);
+ }
+ if (result.slice) {
+ slice = JSON.parse(result.slice);
+ }
+ if (result.conditions) {
+ conditions = JSON.parse(result.conditions);
+ }
+ if (result.formats) {
+ formats = JSON.parse(result.formats);
+ }
+ if (result.cols_types) {
+ colsTypes = JSON.parse(result.cols_types);
+ }
+ if (result.header) {
+ header = result.header;
+ }
+ if (result.footer) {
+ footer = result.footer;
+ }
+
+ this.chartData = {
+ data,
+ options,
+ slice,
+ conditions,
+ formats,
+ colsTypes,
+ header,
+ footer,
+ companyImage: result.company_image,
+ };
+
+ this.state.isLoaded = true;
+ }
+
+ initializeChart() {
+ if (!this.state.isLoaded || !this.chartRef.el) {
+ return;
+ }
+
+ const { data, options, slice, conditions, formats, colsTypes } = this.chartData;
+
+ this.pivot = new WebDataRocks({
+ beforetoolbarcreated: this.customizeToolbar.bind(this),
+ container: this.chartRef.el,
+ toolbar: true,
+ report: {
+ dataSource: {
+ data: [colsTypes].concat(data)
+ },
+ slice: slice,
+ options: options,
+ conditions: conditions,
+ formats: formats,
+ },
+ });
+
+ this.setupExportOverride();
+ this.setTitle();
+ this.pivot.modelParams = this.params;
+ this.pivot.parentComponent = this;
+ this.pivot.backgroundImage = this.chartData.companyImage;
+ this.pivot.colsTypes = colsTypes;
+ this.pivot.originalData = data;
+ }
+
+ setupExportOverride() {
+ const oldExport = this.pivot.exportTo;
+ this.pivot.exportTo = (type, options = {}, callback) => {
+ options.header = `${this.chartData.header}
`;
+ options.footer = `${this.chartData.footer}`;
+ oldExport.call(this.pivot, type, options, callback);
+ };
+ }
+
+ setTitle() {
+ if (this.params.context?.title) {
+ this.pivot.setOptions({
+ grid: {
+ title: this.params.context.title
+ }
+ });
+ }
+ }
+
+ async setDefault() {
+ const options = JSON.stringify(this.pivot.getOptions());
+ const slice = JSON.stringify(this.pivot.getReport().slice);
+ const conditions = JSON.stringify(this.pivot.getReport().conditions);
+ const formats = JSON.stringify(this.pivot.getReport().formats);
+ const colsTypes = JSON.stringify(this.pivot.colsTypes);
+
+ await this.rpc("/web/dataset/call_kw", {
+ model: "data_chart_model",
+ method: "set_default",
+ args: [
+ this.pivot.modelParams.context.model,
+ this.pivot.modelParams.context.active_id,
+ options,
+ slice,
+ conditions,
+ formats,
+ colsTypes
+ ],
+ kwargs: {},
+ });
+ }
+
+ async getDefault() {
+ await this.loadData(true);
+ this.initializeChart();
+ }
+
+ updateData() {
+ if (this.pivot && this.pivot.colsTypes && this.pivot.originalData) {
+ this.pivot.updateData({
+ data: [this.pivot.colsTypes].concat(this.pivot.originalData)
+ });
+ }
+ }
+
+ fillColTypesDropDown(dropdown, selected) {
+ const options = [
+ { value: 'string', text: 'string' },
+ { value: 'date string', text: 'date string' },
+ { value: 'date', text: 'date' },
+ { value: 'year/month/day', text: 'year/month/day' },
+ { value: 'year/quarter/month/day', text: 'year/quarter/month/day' },
+ { value: 'number', text: 'number' },
+ { value: 'weekday', text: 'weekday' },
+ { value: 'month', text: 'month' },
+ { value: 'datetime', text: 'datetime' },
+ { value: 'time', text: 'time' }
+ ];
+
+ dropdown.innerHTML = '';
+ options.forEach((option, index) => {
+ dropdown[index] = new Option(option.text, option.value);
+ });
+ dropdown.value = selected;
+ }
+
+ async setColsTypes(toolbar) {
+ // Implementation for column types setting
+ // This would need to be adapted based on the WebDataRocks API
+ const newColTypes = {};
+
+ for (const key in toolbar.pivot.colsTypes) {
+ const keyId = "ctse_" + key.split(' ').join('_');
+ const el = document.getElementById(keyId);
+ if (el) {
+ newColTypes[key] = { type: el.value };
+ }
+ }
+
+ toolbar.pivot.colsTypes = newColTypes;
+ this.updateData();
+ }
+
+ customizeToolbar(toolbar) {
+ const tabs = toolbar.getTabs();
+
+ // Customize existing tabs
+ toolbar.getTabs = () => {
+ delete tabs[0];
+ delete tabs[1];
+
+ // Modify save functionality
+ if (tabs[2]) {
+ tabs[2].handler = async () => {
+ const options = JSON.stringify(this.pivot.getOptions());
+ const slice = JSON.stringify(this.pivot.getReport().slice);
+ const conditions = JSON.stringify(this.pivot.getReport().conditions);
+ const formats = JSON.stringify(this.pivot.getReport().formats);
+ const colsTypes = JSON.stringify(this.pivot.colsTypes);
+
+ await this.rpc("/web/dataset/call_kw", {
+ model: "data_chart_model",
+ method: "save_options",
+ args: [
+ this.pivot.modelParams.context.model,
+ this.pivot.modelParams.context.active_id,
+ options,
+ slice,
+ conditions,
+ formats,
+ colsTypes
+ ],
+ kwargs: {},
+ });
+ };
+ }
+
+ // Remove unwanted menu items
+ if (tabs[3] && tabs[3].menu) {
+ delete tabs[3].menu[0];
+ delete tabs[3].menu[1];
+ }
+
+ // Add custom tabs
+ tabs.unshift({
+ id: "wdr-tab-get-default",
+ title: "Original",
+ handler: () => this.getDefault(),
+ icon: 'Get Default '
+ });
+
+ if (this.pivot.modelParams.context.admin_view) {
+ tabs.unshift({
+ id: "wdr-tab-set-default",
+ title: "Default",
+ handler: () => this.setDefault(),
+ icon: 'Set Default '
+ });
+ }
+
+ tabs.unshift({
+ id: "wdr-tab-set-cols_types",
+ title: "Types",
+ handler: () => this.setColsTypes(toolbar),
+ icon: 'Field Types '
+ });
+
+ return tabs;
+ };
+ }
+}
+
+registry.category("actions").add("data_view", DataChart);
+
+export default DataChart;
\ No newline at end of file
diff --git a/odex30_base/data_chart/static/src/js/jspdf_custom.js b/odex30_base/data_chart/static/src/js/jspdf_custom.js
new file mode 100644
index 0000000..10015e0
--- /dev/null
+++ b/odex30_base/data_chart/static/src/js/jspdf_custom.js
@@ -0,0 +1,459 @@
+(function (P) {
+ 'use strict';
+ var O = 'addImage_',
+ X = ['jpeg', 'jpg', 'png'],
+ U = function (g) {
+ var j = this.internal.newObject(),
+ m = this.internal.write,
+ n = this.internal.putStream;
+ g['n'] = j;
+ m('<>');
+ }
+ if ('trns' in g && g['trns'].constructor == Array) {
+ var o = '',
+ q = 0,
+ s = g['trns'].length;
+ for (; q < s; q++) o += (g['trns'][q] + ' ' + g['trns'][q] + ' ');
+ m('/Mask [' + o + ']');
+ }
+ if ('smask' in g) {
+ m('/SMask ' + (j + 1) + ' 0 R');
+ }
+ m('/Length ' + g['data'].length + '>>');
+ n(g['data']);
+ m('endobj');
+ if ('smask' in g) {
+ var t = '/Predictor 15 /Colors 1 /BitsPerComponent ' + g['bpc'] + ' /Columns ' + g['w'];
+ var v = {
+ 'w': g['w'],
+ 'h': g['h'],
+ 'cs': 'DeviceGray',
+ 'bpc': g['bpc'],
+ 'dp': t,
+ 'data': g['smask']
+ };
+ if ('f' in g) v.f = g['f'];
+ U.call(this, v);
+ }
+ if (g['cs'] === this.color_spaces.INDEXED) {
+ this.internal.newObject();
+ m('<< /Length ' + g['pal'].length + '>>');
+ n(this.arrayBufferToBinaryString(new Uint8Array(g['pal'])));
+ m('endobj');
+ }
+ },
+ Y = function () {
+ var g = this.internal.collections[O + 'images'];
+ for (var j in g) {
+ U.call(this, g[j]);
+ }
+ },
+ W = function () {
+ var g = this.internal.collections[O + 'images'],
+ j = this.internal.write,
+ m;
+ for (var n in g) {
+ m = g[n];
+ j('/I' + m['i'], m['n'], '0', 'R');
+ }
+ },
+ Q = function (g) {
+ if (g && typeof g === 'string') g = g.toUpperCase();
+ return g in P.image_compression ? g : P.image_compression.NONE;
+ },
+ s0 = function () {
+ var g = this.internal.collections[O + 'images'];
+ if (!g) {
+ this.internal.collections[O + 'images'] = g = {};
+ this.internal.events.subscribe('putResources', Y);
+ this.internal.events.subscribe('putXobjectDict', W);
+ }
+ return g;
+ },
+ k0 = function (n) {
+ var o = 0;
+ if (n) {
+ o = Object.keys ? Object.keys(n).length : (function (g) {
+ var j = 0;
+ for (var m in g) {
+ if (g.hasOwnProperty(m)) {
+ j++;
+ }
+ }
+ return j;
+ })(n);
+ }
+ return o;
+ },
+ m0 = function (g) {
+ return typeof g === 'undefined' || g === null;
+ },
+ j0 = function (g) {
+ return typeof g === 'string' && P.sHashCode(g);
+ },
+ e0 = function (g) {
+ return X.indexOf(g) === -1;
+ },
+ R = function (g) {
+ return typeof P['process' + g.toUpperCase()] !== 'function';
+ },
+ S = function (g) {
+ return typeof g === 'object' && g.nodeType === 1;
+ },
+ y0 = function (g, j, m) {
+ if (g.nodeName === 'IMG' && g.hasAttribute('src')) {
+ var n = '' + g.getAttribute('src');
+ if (!m && n.indexOf('data:image/') === 0) return n;
+ if (!j && /\.png(?:[?#].*)?$/i.test(n)) j = 'png';
+ }
+ if (g.nodeName === 'CANVAS') {
+ var o = g;
+ } else {
+ var o = document.createElement('canvas');
+ o.width = g.clientWidth || g.width;
+ o.height = g.clientHeight || g.height;
+ var q = o.getContext('2d');
+ if (!q) {
+ throw ('addImage requires canvas to be supported by browser.');
+ }
+ if (m) {
+ var s, t, v, H, z, I, K, M = Math.PI / 180,
+ N;
+ if (typeof m === 'object') {
+ s = m.x;
+ t = m.y;
+ v = m.bg;
+ m = m.angle;
+ }
+ N = m * M;
+ H = Math.abs(Math.cos(N));
+ z = Math.abs(Math.sin(N));
+ I = o.width;
+ K = o.height;
+ o.width = K * z + I * H;
+ o.height = K * H + I * z;
+ if (isNaN(s)) s = o.width / 2;
+ if (isNaN(t)) t = o.height / 2;
+ q.clearRect(0, 0, o.width, o.height);
+ q.fillStyle = v || 'white';
+ q.fillRect(0, 0, o.width, o.height);
+ q.save();
+ q.translate(s, t);
+ q.rotate(N);
+ q.drawImage(g, -(I / 2), -(K / 2));
+ q.rotate(-N);
+ q.translate(-s, -t);
+ q.restore();
+ } else {
+ q.drawImage(g, 0, 0, o.width, o.height);
+ }
+ }
+ return o.toDataURL(('' + j).toLowerCase() == 'png' ? 'image/png' : 'image/jpeg');
+ },
+ f0 = function (g, j) {
+ var m;
+ if (j) {
+ for (var n in j) {
+ if (g === j[n].alias) {
+ m = j[n];
+ break;
+ }
+ }
+ }
+ return m;
+ },
+ v0 = function (g, j, m) {
+ if (!g && !j) {
+ g = -96;
+ j = -96;
+ }
+ if (g < 0) {
+ g = (-1) * m['w'] * 72 / g / this.internal.scaleFactor;
+ }
+ if (j < 0) {
+ j = (-1) * m['h'] * 72 / j / this.internal.scaleFactor;
+ }
+ if (g === 0) {
+ g = j * m['w'] / m['h'];
+ }
+ if (j === 0) {
+ j = g * m['h'] / m['w'];
+ }
+ return [g, j];
+ },
+ z0 = function (g, j, m, n, o, q, s) {
+ var t = v0.call(this, m, n, o),
+ v = this.internal.getCoordinateString,
+ H = this.internal.getVerticalCoordinateString;
+ m = t[0];
+ n = t[1];
+ s[q] = o;
+ this.internal.write('q', v(m), '0 0', v(n), v(g), H(j + n), 'cm /I' + o['i'], 'Do Q');
+ };
+ P.color_spaces = {
+ DEVICE_RGB: 'DeviceRGB',
+ DEVICE_GRAY: 'DeviceGray',
+ DEVICE_CMYK: 'DeviceCMYK',
+ CAL_GREY: 'CalGray',
+ CAL_RGB: 'CalRGB',
+ LAB: 'Lab',
+ ICC_BASED: 'ICCBased',
+ INDEXED: 'Indexed',
+ PATTERN: 'Pattern',
+ SEPERATION: 'Seperation',
+ DEVICE_N: 'DeviceN'
+ };
+ P.decode = {
+ DCT_DECODE: 'DCTDecode',
+ FLATE_DECODE: 'FlateDecode',
+ LZW_DECODE: 'LZWDecode',
+ JPX_DECODE: 'JPXDecode',
+ JBIG2_DECODE: 'JBIG2Decode',
+ ASCII85_DECODE: 'ASCII85Decode',
+ ASCII_HEX_DECODE: 'ASCIIHexDecode',
+ RUN_LENGTH_DECODE: 'RunLengthDecode',
+ CCITT_FAX_DECODE: 'CCITTFaxDecode'
+ };
+ P.image_compression = {
+ NONE: 'NONE',
+ FAST: 'FAST',
+ MEDIUM: 'MEDIUM',
+ SLOW: 'SLOW'
+ };
+ P.sHashCode = function (m) {
+ return Array.prototype.reduce && m.split("").reduce(function (g, j) {
+ g = ((g << 5) - g) + j.charCodeAt(0);
+ return g & g;
+ }, 0);
+ };
+ P.isString = function (g) {
+ return typeof g === 'string';
+ };
+ P.extractInfoFromBase64DataURI = function (g) {
+ return /^data:([\w]+?\/([\w]+?));base64,(.+?)$/g.exec(g);
+ };
+ P.supportsArrayBuffer = function () {
+ return typeof ArrayBuffer !== 'undefined' && typeof Uint8Array !== 'undefined';
+ };
+ P.isArrayBuffer = function (g) {
+ if (!this.supportsArrayBuffer()) return false;
+ return g instanceof ArrayBuffer;
+ };
+ P.isArrayBufferView = function (g) {
+ if (!this.supportsArrayBuffer()) return false;
+ if (typeof Uint32Array === 'undefined') return false;
+ return (g instanceof Int8Array || g instanceof Uint8Array || (typeof Uint8ClampedArray !== 'undefined' && g instanceof Uint8ClampedArray) || g instanceof Int16Array || g instanceof Uint16Array || g instanceof Int32Array || g instanceof Uint32Array || g instanceof Float32Array || g instanceof Float64Array);
+ };
+ P.binaryStringToUint8Array = function (g) {
+ var j = g.length,
+ m = new Uint8Array(j);
+ for (var n = 0; n < j; n++) {
+ m[n] = g.charCodeAt(n);
+ }
+ return m;
+ };
+ P.arrayBufferToBinaryString = function (g) {
+ if (this.isArrayBuffer(g)) g = new Uint8Array(g);
+ var j = '',
+ m = g.byteLength;
+ for (var n = 0; n < m; n++) {
+ j += String.fromCharCode(g[n]);
+ }
+ return j;
+ };
+ P.arrayBufferToBase64 = function (g) {
+ var j = '',
+ m = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
+ n = new Uint8Array(g),
+ o = n.byteLength,
+ q = o % 3,
+ s = o - q,
+ t, v, H, z, I;
+ for (var K = 0; K < s; K = K + 3) {
+ I = (n[K] << 16) | (n[K + 1] << 8) | n[K + 2];
+ t = (I & 16515072) >> 18;
+ v = (I & 258048) >> 12;
+ H = (I & 4032) >> 6;
+ z = I & 63;
+ j += m[t] + m[v] + m[H] + m[z];
+ }
+ if (q == 1) {
+ I = n[s];
+ t = (I & 252) >> 2;
+ v = (I & 3) << 4;
+ j += m[t] + m[v] + '==';
+ } else if (q == 2) {
+ I = (n[s] << 8) | n[s + 1];
+ t = (I & 64512) >> 10;
+ v = (I & 1008) >> 4;
+ H = (I & 15) << 2;
+ j += m[t] + m[v] + m[H] + '=';
+ }
+ return j;
+ };
+ P.createImageInfo = function (g, j, m, n, o, q, s, t, v, H, z, I) {
+ var K = {
+ alias: t,
+ w: j,
+ h: m,
+ cs: n,
+ bpc: o,
+ i: s,
+ data: g
+ };
+ if (q) K.f = q;
+ if (v) K.dp = v;
+ if (H) K.trns = H;
+ if (z) K.pal = z;
+ if (I) K.smask = I;
+ return K;
+ };
+ P.addImage = function (g, j, m, n, o, q, s, t, v) {
+ 'use strict';
+ if (typeof j !== 'string') {
+ var H = q;
+ q = o;
+ o = n;
+ n = m;
+ m = j;
+ j = H;
+ }
+ if (typeof g === 'object' && !S(g) && "imageData" in g) {
+ var z = g;
+ g = z.imageData;
+ j = z.format || j;
+ m = z.x || m || 0;
+ n = z.y || n || 0;
+ o = z.w || o;
+ q = z.h || q;
+ s = z.alias || s;
+ t = z.compression || t;
+ v = z.rotation || z.angle || v;
+ }
+ if (isNaN(m) || isNaN(n)) {
+ console.error('jsPDF.addImage: Invalid coordinates', arguments);
+ throw new Error('Invalid coordinates passed to jsPDF.addImage');
+ }
+ var I = s0.call(this),
+ K;
+ if (!(K = f0(g, I))) {
+ var M;
+ if (S(g)) g = y0(g, j, v);
+ if (m0(s)) s = j0(g);
+ if (!(K = f0(s, I))) {
+ if (this.isString(g)) {
+ var N = this.extractInfoFromBase64DataURI(g);
+ if (N) {
+ j = N[2];
+ g = atob(N[3]);
+ } else {
+ if (g.charCodeAt(0) === 0x89 && g.charCodeAt(1) === 0x50 && g.charCodeAt(2) === 0x4e && g.charCodeAt(3) === 0x47) j = 'png';
+ }
+ }
+ j = (j || 'JPEG').toLowerCase();
+ if (e0(j)) throw new Error('addImage currently only supports formats ' + X + ', not \'' + j + '\'');
+ if (R(j)) throw new Error('please ensure that the plugin for \'' + j + '\' support is added');
+ if (this.supportsArrayBuffer()) {
+ M = g;
+ g = this.binaryStringToUint8Array(g);
+ }
+ K = this['process' + j.toUpperCase()](g, k0(I), s, Q(t), M);
+ if (!K) throw new Error('An unkwown error occurred whilst processing the image');
+ }
+ }
+ z0.call(this, m, n, o, q, K, K.i, I);
+ return this;
+ };
+ var C0 = function (g) {
+ 'use strict';
+ var j, m, n;
+ if (!g.charCodeAt(0) === 0xff || !g.charCodeAt(1) === 0xd8 || !g.charCodeAt(2) === 0xff || !g.charCodeAt(3) === 0xe0 || !g.charCodeAt(6) === 'J'.charCodeAt(0) || !g.charCodeAt(7) === 'F'.charCodeAt(0) || !g.charCodeAt(8) === 'I'.charCodeAt(0) || !g.charCodeAt(9) === 'F'.charCodeAt(0) || !g.charCodeAt(10) === 0x00) {
+ throw new Error('getJpegSize requires a binary string jpeg file');
+ }
+ var o = g.charCodeAt(4) * 256 + g.charCodeAt(5),
+ q = 4,
+ s = g.length;
+ while (q < s) {
+ q += o;
+ if (g.charCodeAt(q) !== 0xff) {
+ throw new Error('getJpegSize could not find the size of the image');
+ }
+ if (g.charCodeAt(q + 1) === 0xc0 || g.charCodeAt(q + 1) === 0xc1 || g.charCodeAt(q + 1) === 0xc2 || g.charCodeAt(q + 1) === 0xc3 || g.charCodeAt(q + 1) === 0xc4 || g.charCodeAt(q + 1) === 0xc5 || g.charCodeAt(q + 1) === 0xc6 || g.charCodeAt(q + 1) === 0xc7) {
+ m = g.charCodeAt(q + 5) * 256 + g.charCodeAt(q + 6);
+ j = g.charCodeAt(q + 7) * 256 + g.charCodeAt(q + 8);
+ n = g.charCodeAt(q + 9);
+ return [j, m, n];
+ } else {
+ q += 2;
+ o = g.charCodeAt(q) * 256 + g.charCodeAt(q + 1);
+ }
+ }
+ },
+ Z = function (g) {
+ var j = (g[0] << 8) | g[1];
+ if (j !== 0xFFD8) throw new Error('Supplied data is not a JPEG');
+ var m = g.length,
+ n = (g[4] << 8) + g[5],
+ o = 4,
+ q, s, t, v;
+ while (o < m) {
+ o += n;
+ q = I0(g, o);
+ n = (q[2] << 8) + q[3];
+ if ((q[1] === 0xC0 || q[1] === 0xC2) && q[0] === 0xFF && n > 7) {
+ q = I0(g, o + 5);
+ s = (q[2] << 8) + q[3];
+ t = (q[0] << 8) + q[1];
+ v = q[4];
+ return {
+ width: s,
+ height: t,
+ numcomponents: v
+ };
+ }
+ o += 2;
+ }
+ throw new Error('getJpegSizeFromBytes could not find the size of the image');
+ },
+ I0 = function (g, j) {
+ return g.subarray(j, j + 5);
+ };
+ P.processJPEG = function (g, j, m, n, o) {
+ 'use strict';
+ var q = this.color_spaces.DEVICE_RGB,
+ s = this.decode.DCT_DECODE,
+ t = 8,
+ v;
+ if (this.isString(g)) {
+ v = C0(g);
+ return this.createImageInfo(g, v[0], v[1], v[3] == 1 ? this.color_spaces.DEVICE_GRAY : q, t, s, j, m);
+ }
+ if (this.isArrayBuffer(g)) g = new Uint8Array(g);
+ if (this.isArrayBufferView(g)) {
+ v = Z(g);
+ g = o || this.arrayBufferToBinaryString(g);
+ return this.createImageInfo(g, v.width, v.height, v.numcomponents == 1 ? this.color_spaces.DEVICE_GRAY : q, t, s, j, m);
+ }
+ return null;
+ };
+ P.processJPG = function () {
+ return this.processJPEG.apply(this, arguments);
+ };
+})(jsPDF.API);
\ No newline at end of file
diff --git a/odex30_base/data_chart/static/src/json/ar.json b/odex30_base/data_chart/static/src/json/ar.json
new file mode 100644
index 0000000..d4a0fab
--- /dev/null
+++ b/odex30_base/data_chart/static/src/json/ar.json
@@ -0,0 +1,389 @@
+{
+ "fieldsList": {
+ "flatHierarchyBox": "Select and arrange columns",
+ "hierarchyBox": "Drag Dimensions",
+ "filterBox": "Drop & Arrange Report Filter",
+ "rowBox": "Drop & Arrange Rows",
+ "columnBox": "Drop & Arrange Columns",
+ "measureBox": "Drop & Arrange Values",
+ "values": "Values",
+ "addCalculatedMeasure": "Add calculated value",
+ "expandAll": "Expand All",
+ "collapseAll": "Collapse All",
+ "formulasGroupName": "Calculated Values",
+ "allFields": "All Fields",
+ "rows": "Rows",
+ "columns": "Columns",
+ "filters": "Report Filters",
+ "dropField": "Drop field here",
+ "title": "Fields",
+ "subtitle": "Drag and drop fields to arrange"
+ },
+ "filter": {
+ "all": "All",
+ "multipleItems": "Multiple Items",
+ "selectAll": "Select All",
+ "selectAllResults": "Select All Results",
+ "top": "Top",
+ "bottom": "Bottom",
+ "ascSort": "Az",
+ "descSort": "zA",
+ "topX": "Top 10",
+ "clearTopX": "Clear",
+ "measuresPrompt": "Choose value",
+ "search": "Search",
+ "amountSelected": "{0} of {1} selected",
+ "amountFound": "{0} of {1} found are selected",
+ "sort": "Sort:",
+ "addGroup": "Add group",
+ "groupName": "Group 1",
+ "ungroup": "Ungroup"
+ },
+ "drillThrough": {
+ "title": "العنوان",
+ "row": "سطر: {0} ",
+ "column": "عمود: {0} ",
+ "value": "{0}: {1} "
+ },
+ "calculatedView": {
+ "title": "قيمة محسوبة",
+ "measureBox": "Drag values to formula",
+ "measureName": "Value name",
+ "formula": "Formula",
+ "formulaPrompt": "Drop values and edit formula here",
+ "calculateIndividualValues": "Calculate individual values",
+ "removeValue": "Remove",
+ "removeValueTitle": "Remove {0}?",
+ "removeValueMessage": "Are you sure you want to remove this calculated value?",
+ "header": "Add calculated value",
+ "allValues": "All values"
+ },
+ "grid": {
+ "total": "مجموع",
+ "totals": "مجاميع",
+ "grandTotal": "مجموع إجمالي",
+ "blankMember": "(فارغ)",
+ "dateInvalidCaption": "تاريخ غير صحيح",
+ "reportInformation": "معلومات التقرير"
+ },
+ "tooltips": {
+ "row": "سطر:",
+ "column": "عمود:",
+ "headerResize": "Drag to resize",
+ "headerFit": "Double click to fit",
+ "filterIcon": "Click to filter",
+ "filtered": "Filtered",
+ "expandIcon": "Click to expand",
+ "collapseIcon": "Click to collapse",
+ "drillDown": "Click to drill down",
+ "drillUp": "Click to drill up",
+ "sortIcon": "Click to sort Desc",
+ "sortedDescIcon": "Click to sort Asc",
+ "sortedAscIcon": "Click to sort Desc",
+ "close": "Click to close"
+ },
+ "aggregations": {
+ "sum": {
+ "caption": "مجموع",
+ "totalCaption": "مجموع {0}",
+ "grandTotalCaption": "مجموع إجمالي {0}"
+ },
+ "count": {
+ "caption": "عدد",
+ "totalCaption": "عدد {0}",
+ "grandTotalCaption": "مجموع أعداد {0}"
+ },
+ "distinctCount": {
+ "caption": "Distinct Count",
+ "totalCaption": "Distinct Count of {0}",
+ "grandTotalCaption": "Total Distinct Count of {0}"
+ },
+ "difference": {
+ "caption": "Difference",
+ "totalCaption": "Difference of {0}",
+ "grandTotalCaption": "Difference of {0}"
+ },
+ "percentDifference": {
+ "caption": "% Difference",
+ "totalCaption": "% Difference of {0}",
+ "grandTotalCaption": "% Difference of {0}"
+ },
+ "average": {
+ "caption": "Average",
+ "totalCaption": "Average of {0}",
+ "grandTotalCaption": "Total Average of {0}"
+ },
+ "product": {
+ "caption": "Product",
+ "totalCaption": "Product of {0}",
+ "grandTotalCaption": "Total Product of {0}"
+ },
+ "min": {
+ "caption": "Min",
+ "totalCaption": "Min of {0}",
+ "grandTotalCaption": "Total Min of {0}"
+ },
+ "max": {
+ "caption": "Max",
+ "totalCaption": "Max of {0}",
+ "grandTotalCaption": "Total Max of {0}"
+ },
+ "percent": {
+ "caption": "% of Grand Total",
+ "totalCaption": "% of Grand Total of {0}",
+ "grandTotalCaption": "Total % of Grand Total of {0}"
+ },
+ "percentOfColumn": {
+ "caption": "% of Column",
+ "totalCaption": "% of Column of {0}",
+ "grandTotalCaption": "Total % of Column of {0}"
+ },
+ "percentOfRow": {
+ "caption": "% of Row",
+ "totalCaption": "% of Row of {0}",
+ "grandTotalCaption": "Total % of Row of {0}"
+ },
+ "index": {
+ "caption": "Index",
+ "totalCaption": "Index of {0}",
+ "grandTotalCaption": "Index of {0}"
+ },
+ "none": {
+ "caption": "No Calculation"
+ }
+ },
+ "messages": {
+ "error": "Error!",
+ "warning": "Warning!",
+ "limitation": "Limitation!",
+ "browse": "Browse",
+ "confirmation": "Confirmation",
+ "reportFileType": "Flexmonster report file",
+ "loading": "Loading...",
+ "loadingConfiguration": "",
+ "loadingData": "Loading data...",
+ "waiting": "Waiting for the response {0} sec.",
+ "progress": "{0}K",
+ "progressUnknown": "loaded {0}K",
+ "analyzing": "Analyzing data...",
+ "analyzingProgress": "{0} records of {1} ({2}%)",
+ "analyzingRecords": "{0}% records",
+ "saving": "Saving...",
+ "loadingDimensions": "Loading dimensions...",
+ "loadingHierarchies": "Loading hierarchies...",
+ "loadingMeasures": "Loading measures...",
+ "loadingKPIs": "Loading KPIs...",
+ "loadingMembers": "Loading members...",
+ "loadingLevels": "Loading levels...",
+ "loadingProperties": "Loading properties...",
+ "fullscreen": "Open report in full screen?",
+ "exportComplete": "Export data is created, please click \"Save\" button to save the _data.",
+ "exportProgress": "Export in progress...",
+ "exportError": "Failed to export. An unexpected error occurred.",
+ "generatingPDF": "Generating PDF",
+ "pleaseWait": "Please wait.",
+ "pagesWereGenerated": "pages were generated.",
+ "uploading": "Uploading...",
+ "cantSaveFile": "Cannot save file.",
+ "cantSaveToClipboard": "Error: Cannot write to the clipboard.",
+ "saveReportToFile": "Report is ready to be saved to file, please click \"Save\" button to save the report.",
+ "loadReportFromFile": "Select report file to be loaded.",
+ "inputNewName": "Input new name",
+ "inputReportName": "Please input report name",
+ "invalidDataSource": "Invalid datasource or catalog. Please check. Read more info about this error ",
+ "dataStreamError": "Stream error occurred while loading '{0}'Read more info about this error ",
+ "unableToOpenFile": "Unable to open file {0}. It seems that this file doesn't exist or 'Access-Control-Allow-Origin' header is absent in the resource requested.Read more info about this error ",
+ "unableTwoFileBrowsingSessions": "Browse file dialog is already opened.",
+ "inappropriateFileFormat": "The data file is of inappropriate format.",
+ "invalidJSONdata": "JSON data is invalid.",
+ "wrongFormulaFormat": "Wrong formula format. Please check.",
+ "excelCsvChartsExportError": "Export to Microsoft Excel or CSV is not available for charts.",
+ "excelPdfExportLimitation": "Export to Microsoft Excel or PDF is not available in the current edition.",
+ "excelExportLimitation": "Export is not available in the current edition.",
+ "noDataAvailable": "Data source is empty. Please check the CSV file.",
+ "saveDataToFile": "Data is ready to be saved to file, please click \"Save\" button to save the file.",
+ "dataWasUpdated": "Data source has been updated on the server. Refresh the report?",
+ "ocsvIncompatible": "Unable to read data source. It seems that OCSV file was compressed with a newer version. Please update the component to version {0} or newer.",
+ "unknownError": "Unknown error occurred.",
+ "invalidReportFormat": "Invalid report format or access to file is denied.",
+ "csvHeaderParsingError": "CSV header parsing error.",
+ "tooManyColumnsInClassicMode": "Too many columns for classic form. Switched layout to compact form.",
+ "cantExpand": "Some fields cannot be expanded. Please narrow down the data set.",
+ "cantExpandTitle": "Data set is too large"
+ },
+ "buttons": {
+ "ok": "OK",
+ "apply": "تطبيق",
+ "cancel": "إلغاء",
+ "save": "حفظ",
+ "clear": "تفريغ",
+ "select": "إختيار",
+ "yes": "نعم",
+ "no": "لا"
+ },
+ "contextMenu": {
+ "clearSorting": "Clear sorting",
+ "collapse": "Collapse",
+ "drillThrough": "Drill through",
+ "expand": "Expand",
+ "openFilter": "Open filter",
+ "sortColumnAsc": "Sort column asc",
+ "sortColumnDesc": "Sort column desc",
+ "sortRowAsc": "Sort row asc",
+ "sortRowDesc": "Sort row desc"
+ },
+ "date": {
+ "year": "Year",
+ "quarter": "Quarter",
+ "month": "Month",
+ "day": "Day"
+ },
+ "quarters": {
+ "q1": "Quarter 1",
+ "q2": "Quarter 2",
+ "q3": "Quarter 3",
+ "q4": "Quarter 4"
+ },
+ "months": {
+ "january": "January",
+ "february": "February",
+ "march": "March",
+ "april": "April",
+ "may": "May",
+ "june": "June",
+ "july": "July",
+ "august": "August",
+ "september": "September",
+ "october": "October",
+ "november": "November",
+ "december": "December"
+ },
+ "monthsShort": {
+ "january": "Jan",
+ "february": "Feb",
+ "march": "Mar",
+ "april": "Apr",
+ "may": "May",
+ "june": "Jun",
+ "july": "Jul",
+ "august": "Aug",
+ "september": "Sep",
+ "october": "Oct",
+ "november": "Nov",
+ "december": "Dec"
+ },
+ "weekdays": {
+ "first": "Sunday",
+ "second": "Monday",
+ "third": "Tuesday",
+ "fourth": "Wednesday",
+ "fifth": "Thursday",
+ "sixth": "Friday",
+ "seventh": "Saturday"
+ },
+ "weekdaysShort": {
+ "first": "Sun",
+ "second": "Mon",
+ "third": "Tue",
+ "fourth": "Wed",
+ "fifth": "Thu",
+ "sixth": "Fri",
+ "seventh": "Sat"
+ },
+ "toolbar": {
+ "connect": "Connect",
+ "connect_local_csv": "To local CSV",
+ "connect_local_ocsv": "To local OCSV",
+ "connect_local_json": "To local JSON",
+ "connect_remote_csv": "To remote CSV",
+ "connect_remote_csv_mobile": "CSV",
+ "connect_remote_json": "To remote JSON",
+ "connect_remote_json_mobile": "JSON",
+ "open": "Open",
+ "local_report": "Local report",
+ "remote_report": "Remote report",
+ "remote_report_mobile": "Report",
+ "save": "Save",
+ "save_json": null,
+ "load_json": "JSON report",
+ "grid": "Grid",
+ "grid_flat": "Flat",
+ "grid_classic": "Classic",
+ "grid_compact": "Compact",
+ "format": "التنسيق",
+ "format_cells": "تنسيق الخلايا",
+ "format_cells_mobile": "تنسيق",
+ "conditional_formatting": "التنسيق الشرطي",
+ "conditional_formatting_mobile": "شرطي",
+ "options": "الخيارات",
+ "fullscreen": "شاشة كاملة",
+ "minimize": "تصغير",
+ "export": "إستخراج",
+ "export_print": "Print",
+ "export_html": "To HTML",
+ "export_excel": "To Excel",
+ "export_pdf": "To PDF",
+ "fields": "الحقول",
+ "ok": "حسنا",
+ "apply": "تطبيق",
+ "done": "تم",
+ "cancel": "إلغاء",
+ "value": "Value",
+ "delete": "حذف",
+ "if": "إذا كان",
+ "then": "فإن",
+ "open_remote_csv": "Open remote CSV",
+ "open_remote_json": "Open remote JSON",
+ "csv": "CSV",
+ "open_remote_report": "Open remote report",
+ "choose_value": "إختر قيمة",
+ "text_align": "Text align",
+ "align_left": "يسار",
+ "align_right": "يمين",
+ "none": "فارغ",
+ "space": "(مساحة)",
+ "thousand_separator": "علامة اﻷلوف",
+ "decimal_separator": "العلامة العشرية",
+ "decimal_places": "Decimal places",
+ "currency_symbol": "علامة العملة",
+ "currency_align": "تنسيق العملة",
+ "null_value": "قيمةفارغة",
+ "is_percent": "تنسيق كمئوي",
+ "true_value": "صواب",
+ "false_value": "خطأ",
+ "conditional": "شرطي",
+ "add_condition": "إضافة شرط",
+ "less_than": "أقل من ",
+ "less_than_or_equal": "أقل من أو يساوي",
+ "greater_than": "أكبر من ",
+ "greater_than_or_equal": "أكبر من أو يساوي",
+ "equal_to": "يساوي",
+ "not_equal_to": "لا يساوي",
+ "between": "بين",
+ "is_empty": "خالي",
+ "all_values": "كل القيم",
+ "and": "و",
+ "and_symbole": "&",
+ "cp_text": "نص",
+ "cp_highlight": "لون الخلفية",
+ "layout_options": "خيارات التنسيق",
+ "layout": "التنسيق",
+ "compact_view": "Compact form",
+ "classic_view": "Classic form",
+ "flat_view": "Flat form",
+ "grand_totals": "المجموع الإجمالي",
+ "grand_totals_off": "عدم إظهار المجموع الإجمالي",
+ "grand_totals_on": "إظهار المجموع الإجمالي",
+ "grand_totals_on_rows": "إظهار المجموع الإجمالي للسطور فقط",
+ "grand_totals_on_columns": "إظهار المجموع الإجمالي للأعمدة فقط",
+ "subtotals": "المجاميع الفرعية",
+ "subtotals_off": "عدم إظهار المجاميع الفرعية",
+ "subtotals_on": "إظهار المجاميع الفرعية",
+ "subtotals_on_rows": "إظهار المجاميع الفرعية للسطور فقط",
+ "subtotals_on_columns": "إظهار المجاميع الفرعية للأعمدة فقط",
+ "choose_page_orientation": "إختار تنسيق الصفحة",
+ "landscape": "أفقي",
+ "portrait": "رأسي",
+ "to_printer": "إلى الطابعة"
+ }
+}
\ No newline at end of file
diff --git a/odex30_base/data_chart/static/src/less/report_design.less b/odex30_base/data_chart/static/src/less/report_design.less
new file mode 100644
index 0000000..02a8ff7
--- /dev/null
+++ b/odex30_base/data_chart/static/src/less/report_design.less
@@ -0,0 +1,47 @@
+.wdr_component_sub_container {
+ width: 100%;
+ text-align: center;
+ position: relative;
+ background-color: #fff;
+ padding: 2em;
+
+ h1 {
+ margin: 0 0 2rem 0;
+ }
+
+ .message_demo_barcodes {
+ font-size: 0.9em;
+ margin: 0;
+ }
+
+ img {
+ overflow:hidden; // prevent margins colapsing with h1
+ margin-top: 3rem;
+ width: 200px;
+ }
+
+ p {
+ text-align: left;
+ margin: 3rem 0;
+ }
+
+ > button {
+ font-size: 1.2em;
+ margin-bottom: 2rem;
+ width: 100%;
+ }
+
+ > button:last-child {
+ margin-bottom: 0;
+ }
+
+ @media (min-width: @screen-sm-min) {
+ flex: 0 0 auto;
+ width: 550px;
+ border-radius: 10px;
+ background-color: rgba(255,255,255,0.8);
+ box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.6);
+ font-size: 1.2em;
+ padding: 3em;
+ }
+}
\ No newline at end of file
diff --git a/odex30_base/data_chart/static/src/xml/data_chart_templates.xml b/odex30_base/data_chart/static/src/xml/data_chart_templates.xml
new file mode 100644
index 0000000..23eecb0
--- /dev/null
+++ b/odex30_base/data_chart/static/src/xml/data_chart_templates.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/data_chart/views/data_chart_report_view.xml b/odex30_base/data_chart/views/data_chart_report_view.xml
new file mode 100644
index 0000000..2c607eb
--- /dev/null
+++ b/odex30_base/data_chart/views/data_chart_report_view.xml
@@ -0,0 +1,95 @@
+
+
+
+
+ data.chart.report.view.tree
+ data.chart.report
+
+
+
+
+
+
+
+
+
+ data.chart.report.view.form
+ data.chart.report
+
+
+
+
+
+
+
+ Reports
+ data.chart.report
+ list,form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/data_chart/views/views.xml b/odex30_base/data_chart/views/views.xml
new file mode 100644
index 0000000..4b2b790
--- /dev/null
+++ b/odex30_base/data_chart/views/views.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/odex30_base/query_deluxe/__init__.py b/odex30_base/query_deluxe/__init__.py
new file mode 100644
index 0000000..cf6c429
--- /dev/null
+++ b/odex30_base/query_deluxe/__init__.py
@@ -0,0 +1,3 @@
+from . import wizard
+from . import report
+from . import models
diff --git a/odex30_base/query_deluxe/__manifest__.py b/odex30_base/query_deluxe/__manifest__.py
new file mode 100644
index 0000000..78b9b9c
--- /dev/null
+++ b/odex30_base/query_deluxe/__manifest__.py
@@ -0,0 +1,28 @@
+{
+ 'name': 'PostgreSQL Query Deluxe',
+ 'description': 'Execute postgreSQL query into Odoo interface',
+ 'author': 'Yvan Dotet',
+ 'depends': ['base', 'mail'],
+ 'application': True,
+ 'version': '18.0.0.1',
+ 'license': 'AGPL-3',
+ 'support': 'yvandotet@yahoo.fr',
+ 'website': 'https://github.com/YvanDotet/query_deluxe/',
+ 'installable': True,
+
+ 'data': [
+ 'security/security.xml',
+ 'security/ir.model.access.csv',
+
+ 'views/querydeluxe.xml',
+
+ 'wizard/pdforientation.xml',
+
+ 'report/print_pdf.xml',
+
+ 'datas/data.xml'
+ ],
+
+ 'images': ['static/description/banner.gif']
+}
+
diff --git a/odex30_base/query_deluxe/datas/data.xml b/odex30_base/query_deluxe/datas/data.xml
new file mode 100644
index 0000000..964fafb
--- /dev/null
+++ b/odex30_base/query_deluxe/datas/data.xml
@@ -0,0 +1,85 @@
+
+
+
+ ALTER DATABASE mycurrentdatabasename RENAME TO newnamefordatabase;
+ Give a new name to a database
+
+
+
+ DROP TABLE mytable;
+ Drop the table 'mytable'
+
+
+
+ INSERT INTO mytable VALUES (30, 'first rec', 'this is the first record');
+ Insert row in the table 'mytable' with the corresponding column and type
+
+
+
+ CREATE TABLE mytable (id Integer, name char(10), description char(40));
+ Create a table 'mytable' with a column for id,name and description
+
+
+
+ SELECT a.name,b.name FROM res_partner a INNER JOIN sale_order b ON a.id=b.partner_id;
+ Select the clients linked with their sales orders
+
+
+
+ DELETE FROM sale_order WHERE write_date <= '2017-12-31'::date;
+ Delete old sale_orders that was last modified before the 2018 year
+
+
+
+ UPDATE res_partner AS a SET email = CONCAT(a.name,'@company_mail.com');
+ Modify all the email of the contact within the rule 'name of the contact'+'@company_mail.com'
+
+
+
+ UPDATE res_users SET password = 'my_45_password' WHERE id = 10;
+ Modify the password to 'my_45_password' for the user with id = 10
+
+
+
+
+WITH temporary_table AS (
+ SELECT pt.id AS pt_id, pp.id AS pp_id
+ FROM product_template pt
+ LEFT JOIN product_product pp
+ ON pp.product_tmpl_id = pt.id
+)
+SELECT * FROM temporary_table ORDER BY pt_id;
+
+ Associate each product template with their product variant
+
+
+
+ SELECT * FROM sale_order WHERE partner_id IN (SELECT id FROM res_partner WHERE name ILIKE '%Johnson%') LIMIT 5;
+ Show only the 5 first records of sale.order's model where their client have 'Johnson' in their name
+
+
+
+ SELECT version();
+ The version of that postgreSQL
+
+
+
+ SELECT * FROM pg_user;
+ List of all the users using that postgreSQL
+
+
+
+ SELECT datname FROM pg_database;
+ List of all the databases inside that postgreSQL
+
+
+
+ SELECT * FROM pg_catalog.pg_tables;
+ Display all the tables inside that database
+
+
+
+ SELECT name,phone,email FROM res_partner;
+ Display all the records of res.partner's model, with name, phone and email attributes
+
+
diff --git a/odex30_base/query_deluxe/doc/index.rst b/odex30_base/query_deluxe/doc/index.rst
new file mode 100644
index 0000000..9e2e6df
--- /dev/null
+++ b/odex30_base/query_deluxe/doc/index.rst
@@ -0,0 +1,39 @@
+==============
+query_deluxe
+==============
+
+This module is usefull to make postgreSQL's queries directly from an Odoo interface.
+
+You can type queries involving SELECT statement and many clauses like WHERE, AND, etc ...
+
+The result is correctly presented in a table form and you can print your table's result in a PDF format.
+
+You can also make UPDATE, DELETE, CREATE, INSERT, ALTER and DROP statements.
+
+Usage
+=====
+
+Go to "Apps" menu and type "query_deluxe" into the search box.
+
+Odoo version 18
+
+Credits
+=======
+
+Authors
+~~~~~~~
+
+* Yvan Dotet
+
+Maintainers
+~~~~~~~~~~~
+
+* This module is maintained by Yvan Dotet.
+
+Contact
+~~~~~~~
+
+* Mail address of Yvan Dotet : Yvandotet@yahoo.fr
+* website :
+ 1) https://github.com/YvanDotet/query_deluxe
+ 2) https://be.linkedin.com/in/yvan-dotet-19ba67135
diff --git a/odex30_base/query_deluxe/i18n/fr.po b/odex30_base/query_deluxe/i18n/fr.po
new file mode 100644
index 0000000..b2dbcab
--- /dev/null
+++ b/odex30_base/query_deluxe/i18n/fr.po
@@ -0,0 +1,507 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * query_deluxe
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 18.0+e\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-09-27 18:55+0000\n"
+"PO-Revision-Date: 2024-09-27 18:55+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: query_deluxe
+#. odoo-python
+#: code:addons/query_deluxe/wizard/pdforientation.py:0
+msgid ""
+"\n"
+" \n"
+" Be careful , it will execute the query one more time on your database in order to get-back the datas used to print the result.\n"
+" \n"
+" For example, query with CREATE or UPDATE statement without any 'RETURNING' statement will not necessary print a table unlike SELECT statement,\n"
+" \n"
+" but it will still be executed one time in the background during the attempt of printing process .\n"
+" \n"
+" So when you want to print the result, use preferably 'SELECT' statement to be sure to not execute an unwanted query twice.\n"
+"
\n"
+" "
+msgstr ""
+"\n"
+" \n"
+" Attention , celà va exécuter la requête une nouvelle fois sur votre base de données afin de récupérer les données utilisées pour imprimer le résultat.\n"
+" \n"
+" Par exemple, une requête avec une instruction CREATE ou UPDATE sans aucune instruction 'RETURNING' n'imprimera pas nécessairement une table contrairement à l'instruction SELECT ,\n"
+" \n"
+" mais elle sera tout de même exécutée une fois en arrière-plan lors de la tentative d'impression .\n"
+" \n"
+" Ainsi, lorsque vous souhaitez imprimer le résultat, utilisez de préférence l'instruction 'SELECT' pour être sûr de ne pas exécuter deux fois une requête indésirable.\n"
+"
\n"
+" "
+
+#. module: query_deluxe
+#: model:res.groups,name:query_deluxe.group_querydeluxe
+msgid "Access query deluxe"
+msgstr "Accès query deluxe"
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__message_needaction
+msgid "Action Needed"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__active
+msgid "Active"
+msgstr "Actif"
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__activity_ids
+msgid "Activities"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__activity_exception_decoration
+msgid "Activity Exception Decoration"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__activity_state
+msgid "Activity State"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__activity_type_icon
+msgid "Activity Type Icon"
+msgstr ""
+
+#. module: query_deluxe
+#: model:querydeluxe,note:query_deluxe.with_product_table
+msgid "Associate each product template with their product variant"
+msgstr "Associe chaque produit template avec leurs produits variants"
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__message_attachment_count
+msgid "Attachment Count"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_pdforientation__caution_html
+msgid "CAUTION"
+msgstr "ATTENTION"
+
+#. module: query_deluxe
+#: model_terms:ir.ui.view,arch_db:query_deluxe.pdforientation_form
+msgid "Cancel"
+msgstr "Annuler"
+
+#. module: query_deluxe
+#: model:ir.actions.act_window,name:query_deluxe.querydeluxe_action
+msgid "Create a new query"
+msgstr "Créer une nouvelle requête"
+
+#. module: query_deluxe
+#: model:querydeluxe,note:query_deluxe.create_table_mytable
+msgid "Create a table 'mytable' with a column for id,name and description"
+msgstr ""
+"Créée une table 'mytable' avec une colonne pour l'id, le nom et la "
+"description"
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_pdforientation__create_uid
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__create_uid
+msgid "Created by"
+msgstr "Créé par"
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_pdforientation__create_date
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__create_date
+msgid "Created on"
+msgstr "Créé le"
+
+#. module: query_deluxe
+#: model:querydeluxe,note:query_deluxe.delete_sale_order
+msgid "Delete old sale_orders that was last modified before the 2018 year"
+msgstr ""
+"Supprime les anciens devis qui ont été modifiés pour la dernière fois avant "
+"l'année 2018"
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_pdforientation__display_name
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__display_name
+msgid "Display Name"
+msgstr "Nom affiché"
+
+#. module: query_deluxe
+#: model:querydeluxe,note:query_deluxe.select_res_partner
+msgid ""
+"Display all the records of res.partner's model, with name, phone and email "
+"attributes"
+msgstr ""
+"Affiche tous les enregistrements du modèle de res.partner, avec leur noms, "
+"numéros de téléphone et emails"
+
+#. module: query_deluxe
+#: model:querydeluxe,note:query_deluxe.select_pg_catalog_pg_table
+msgid "Display all the tables inside that database"
+msgstr "Affiche toutes les tables de cette base de données"
+
+#. module: query_deluxe
+#: model:querydeluxe,note:query_deluxe.drop_table_mytable
+msgid "Drop the table 'mytable'"
+msgstr "Efface la table 'mytable'"
+
+#. module: query_deluxe
+#: model_terms:ir.ui.view,arch_db:query_deluxe.querydeluxe_form
+msgid "Execute"
+msgstr "Exécuter"
+
+#. module: query_deluxe
+#: model_terms:ir.ui.view,arch_db:query_deluxe.querydeluxe_search
+msgid "Filter"
+msgstr "Filtrer"
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__message_follower_ids
+msgid "Followers"
+msgstr "Abonnés"
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__message_partner_ids
+msgid "Followers (Partners)"
+msgstr "Abonnés (Partenaires)"
+
+#. module: query_deluxe
+#: model:ir.model.fields,help:query_deluxe.field_querydeluxe__activity_type_icon
+msgid "Font awesome icon e.g. fa-tasks"
+msgstr ""
+
+#. module: query_deluxe
+#: model:querydeluxe,note:query_deluxe.alter_database_rename
+msgid "Give a new name to a database"
+msgstr "Donne un nouveau nom à une base de données"
+
+#. module: query_deluxe
+#: model_terms:ir.ui.view,arch_db:query_deluxe.querydeluxe_search
+msgid "Group by"
+msgstr "Grouper par"
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__html
+msgid "HTML"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__has_message
+msgid "Has Message"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_pdforientation__understand
+msgid "I understand"
+msgstr "J'ai compris"
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_pdforientation__id
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__id
+msgid "ID"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__activity_exception_icon
+msgid "Icon"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,help:query_deluxe.field_querydeluxe__activity_exception_icon
+msgid "Icon to indicate an exception activity."
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,help:query_deluxe.field_querydeluxe__message_needaction
+msgid "If checked, new messages require your attention."
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,help:query_deluxe.field_querydeluxe__message_has_error
+msgid "If checked, some messages have a delivery error."
+msgstr ""
+
+#. module: query_deluxe
+#: model:querydeluxe,note:query_deluxe.insert_into_mytable
+msgid ""
+"Insert row in the table 'mytable' with the corresponding column and type"
+msgstr ""
+"Insére une ligne dans la table 'mytable' avec la colonne et le type "
+"correspondants"
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__message_is_follower
+msgid "Is Follower"
+msgstr ""
+
+#. module: query_deluxe
+#. odoo-python
+#: code:addons/query_deluxe/wizard/pdforientation.py:0
+msgid "Landscape"
+msgstr "Paysage"
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_pdforientation__write_uid
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__write_uid
+msgid "Last Updated by"
+msgstr "Dernière mise à jour par"
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_pdforientation__write_date
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__write_date
+msgid "Last Updated on"
+msgstr "Dernière mise à jour le"
+
+#. module: query_deluxe
+#: model:querydeluxe,note:query_deluxe.select_datname_pg_database
+msgid "List of all the databases inside that postgreSQL"
+msgstr "Liste de toutes les bases de données à l'intérieur de ce postgreSQL"
+
+#. module: query_deluxe
+#: model:querydeluxe,note:query_deluxe.select_pg_user
+msgid "List of all the users using that postgreSQL"
+msgstr "Liste de tous les utilisateurs utilisant ce postgreSQL"
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__message_has_error
+msgid "Message Delivery error"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__message_ids
+msgid "Messages"
+msgstr ""
+
+#. module: query_deluxe
+#: model:querydeluxe,note:query_deluxe.update_res_partner_email
+msgid ""
+"Modify all the email of the contact within the rule 'name of the "
+"contact'+'@company_mail.com'"
+msgstr ""
+"Modifie tous les emails de contact avec la règle suivante : 'nom du "
+"contact'+'@company_mail.com'"
+
+#. module: query_deluxe
+#: model:querydeluxe,note:query_deluxe.update_res_users_password
+msgid "Modify the password to 'my_45_password' for the user with id = 10"
+msgstr ""
+"Modifie le mot de passe en 'my_45_password' pour l'utilisateur d'id = 10"
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__my_activity_date_deadline
+msgid "My Activity Deadline"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__activity_date_deadline
+msgid "Next Activity Deadline"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__activity_summary
+msgid "Next Activity Summary"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__activity_type_id
+msgid "Next Activity Type"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__note
+#: model_terms:ir.ui.view,arch_db:query_deluxe.querydeluxe_list
+#: model_terms:ir.ui.view,arch_db:query_deluxe.querydeluxe_search
+msgid "Note"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__message_needaction_counter
+msgid "Number of Actions"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__message_has_error_counter
+msgid "Number of errors"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,help:query_deluxe.field_querydeluxe__message_needaction_counter
+msgid "Number of messages requiring action"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,help:query_deluxe.field_querydeluxe__message_has_error_counter
+msgid "Number of messages with delivery error"
+msgstr ""
+
+#. module: query_deluxe
+#: model_terms:ir.ui.view,arch_db:query_deluxe.querydeluxe_search
+msgid "Only active"
+msgstr "Seulement les actifs"
+
+#. module: query_deluxe
+#: model_terms:ir.ui.view,arch_db:query_deluxe.querydeluxe_search
+msgid "Only archived"
+msgstr "Seulement les archivés"
+
+#. module: query_deluxe
+#: model:ir.model.fields,help:query_deluxe.field_querydeluxe__note
+msgid ""
+"Optional helpful note about the current query, what it does, the dangers, "
+"etc..."
+msgstr ""
+"Note utile facultative sur la requête en cours, ce qu'elle fait, les "
+"dangers, etc..."
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_pdforientation__orientation
+msgid "PDF orientation"
+msgstr "Orientation du PDF"
+
+#. module: query_deluxe
+#. odoo-python
+#: code:addons/query_deluxe/wizard/pdforientation.py:0
+msgid "Portrait"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model,name:query_deluxe.model_querydeluxe
+msgid "PostgreSQL queries from Odoo interface"
+msgstr "Requête postgreSQL depuis l'interface Odoo"
+
+#. module: query_deluxe
+#: model_terms:ir.ui.view,arch_db:query_deluxe.pdforientation_form
+msgid "Print"
+msgstr "Imprimer"
+
+#. module: query_deluxe
+#: model_terms:ir.ui.view,arch_db:query_deluxe.querydeluxe_form
+msgid "Print PDF"
+msgstr "Imprimer PDF"
+
+#. module: query_deluxe
+#: model:ir.ui.menu,name:query_deluxe.querydeluxe_menu
+msgid "Queries"
+msgstr "Requêtes"
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_pdforientation__name
+#: model:ir.model.fields,field_description:query_deluxe.field_pdforientation__query_id
+#: model_terms:ir.ui.view,arch_db:query_deluxe.querydeluxe_list
+#: model_terms:ir.ui.view,arch_db:query_deluxe.querydeluxe_search
+msgid "Query"
+msgstr "Requête"
+
+#. module: query_deluxe
+#: model_terms:ir.ui.view,arch_db:query_deluxe.querydeluxe_form
+msgid "Query :"
+msgstr "Requête :"
+
+#. module: query_deluxe
+#: model:ir.ui.menu,name:query_deluxe.query_deluxe_app_menu
+msgid "Query Deluxe"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.actions.report,name:query_deluxe.action_print_pdf
+msgid "Query result"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__activity_user_id
+msgid "Responsible User"
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__rowcount
+msgid "Rowcount"
+msgstr "Nombre de résultat"
+
+#. module: query_deluxe
+#: model_terms:ir.ui.view,arch_db:query_deluxe.querydeluxe_form
+msgid "SELECT * FROM res_partner"
+msgstr ""
+
+#. module: query_deluxe
+#. odoo-python
+#: code:addons/query_deluxe/models/querydeluxe.py:0
+msgid "Select orientation of the PDF's result"
+msgstr "Sélectionner l'orientation du PDF"
+
+#. module: query_deluxe
+#: model:querydeluxe,note:query_deluxe.select_res_partner_inner_join_sale_order
+msgid "Select the clients linked with their sales orders"
+msgstr "Sélectionne les clients liés à leurs devis"
+
+#. module: query_deluxe
+#: model:ir.model,name:query_deluxe.model_pdforientation
+msgid "Select the orientation of the pdf"
+msgstr "Sélectionner l'orientation du PDF"
+
+#. module: query_deluxe
+#: model:querydeluxe,note:query_deluxe.select_sale_order
+msgid ""
+"Show only the 5 first records of sale.order's model where their client have "
+"'Johnson' in their name"
+msgstr ""
+"Affiche uniquement les 5 premiers enregistrements du modèle de sale.order où"
+" leur client possède 'Johnson' dans leur nom"
+
+#. module: query_deluxe
+#: model:ir.model.fields,help:query_deluxe.field_querydeluxe__activity_state
+msgid ""
+"Status based on activities\n"
+"Overdue: Due date is already passed\n"
+"Today: Activity date is today\n"
+"Planned: Future activities."
+msgstr ""
+
+#. module: query_deluxe
+#: model:querydeluxe,note:query_deluxe.select_versions
+msgid "The version of that postgreSQL"
+msgstr "La version de ce postgreSQL"
+
+#. module: query_deluxe
+#: model_terms:ir.ui.view,arch_db:query_deluxe.querydeluxe_form
+msgid "This query is used to ..."
+msgstr "Cette requête est utilisée pour ..."
+
+#. module: query_deluxe
+#: model_terms:ir.ui.view,arch_db:query_deluxe.querydeluxe_form
+msgid "Type a query"
+msgstr "Ecrivez une requête"
+
+#. module: query_deluxe
+#: model:ir.model.fields,field_description:query_deluxe.field_querydeluxe__name
+msgid "Type a query : "
+msgstr "Ecrivez une requête :"
+
+#. module: query_deluxe
+#: model:ir.model.fields,help:query_deluxe.field_querydeluxe__activity_exception_decoration
+msgid "Type of the exception activity on record."
+msgstr ""
+
+#. module: query_deluxe
+#: model:ir.model.fields,help:query_deluxe.field_querydeluxe__name
+msgid "Type the query you want to execute."
+msgstr "Tapez la requête que vous souhaitez exécuter."
+
+#. module: query_deluxe
+#: model_terms:ir.ui.view,arch_db:query_deluxe.querydeluxe_search
+msgid "With note"
+msgstr "Avec une note"
+
+#. module: query_deluxe
+#. odoo-python
+#: code:addons/query_deluxe/models/querydeluxe.py:0
+msgid "{0} row{1} processed"
+msgstr "{0} ligne{1} traitée{1}"
diff --git a/odex30_base/query_deluxe/models/__init__.py b/odex30_base/query_deluxe/models/__init__.py
new file mode 100644
index 0000000..122863e
--- /dev/null
+++ b/odex30_base/query_deluxe/models/__init__.py
@@ -0,0 +1 @@
+from . import querydeluxe
diff --git a/odex30_base/query_deluxe/models/querydeluxe.py b/odex30_base/query_deluxe/models/querydeluxe.py
new file mode 100644
index 0000000..e7d0bd2
--- /dev/null
+++ b/odex30_base/query_deluxe/models/querydeluxe.py
@@ -0,0 +1,98 @@
+from odoo import api, fields, models, exceptions, _
+
+
+class QueryDeluxe(models.Model):
+ _name = "querydeluxe"
+ _description = "PostgreSQL queries from Odoo interface"
+ _inherit = ['mail.thread', 'mail.activity.mixin']
+ _order = "id desc"
+
+ active = fields.Boolean(string="Active", default=True)
+
+ rowcount = fields.Text(string='Rowcount')
+ html = fields.Html(string='HTML')
+
+ name = fields.Text(string='Type a query : ', help="Type the query you want to execute.")
+ note = fields.Char(string="Note", help="Optional helpful note about the current query, what it does, the dangers, etc...", translate=True)
+
+ def print_result_pdf(self):
+ if self:
+ self = self.sudo()
+ first = self[0]
+ return {
+ 'name': _("Select orientation of the PDF's result"),
+ 'view_mode': 'form',
+ 'res_model': 'pdforientation',
+ 'type': 'ir.actions.act_window',
+ 'target': 'new',
+ 'context': {
+ 'default_name': first.name,
+ 'default_query_id': first.id
+ },
+ }
+
+ def _get_result_from_query(self, query):
+ self = self.sudo()
+ headers = []
+ datas = []
+
+ if query:
+ try:
+ self.env.cr.execute(query)
+ except Exception as e:
+ raise exceptions.UserError(e)
+
+ try:
+ if self.env.cr.description:
+ headers = [d[0] for d in self.env.cr.description]
+ datas = self.env.cr.fetchall()
+ except Exception as e:
+ raise exceptions.UserError(e)
+
+ return headers, datas
+
+ def execute(self):
+ for record in self.sudo():
+ vals = {
+ "rowcount": False,
+ "html": False
+ }
+
+ if record.name:
+ record.message_post(body=str(record.name))
+
+ headers, datas = self._get_result_from_query(record.name)
+
+ rowcount = record.env.cr.rowcount
+ vals["rowcount"] = _("{0} row{1} processed").format(rowcount, 's' if 1 < rowcount else '')
+
+ if headers and datas:
+ header_html = " "
+ header_html += "".join([""+str(header)+" " for header in headers])
+ header_html += " "
+
+ body_html = ""
+ i = 0
+ for data in datas:
+ i += 1
+ body_line = " {1} ".format('cyan' if i%2 == 0 else 'white', i)
+ for value in data:
+ display_value = ''
+ if value is not None:
+ display_value = str(value).replace("&", "&").replace("<", "<").replace(">", ">")
+ body_line += "{0} ".format(display_value)
+ body_line += " "
+ body_html += body_line
+
+ vals["html"] = """
+
+ """.format(header_html, body_html)
+ record.update(vals)
diff --git a/odex30_base/query_deluxe/report/__init__.py b/odex30_base/query_deluxe/report/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/odex30_base/query_deluxe/report/print_pdf.xml b/odex30_base/query_deluxe/report/print_pdf.xml
new file mode 100644
index 0000000..1c4ce11
--- /dev/null
+++ b/odex30_base/query_deluxe/report/print_pdf.xml
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Paperformat query deluxe
+
+ A4
+ 0
+ 0
+ Landscape
+ 3
+ 3
+ 3
+ 3
+
+ 3
+ 80
+
+
+
+ Query result
+ querydeluxe
+ query_deluxe.pdf_layout
+ qweb-pdf
+
+
+
diff --git a/odex30_base/query_deluxe/security/ir.model.access.csv b/odex30_base/query_deluxe/security/ir.model.access.csv
new file mode 100644
index 0000000..9b5e674
--- /dev/null
+++ b/odex30_base/query_deluxe/security/ir.model.access.csv
@@ -0,0 +1,3 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_querydeluxe,querydeluxe access,query_deluxe.model_querydeluxe,query_deluxe.group_querydeluxe,1,1,1,1
+access_pdforientation,pdforientation access,query_deluxe.model_pdforientation,query_deluxe.group_querydeluxe,1,1,1,1
diff --git a/odex30_base/query_deluxe/security/security.xml b/odex30_base/query_deluxe/security/security.xml
new file mode 100644
index 0000000..c573195
--- /dev/null
+++ b/odex30_base/query_deluxe/security/security.xml
@@ -0,0 +1,14 @@
+
+
+
+ Access query deluxe
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/query_deluxe/static/description/banner.gif b/odex30_base/query_deluxe/static/description/banner.gif
new file mode 100644
index 0000000..995dd2b
Binary files /dev/null and b/odex30_base/query_deluxe/static/description/banner.gif differ
diff --git a/odex30_base/query_deluxe/static/description/example_query.png b/odex30_base/query_deluxe/static/description/example_query.png
new file mode 100644
index 0000000..7f8876f
Binary files /dev/null and b/odex30_base/query_deluxe/static/description/example_query.png differ
diff --git a/odex30_base/query_deluxe/static/description/examples.png b/odex30_base/query_deluxe/static/description/examples.png
new file mode 100644
index 0000000..0abe081
Binary files /dev/null and b/odex30_base/query_deluxe/static/description/examples.png differ
diff --git a/odex30_base/query_deluxe/static/description/history.png b/odex30_base/query_deluxe/static/description/history.png
new file mode 100644
index 0000000..fab616e
Binary files /dev/null and b/odex30_base/query_deluxe/static/description/history.png differ
diff --git a/odex30_base/query_deluxe/static/description/icon.png b/odex30_base/query_deluxe/static/description/icon.png
new file mode 100644
index 0000000..98fa686
Binary files /dev/null and b/odex30_base/query_deluxe/static/description/icon.png differ
diff --git a/odex30_base/query_deluxe/static/description/index.html b/odex30_base/query_deluxe/static/description/index.html
new file mode 100644
index 0000000..e8b1198
--- /dev/null
+++ b/odex30_base/query_deluxe/static/description/index.html
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
The complete app for making easy queries in PostgreSQL
+
+ Explore your PostgreSQL database with query into an Odoo interface
+
+ You can use SELECT, UPDATE, DELETE, CREATE, INSERT, ALTER and DROP statements.
+
+
+
+
+
+
+
+
+
+
+
Note to remember what the query does
+
What it does, why doing this, the dangers, etc...
+
+
+
+
+
+
+
+
+
+
Print your result
+
+
+
+
PDF format
+
+ Print your table's result in a PDF format, landscape or portrait orientation.
+
+
+
+
+
+
+
+
Many examples
+
The module is pre-filled by useful queries.
+
+
+ You can modify them and used them for inspiration.
+
+
+
+
+
+
+
+
+
+
+
History
+
History of your previous queries
+
+
+ You can retrieve the last queries you have typed.
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/query_deluxe/static/description/note_query.png b/odex30_base/query_deluxe/static/description/note_query.png
new file mode 100644
index 0000000..6d69616
Binary files /dev/null and b/odex30_base/query_deluxe/static/description/note_query.png differ
diff --git a/odex30_base/query_deluxe/static/description/print_result.png b/odex30_base/query_deluxe/static/description/print_result.png
new file mode 100644
index 0000000..a5e7178
Binary files /dev/null and b/odex30_base/query_deluxe/static/description/print_result.png differ
diff --git a/odex30_base/query_deluxe/static/description/simple_query.png b/odex30_base/query_deluxe/static/description/simple_query.png
new file mode 100644
index 0000000..ab7ccb7
Binary files /dev/null and b/odex30_base/query_deluxe/static/description/simple_query.png differ
diff --git a/odex30_base/query_deluxe/views/querydeluxe.xml b/odex30_base/query_deluxe/views/querydeluxe.xml
new file mode 100644
index 0000000..166a247
--- /dev/null
+++ b/odex30_base/query_deluxe/views/querydeluxe.xml
@@ -0,0 +1,90 @@
+
+
+
+
+ querydeluxe list
+ querydeluxe
+
+
+
+
+
+
+
+
+
+ querydeluxe form
+ querydeluxe
+
+
+
+
+
+
+ querydeluxe search
+ querydeluxe
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create a new query
+ querydeluxe
+ ir.actions.act_window
+ list,form
+
+
+
+
+
diff --git a/odex30_base/query_deluxe/wizard/__init__.py b/odex30_base/query_deluxe/wizard/__init__.py
new file mode 100644
index 0000000..68c701d
--- /dev/null
+++ b/odex30_base/query_deluxe/wizard/__init__.py
@@ -0,0 +1 @@
+from . import pdforientation
diff --git a/odex30_base/query_deluxe/wizard/pdforientation.py b/odex30_base/query_deluxe/wizard/pdforientation.py
new file mode 100644
index 0000000..795477d
--- /dev/null
+++ b/odex30_base/query_deluxe/wizard/pdforientation.py
@@ -0,0 +1,39 @@
+from odoo import api, fields, models, _
+
+
+class PdfOrientation(models.TransientModel):
+ _name = 'pdforientation'
+ _description = "Select the orientation of the pdf"
+
+ def orientation_choices(self):
+ return [('landscape', _('Landscape')), ('portrait', _('Portrait'))]
+
+ def get_default_caution_html(self):
+ return _("""
+
+ Be careful , it will execute the query one more time on your database in order to get-back the datas used to print the result.
+
+ For example, query with CREATE or UPDATE statement without any 'RETURNING' statement will not necessary print a table unlike SELECT statement,
+
+ but it will still be executed one time in the background during the attempt of printing process .
+
+ So when you want to print the result, use preferably 'SELECT' statement to be sure to not execute an unwanted query twice.
+
+ """)
+
+ orientation = fields.Selection(string="PDF orientation", selection=orientation_choices, default='landscape')
+ name = fields.Text(string="Query")
+ query_id = fields.Many2one('querydeluxe', string="Query")
+ caution_html = fields.Html(string="CAUTION", default=get_default_caution_html)
+ understand = fields.Boolean(string="I understand")
+
+ def print_pdf(self):
+ if self:
+ self = self.sudo()
+ first = self[0]
+ action_print_pdf = self.env.ref('query_deluxe.action_print_pdf')
+ if first.orientation == 'landscape':
+ action_print_pdf.paperformat_id.orientation = "Landscape"
+ elif first.orientation == 'portrait':
+ action_print_pdf.paperformat_id.orientation = "Portrait"
+ return action_print_pdf.report_action(first.query_id)
diff --git a/odex30_base/query_deluxe/wizard/pdforientation.xml b/odex30_base/query_deluxe/wizard/pdforientation.xml
new file mode 100644
index 0000000..fd408b4
--- /dev/null
+++ b/odex30_base/query_deluxe/wizard/pdforientation.xml
@@ -0,0 +1,32 @@
+
+
+
+
+ pdforientation.form
+ pdforientation
+
+
+
+
+
diff --git a/odex30_base/send_report_by_email/__init__.py b/odex30_base/send_report_by_email/__init__.py
new file mode 100644
index 0000000..c47aa79
--- /dev/null
+++ b/odex30_base/send_report_by_email/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+from . import send_report_by_email
\ No newline at end of file
diff --git a/odex30_base/send_report_by_email/__manifest__.py b/odex30_base/send_report_by_email/__manifest__.py
new file mode 100644
index 0000000..260f4cd
--- /dev/null
+++ b/odex30_base/send_report_by_email/__manifest__.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Expert Co. Ltd.
+# Copyright (C) 2018 ( ).
+#
+##############################################################################
+
+{
+ 'name': 'Sending Report by Email',
+ 'version': '18.0.1.0.0',
+ 'summary': 'Add generic function which compose an email and attch report to it',
+ 'category': 'Extra Tools',
+ 'author': "Expert Co. Ltd.",
+ 'website': "http://www.exp-sa.com",
+ 'depends': [
+ 'mail',
+ ],
+ 'installable': True,
+ 'auto_install': False,
+ 'application': False,
+}
diff --git a/odex30_base/send_report_by_email/data/mail_template_data.xml b/odex30_base/send_report_by_email/data/mail_template_data.xml
new file mode 100644
index 0000000..1febdf8
--- /dev/null
+++ b/odex30_base/send_report_by_email/data/mail_template_data.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ ${object.name or '' } Report - Send by Email
+ ${(object.create_uid.email and '%s <%s>' % (object.create_uid.name, object.create_uid.email) or '')|safe}
+ ${object.company_id.name} ${object.name or '' } Report
+
+
+
+
+ ${(object.name or '').replace('/','_')} Report
+ ${object.create_uid.lang}
+
+ Dear ,
+
+Here is, in attachment, a ${object.name} Report
+
+
+Best regards,
+
+% if object.create_uid and object.create_uid.signature:
+ ${object.create_uid.signature | safe}
+% endif
+
+]]>
+
+
+
+
diff --git a/odex30_base/send_report_by_email/send_report_by_email.py b/odex30_base/send_report_by_email/send_report_by_email.py
new file mode 100644
index 0000000..008e3e6
--- /dev/null
+++ b/odex30_base/send_report_by_email/send_report_by_email.py
@@ -0,0 +1,77 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Expert Co. Ltd.
+# Copyright (C) 2018 ( ).
+#
+##############################################################################
+
+from odoo import models, api, _
+import base64
+
+
+def action_send_report(self, report_id, report_name, data):
+ '''
+ This function opens a window to compose an email, with the edi report template message loaded by default
+ '''
+ self.ensure_one()
+ try:
+ compose_form_id = self.env.ref('mail.email_compose_message_wizard_form')
+ except ValueError:
+ compose_form_id = False
+ pdf = self.env['ir.actions.report'].search(
+ [('report_name', '=', report_id),
+ ('report_type', '=', 'qweb-pdf')], limit=1)._render_qweb_pdf(self.ids, data)
+ b64_pdf = base64.encodebytes(pdf[0])
+ attachment_name = report_name
+ attach_id = self.env['ir.attachment'].create({
+ 'name': attachment_name + '.pdf',
+ 'type': 'binary',
+ 'datas': b64_pdf,
+ 'mimetype': 'application/pdf'
+ })
+
+ user = self.env.user
+ ctx = dict(self.env.context or {})
+ ctx.update({
+ 'default_model': self._name,
+ 'default_res_id': self.id,
+ 'default_auto_delete': True,
+ 'default_email_from': user.email,
+ 'default_subject': attachment_name,
+ 'default_body': _("""
+Dear ,
+
+Here is, in attachment, a %s Report.
+
+
+
+Best regards,
+
+
+%s
+
""" % (attachment_name, user.signature)),
+ 'default_composition_mode': 'comment',
+ 'force_email': True,
+ 'default_attachment_ids': [(6, 0, [attach_id.id])]
+ })
+ return {
+ 'name': _('Compose Email'),
+ 'type': 'ir.actions.act_window',
+ 'view_mode': 'form',
+ 'res_model': 'mail.compose.message',
+ 'views': [(compose_form_id.id, 'form')],
+ 'view_id': compose_form_id.id,
+ 'target': 'new',
+ 'context': ctx,
+ }
+
+
+class MailComposer(models.TransientModel):
+ _inherit = 'mail.compose.message'
+
+ @api.model
+ def default_get(self, fields):
+ result = super(MailComposer, self).default_get(fields)
+ result['subject'] = self._context.get('default_subject', result.get('subject'))
+ return result
diff --git a/odex30_base/send_report_by_email/static/description/icon.png b/odex30_base/send_report_by_email/static/description/icon.png
new file mode 100644
index 0000000..4141f52
Binary files /dev/null and b/odex30_base/send_report_by_email/static/description/icon.png differ
diff --git a/odex30_base/send_report_by_email/static/fonts/ae_AlMohanad.ttf b/odex30_base/send_report_by_email/static/fonts/ae_AlMohanad.ttf
new file mode 100644
index 0000000..bdd7360
Binary files /dev/null and b/odex30_base/send_report_by_email/static/fonts/ae_AlMohanad.ttf differ
diff --git a/odex30_base/send_report_by_email/static/src/css/website_rtl.css b/odex30_base/send_report_by_email/static/src/css/website_rtl.css
new file mode 100644
index 0000000..85347c6
--- /dev/null
+++ b/odex30_base/send_report_by_email/static/src/css/website_rtl.css
@@ -0,0 +1,22 @@
+@media (min-width: 768px){
+ .rtl .navbar-right{
+ float: left !important;
+ }
+ .rtl .navbar-right .dropdown .dropdown-menu{
+ right: auto !important;
+ left: 0 !important;
+ }
+ .rtl .navbar-left{
+ float: right !important;
+ }
+ .rtl .navbar-left .dropdown .dropdown-menu{
+ left: auto !important;
+ right: 0 !important;
+ }
+ .navbar-nav.navbar-right:last-child{
+ margin-left: auto;
+ }
+ .rtl .pull-left{
+ float: right !important;
+ }
+}
diff --git a/odex30_base/server_action_mass_edit/README.rst b/odex30_base/server_action_mass_edit/README.rst
new file mode 100644
index 0000000..3a998a2
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/README.rst
@@ -0,0 +1,172 @@
+.. image:: https://odoo-community.org/readme-banner-image
+ :target: https://odoo-community.org/get-involved?utm_source=readme
+ :alt: Odoo Community Association
+
+============
+Mass Editing
+============
+
+..
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! This file is generated by oca-gen-addon-readme !!
+ !! changes will be overwritten. !!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! source digest: sha256:ad5b24fa705bc1129ad8931d6df7ffede0b4bfc4740e526e137dffeaee8af422
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
+ :target: https://odoo-community.org/page/development-status
+ :alt: Beta
+.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+ :alt: License: AGPL-3
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--ux-lightgray.png?logo=github
+ :target: https://github.com/OCA/server-ux/tree/18.0/server_action_mass_edit
+ :alt: OCA/server-ux
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+ :target: https://translation.odoo-community.org/projects/server-ux-18-0/server-ux-18-0-server_action_mass_edit
+ :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/server-ux&target_branch=18.0
+ :alt: Try me on Runboat
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
+This module allows to edit several records at the same time in any Odoo
+model
+
+**Difference in comparison to the Odoo Feature**
+
+Since Odoo V13, a limited "mass Editing feature" is available in Odoo
+CE.
+
+This module provides the following extra features that are not in the
+Core for the time being:
+
+- Possibility to mass edit many fields in a single action
+- Possibility to add a group to limit the usage of this function to
+ given people
+- Possibility to filter the items the user can mass update
+- Possibility to mass edit any fields with any widget. (For exemple
+ color fields, image fields, etc...)
+
+**Table of contents**
+
+.. contents::
+ :local:
+
+Configuration
+=============
+
+- In developer mode, go to *Settings / Technical / Actions / Server
+ Actions*
+- Create a new server action
+- Name the server action (ie. *Product Template Category Mass Editing*)
+- Choose Type *Mass Edit Records*
+- Select the model
+- Add the security groups allowed to use this action
+- Add the fields you want to be mass edited
+
+|Configuration|
+
+- *Add Action*: Click on *Create Contextual Action* to add mass editing
+ in *Action* menu.
+
+**Options**
+
+- You can setup the widget option to be displayed (ie many2many_tags,
+ selection_image...)
+- You can tick Apply Domain allowing you to limit the mass editing
+ action with a domain.
+- You can add an extra message that will be displayed in the wizard.
+
+.. |Configuration| image:: https://raw.githubusercontent.com/OCA/server-ux/18.0/server_action_mass_edit/static/description/mass_editing_form.png
+
+Usage
+=====
+
+- *Go for Mass Editing*: select the records which you want to modify and
+ click on *Action* to open mass editing popup.
+
+|Action|
+
+- Select *Set / Remove* action and write down the value to set or remove
+ the value for the given field.
+
+|Wizard Form|
+
+- This way you can set / remove the values of the fields.
+
+|Wizard Result|
+
+.. |Action| image:: https://raw.githubusercontent.com/OCA/server-ux/18.0/server_action_mass_edit/static/description/mass_editing-item_tree.png
+.. |Wizard Form| image:: https://raw.githubusercontent.com/OCA/server-ux/18.0/server_action_mass_edit/static/description/mass_editing-wizard_form.png
+.. |Wizard Result| image:: https://raw.githubusercontent.com/OCA/server-ux/18.0/server_action_mass_edit/static/description/mass_editing-item_tree-result.png
+
+Known issues / Roadmap
+======================
+
+- Auto add fields that are used in related domains if apply_domain=True
+
+Bug Tracker
+===========
+
+Bugs are tracked on `GitHub Issues `_.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us to smash it by providing a detailed and welcomed
+`feedback `_.
+
+Do not contact contributors directly about support or help with technical issues.
+
+Credits
+=======
+
+Authors
+-------
+
+* Serpent Consulting Services Pvt. Ltd.
+* Tecnativa
+* GRAP
+* Iván Todorovich
+
+Contributors
+------------
+
+- Oihane Crucelaegui
+- Serpent Consulting Services Pvt. Ltd.
+- Jay Vora
+- Juan Negrete
+- Raul Martin
+- Aitor Bouzas
+- Sylvain LE GAL (https://twitter.com/legalsylvain)
+- Iván Todorovich
+- `Tecnativa `__
+
+ - Jairo Llopis
+ - Víctor Martínez
+
+- Tatiana Deribina
+- Tris Doan
+
+Other credits
+-------------
+
+The migration of this module from 17.0 to 18.0 was financially supported
+by Camptocamp.
+
+Maintainers
+-----------
+
+This module is maintained by the OCA.
+
+.. image:: https://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: https://odoo-community.org
+
+OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
+This module is part of the `OCA/server-ux `_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/odex30_base/server_action_mass_edit/__init__.py b/odex30_base/server_action_mass_edit/__init__.py
new file mode 100644
index 0000000..0759f94
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/__init__.py
@@ -0,0 +1,3 @@
+from . import models
+from . import wizard
+from .hooks import pre_init_hook
diff --git a/odex30_base/server_action_mass_edit/__manifest__.py b/odex30_base/server_action_mass_edit/__manifest__.py
new file mode 100644
index 0000000..f810236
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/__manifest__.py
@@ -0,0 +1,32 @@
+# Copyright 2016 Serpent Consulting Services Pvt. Ltd. (support@serpentcs.com)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+{
+ "name": "Mass Editing",
+ "version": "18.0.1.1.0",
+ "author": "Serpent Consulting Services Pvt. Ltd., "
+ "Tecnativa, "
+ "GRAP, "
+ "Iván Todorovich, "
+ "Odoo Community Association (OCA)",
+ "category": "Tools",
+ "website": "https://github.com/OCA/server-ux",
+ "license": "AGPL-3",
+ "summary": "Mass Editing",
+ "depends": [
+ "base",
+ ],
+ "data": [
+ "security/ir.model.access.csv",
+ "views/ir_actions_server.xml",
+ "wizard/mass_editing_wizard.xml",
+ ],
+ "assets": {
+ "web.assets_backend": [
+ "/server_action_mass_edit/static/src/js/record.esm.js",
+ "/server_action_mass_edit/static/src/js/static_list.esm.js",
+ ]
+ },
+ "demo": ["demo/mass_editing.xml"],
+ "external_dependencies": {"python": ["openupgradelib"]},
+ "pre_init_hook": "pre_init_hook",
+}
diff --git a/odex30_base/server_action_mass_edit/demo/mass_editing.xml b/odex30_base/server_action_mass_edit/demo/mass_editing.xml
new file mode 100644
index 0000000..7587bd2
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/demo/mass_editing.xml
@@ -0,0 +1,79 @@
+
+
+
+
+
+ mass_edit
+ Mass Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image
+
+
+
+
+
+
+
+
+ mass_edit
+ Mass Edit
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/server_action_mass_edit/hooks.py b/odex30_base/server_action_mass_edit/hooks.py
new file mode 100644
index 0000000..ac8e1e6
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/hooks.py
@@ -0,0 +1,16 @@
+# Copyright 2024 Camptocamp ()
+# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html)
+from openupgradelib import openupgrade
+
+
+def pre_init_hook(env):
+ if openupgrade.table_exists(env.cr, "mass_editing_line"):
+ openupgrade.rename_models(
+ env.cr, [("mass.editing.line", "ir.actions.server.mass.edit.line")]
+ )
+ openupgrade.rename_tables(
+ env.cr, [("mass_editing_line", "ir_actions_server_mass_edit_line")]
+ )
+
+ modules = [("mass_editing", "server_action_mass_edit")]
+ openupgrade.update_module_names(env.cr, modules, merge_modules=True)
diff --git a/odex30_base/server_action_mass_edit/i18n/am.po b/odex30_base/server_action_mass_edit/i18n/am.po
new file mode 100644
index 0000000..a59b9f3
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/am.po
@@ -0,0 +1,282 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 9.0c\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-09-10 02:53+0000\n"
+"PO-Revision-Date: 2016-09-10 02:53+0000\n"
+"Last-Translator: OCA Transbot , 2016\n"
+"Language-Team: Amharic (https://www.transifex.com/oca/teams/23907/am/)\n"
+"Language: am\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Última actualización por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Última actualización en"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
diff --git a/odex30_base/server_action_mass_edit/i18n/ar.po b/odex30_base/server_action_mass_edit/i18n/ar.po
new file mode 100644
index 0000000..8ae4777
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/ar.po
@@ -0,0 +1,289 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-17 21:08+0000\n"
+"PO-Revision-Date: 2017-05-17 21:08+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Arabic (https://www.transifex.com/oca/teams/23907/ar/)\n"
+"Language: ar\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "أنشئ بواسطة"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "أنشئ في"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "اسم العرض"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "المعرف"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "آخر تحديث بواسطة"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "آخر تحديث في"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "النموذج"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "آخر تعديل في"
+
+#~ msgid "Name"
+#~ msgstr "الاسم"
diff --git a/odex30_base/server_action_mass_edit/i18n/bg.po b/odex30_base/server_action_mass_edit/i18n/bg.po
new file mode 100644
index 0000000..14620ae
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/bg.po
@@ -0,0 +1,288 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 9.0c\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-09-10 02:53+0000\n"
+"PO-Revision-Date: 2016-09-10 02:53+0000\n"
+"Last-Translator: OCA Transbot , 2016\n"
+"Language-Team: Bulgarian (https://www.transifex.com/oca/teams/23907/bg/)\n"
+"Language: bg\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Създадено от"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Създадено на"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Име за показване"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Последно обновено от"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Последно обновено на"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Последно обновено на"
+
+#~ msgid "Name"
+#~ msgstr "Име"
diff --git a/odex30_base/server_action_mass_edit/i18n/bs.po b/odex30_base/server_action_mass_edit/i18n/bs.po
new file mode 100644
index 0000000..5319693
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/bs.po
@@ -0,0 +1,289 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Bosnian (https://www.transifex.com/oca/teams/23907/bs/)\n"
+"Language: bs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Kreirao"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Kreirano"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Prikaži naziv"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Zadnji ažurirao"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Zadnje ažurirano"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Zadnje mijenjano"
+
+#~ msgid "Name"
+#~ msgstr "Naziv"
diff --git a/odex30_base/server_action_mass_edit/i18n/ca.po b/odex30_base/server_action_mass_edit/i18n/ca.po
new file mode 100644
index 0000000..9e3e28f
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/ca.po
@@ -0,0 +1,288 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Creat per"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Creat el"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Veure el nom"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Darrera Actualització per"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Darrera Actualització el"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Model"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Darrera modificació el"
+
+#~ msgid "Name"
+#~ msgstr "Nom"
diff --git a/odex30_base/server_action_mass_edit/i18n/cs.po b/odex30_base/server_action_mass_edit/i18n/cs.po
new file mode 100644
index 0000000..c6ff5c6
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/cs.po
@@ -0,0 +1,288 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Czech (https://www.transifex.com/oca/teams/23907/cs/)\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Vytvořil(a)"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Vytvořeno"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Zobrazovaný název"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Naposled upraveno"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Naposled upraveno"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Naposled upraveno"
+
+#~ msgid "Name"
+#~ msgstr "Název"
diff --git a/odex30_base/server_action_mass_edit/i18n/da.po b/odex30_base/server_action_mass_edit/i18n/da.po
new file mode 100644
index 0000000..f409438
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/da.po
@@ -0,0 +1,291 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-17 21:08+0000\n"
+"PO-Revision-Date: 2017-05-17 21:08+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Danish (https://www.transifex.com/oca/teams/23907/da/)\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Oprettet af"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Oprettet den"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Vist navn"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "Id"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Sidst opdateret af"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Sidst opdateret den"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Sidst ændret den"
+
+#~ msgid "Name"
+#~ msgstr "Navn"
+
+#~ msgid "%s (copy)"
+#~ msgstr "%s (kopi)"
diff --git a/odex30_base/server_action_mass_edit/i18n/de.po b/odex30_base/server_action_mass_edit/i18n/de.po
new file mode 100644
index 0000000..4cf0c7d
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/de.po
@@ -0,0 +1,363 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-17 21:08+0000\n"
+"PO-Revision-Date: 2023-12-20 16:36+0000\n"
+"Last-Translator: jappi00 \n"
+"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.17\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+"WARNUNG : Beachten Sie, dass das Hinzufügen eines Feldes mit einem "
+"Filter und das Fehlen von Feldern dieses Filters in dieser Aktion zu einem "
+"Fehler führen wird, wenn Sie versuchen, die Operation durchzuführen. Stellen "
+"Sie sicher, dass Sie diese hier in der Auswahl einschließen."
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr "Hinzufügen"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+"Fügen Sie den Widget-Namen hinzu, der für die Anzeige des Feldes im "
+"Assistenten verwendet werden soll.\n"
+"Beispiele: \"many2many_tags\", \"selection\", \"image"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr "Anwenden"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr "Filter anwenden"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr "Standard-Filter auf das Feld anwenden"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr "Filter in Zeilen anwenden"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Erstellt von"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Erstellt am"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Anzeigename"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr "Nicht ändern"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr "Feld"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr "Felder"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+"Wenn diese Option gesetzt ist, wird diese Meldung im Assistenten angezeigt."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Zuletzt aktualisiert von"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Zuletzt aktualisiert am"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr "Massenbearbeitung"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr "Zeile für Massenbearbeitung"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr "Massenbearbeitung Datensätze"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr "Massenbearbeitungsfelder sollten zum Serveraktionsmodell gehören."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr "Nachricht"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Modell"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr "Datenmodell, auf dem die Serveraktion sich bezieht."
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+"Keiner der von Ihnen ausgewählten %(amount)d-Datensätzen kann verarbeitet "
+"werden."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr "Warnungsbeschreibung der Operation"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr "Vorgang Info"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr "Vorgang Warnung"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr "Verbleibende Menge"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr "Entfernen"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr "Ausgewählte Menge"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr "Sequenz"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr "Serveraktion"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr "Server-Aktionen Massenbearbeitungszeilen"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr "Setzen"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+"Die Behandlung wird für den/die %(amount)d ausgewählten Datensatz/e "
+"durchgeführt."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr "Widget Option"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr "Assistent für das Masseneditieren"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+"Sie haben %(origin_amount)d Datensätz(e) ausgewählt, die nicht verarbeitet "
+"werden können.\n"
+"Es werden nur %(amount)d Datensätze verarbeitet."
+
+#~ msgid "Action To Do"
+#~ msgstr "Zu erledigende Aktion"
+
+#~ msgid "Last Modified on"
+#~ msgstr "Zuletzt geändert am"
+
+#~ msgid ""
+#~ "Type of server action. The following values are available:\n"
+#~ "- 'Execute Python Code': a block of python code that will be executed\n"
+#~ "- 'Create a new Record': create a new record with new values\n"
+#~ "- 'Update a Record': update the values of a record\n"
+#~ "- 'Execute several actions': define an action that triggers several other "
+#~ "server actions\n"
+#~ "- 'Send Email': post a message, a note or send an email (Discuss)\n"
+#~ "- 'Add Followers': add followers to a record (Discuss)\n"
+#~ "- 'Create Next Activity': create an activity (Discuss)\n"
+#~ "- 'Send SMS Text Message': send SMS, log them on documents (SMS)"
+#~ msgstr ""
+#~ "Typ der Server-Aktion. Die folgenden Werte sind verfügbar:\n"
+#~ "- \"Python-Code ausführen\": Führt Python Code aus.\n"
+#~ "- \"Neuen Datensatz erstellen\": Erstellt einen neuen Datensatz.\n"
+#~ "- \"Datensatz aktualisieren\": Aktualisiert die Werte des Datensatzes.\n"
+#~ "- \"Mehrere Aktionen ausführen\": Führt weitere Aktionen aus.\n"
+#~ "- \"E-Mail senden\": Versendet eine Email. (Diskussion)\n"
+#~ "- \"Follower hinzufügen\": Fügt einen Follower hinzu. (Diskussion)\n"
+#~ "- \"Nächste Aktivität erstellen\": Erstellt eine Aktivität (Diskussion)\n"
+#~ "- \"SMS senden\": Sendet eine SMS. (SMS)"
+
+#~ msgid "Mass Editing"
+#~ msgstr "Massenverarbeitung"
+
+#, fuzzy
+#~ msgid "Mass Editing Line"
+#~ msgstr "Massenverarbeitung"
+
+#~ msgid "Name"
+#~ msgstr "Name"
+
+#, fuzzy
+#~ msgid "Sidebar Action"
+#~ msgstr "Seitenleisten-Schaltfläche hinzufügen"
+
+#~ msgid "%s (copy)"
+#~ msgstr "%s (Kopie)"
+
+#~ msgid "Advanced"
+#~ msgstr "Erweitert"
+
+#~ msgid ""
+#~ "Display a button in the sidebar of related documents to open a "
+#~ "composition wizard"
+#~ msgstr "Sidebar-Button für verknüpfte Dokumente anzeigen "
+
+#~ msgid "Mass Editing (%s)"
+#~ msgstr "Massenverarbeitung (%s)"
+
+#~ msgid "Model List"
+#~ msgstr "Modell-Liste"
+
+#~ msgid "Name must be unique!"
+#~ msgstr "Name muss eindeutig sein!"
+
+#~ msgid "Object"
+#~ msgstr "Objekt"
diff --git a/odex30_base/server_action_mass_edit/i18n/el_GR.po b/odex30_base/server_action_mass_edit/i18n/el_GR.po
new file mode 100644
index 0000000..d2333f4
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/el_GR.po
@@ -0,0 +1,287 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2016
+# Kostas Goutoudis , 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 9.0c\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-09-10 02:53+0000\n"
+"PO-Revision-Date: 2016-09-10 02:53+0000\n"
+"Last-Translator: Kostas Goutoudis , 2016\n"
+"Language-Team: Greek (Greece) (https://www.transifex.com/oca/teams/23907/"
+"el_GR/)\n"
+"Language: el_GR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Δημιουργήθηκε από "
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Δημιουργήθηκε στις"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "Κωδικός"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Τελευταία ενημέρωση από"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Τελευταία ενημέρωση στις"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Name"
+#~ msgstr "Ονομασία"
diff --git a/odex30_base/server_action_mass_edit/i18n/en_GB.po b/odex30_base/server_action_mass_edit/i18n/en_GB.po
new file mode 100644
index 0000000..b181bff
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/en_GB.po
@@ -0,0 +1,289 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: English (United Kingdom) (https://www.transifex.com/oca/"
+"teams/23907/en_GB/)\n"
+"Language: en_GB\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Created by"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Created on"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Display Name"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Last Updated by"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Last Updated on"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Last Modified on"
+
+#~ msgid "Name"
+#~ msgstr "Name"
diff --git a/odex30_base/server_action_mass_edit/i18n/es.po b/odex30_base/server_action_mass_edit/i18n/es.po
new file mode 100644
index 0000000..db37b48
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/es.po
@@ -0,0 +1,397 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-17 21:08+0000\n"
+"PO-Revision-Date: 2023-08-27 16:07+0000\n"
+"Last-Translator: Ivorra78 \n"
+"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.17\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+"Aviso : Tenga en cuenta que añadiendo un campo con un dominio, y no "
+"incluyendo los campos de ese dominio en la definición de esta operación, "
+"causará un error al intentar llevarla a cabo. Compruebe que los incluye."
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr "Añadir"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+"Añade el texto del widget que se utilizará para mostrar el campo en el "
+"asistente.\n"
+"Ejemplo: 'many2many_tags', 'selection', 'image'"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr "Aplicar"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr "Aplicar Dominio"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr "Aplicar el dominio por defecto relacionado con el campo"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr "Aplicar dominio en líneas"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr "Cancelar"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Nombre mostrado"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr "No toques"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr "Campo"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr "Campos"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr "Si está establecido, este mensaje se mostrará en el wizard."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Última actualización de"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Última actualización en"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr "Edición masiva"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr "Línea de Edición Masiva"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr "Registros de edición masiva"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+"Los campos de edición masiva deben pertenecer al modelo de acción del "
+"servidor."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr "Mensaje"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Modelo"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr "Modelo sobre el que se ejecuta la acción del servidor."
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+"Ninguno de los registros %(amount)d que ha seleccionado se puede procesar."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr "Descripción de la operación Peligro"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr "Info Descripción Operación"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr "Aviso Descripción Operación"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr "Cantidad artículos restantes"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr "Eliminar"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr "Cantidad de artículos seleccionados"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr "Secuencia"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr "Acción de Servidor"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr "Acciones del servidor Editar líneas en masa"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr "Establecer"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+"El tratamiento se procesará en el %(amount)d registro(s) seleccionado(s)."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr "Opción de widget"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr "Wizard para edición masiva"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+"Ha seleccionado %(origin_amount)d registro(s) que no se pueden procesar.\n"
+"Sólo se procesarán los registros %(amount)d."
+
+#~ msgid "Action To Do"
+#~ msgstr "Acción a realizar"
+
+#~ msgid "Last Modified on"
+#~ msgstr "Última modificación en"
+
+#~ msgid ""
+#~ "Type of server action. The following values are available:\n"
+#~ "- 'Execute Python Code': a block of python code that will be executed\n"
+#~ "- 'Create a new Record': create a new record with new values\n"
+#~ "- 'Update a Record': update the values of a record\n"
+#~ "- 'Execute several actions': define an action that triggers several other "
+#~ "server actions\n"
+#~ "- 'Send Email': post a message, a note or send an email (Discuss)\n"
+#~ "- 'Add Followers': add followers to a record (Discuss)\n"
+#~ "- 'Create Next Activity': create an activity (Discuss)\n"
+#~ "- 'Send SMS Text Message': send SMS, log them on documents (SMS)"
+#~ msgstr ""
+#~ "Tipo de acción del servidor. Están disponibles los siguientes valores:\n"
+#~ "- 'Ejecutar código Python': un bloque de código Python que se ejecutará\n"
+#~ "- 'Crear un nuevo registro': crea un nuevo registro con nuevos valores\n"
+#~ "- 'Actualizar un registro': actualiza los valores de un registro\n"
+#~ "- 'Ejecutar varias acciones': define una acción que desencadena varias "
+#~ "otras acciones del servidor\n"
+#~ "- 'Enviar correo electrónico': publicar un mensaje, una nota o enviar un "
+#~ "correo electrónico (Discutir)\n"
+#~ "- 'Agregar seguidores': agrega seguidores a un registro (Discutir)\n"
+#~ "- 'Crear siguiente actividad': crea una actividad (Discutir)\n"
+#~ "- 'Enviar mensaje de texto SMS': envíe SMS, regístrelos en documentos "
+#~ "(SMS)"
+
+#~ msgid "Action Name"
+#~ msgstr "Nombre Acción"
+
+#~ msgid ""
+#~ "Add widget text that will be used to display the field in the wizard. "
+#~ "Example :\n"
+#~ "'many2many_tags', 'selection'"
+#~ msgstr ""
+#~ "Añada el texto del widget que se usará para mostrar el campo en el "
+#~ "wizard. Ejemplo:\n"
+#~ "'many2many_tags', 'selection'"
+
+#~ msgid "Allowed Groups"
+#~ msgstr "Grupos permitidos"
+
+#~ msgid "Apply domain"
+#~ msgstr "Aplicar dominio"
+
+#~ msgid "Domain"
+#~ msgstr "Dominio"
+
+#~ msgid "Line"
+#~ msgstr "Línea"
+
+#~ msgid "Mass Editing"
+#~ msgstr "Edición masiva"
+
+#~ msgid "Mass Editing Line"
+#~ msgstr "Línea de edición masiva"
+
+#~ msgid "Name"
+#~ msgstr "Nombre"
+
+#~ msgid "Sidebar Action"
+#~ msgstr "Acción barra lateral"
+
+#~ msgid "%s (copy)"
+#~ msgstr "%s (copia)"
+
+#~ msgid "Advanced"
+#~ msgstr "Avanzado"
+
+#~ msgid ""
+#~ "Display a button in the sidebar of related documents to open a "
+#~ "composition wizard"
+#~ msgstr ""
+#~ "Mostrar un botón en el menú contextual de los documentos relacionados "
+#~ "para abrir un asistente de composición"
+
+#~ msgid "Mass Editing (%s)"
+#~ msgstr "Edición Masiva (%s)"
+
+#~ msgid "Mass Editing Object"
+#~ msgstr "Objeto de Edición Masiva"
+
+#~ msgid "Model List"
+#~ msgstr "Lista de modelos"
+
+#~ msgid ""
+#~ "Model is used for Selecting Fields. This is editable until Sidebar menu "
+#~ "is not created."
+#~ msgstr ""
+#~ "El modelo se utiliza para Seleccionar Campos. Esto se puede editar hasta "
+#~ "que no se cree el menú de la barra lateral."
+
+#~ msgid "Name must be unique!"
+#~ msgstr "¡El nombre debe ser único!"
+
+#~ msgid "Object"
+#~ msgstr "Objeto"
diff --git a/odex30_base/server_action_mass_edit/i18n/es_AR.po b/odex30_base/server_action_mass_edit/i18n/es_AR.po
new file mode 100644
index 0000000..6532911
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/es_AR.po
@@ -0,0 +1,289 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Spanish (Argentina) (https://www.transifex.com/oca/"
+"teams/23907/es_AR/)\n"
+"Language: es_AR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Mostrar Nombre"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Última actualización realizada por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Última actualización el"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Última modificación en"
+
+#~ msgid "Name"
+#~ msgstr "Nombre"
diff --git a/odex30_base/server_action_mass_edit/i18n/es_CL.po b/odex30_base/server_action_mass_edit/i18n/es_CL.po
new file mode 100644
index 0000000..1776ec6
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/es_CL.po
@@ -0,0 +1,289 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Spanish (Chile) (https://www.transifex.com/oca/teams/23907/"
+"es_CL/)\n"
+"Language: es_CL\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Nombre mostrado"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID (identificación)"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Última actualización de"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Última actualización en"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Última modificación en"
+
+#~ msgid "Name"
+#~ msgstr "Nombre"
diff --git a/odex30_base/server_action_mass_edit/i18n/es_CO.po b/odex30_base/server_action_mass_edit/i18n/es_CO.po
new file mode 100644
index 0000000..e8266a4
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/es_CO.po
@@ -0,0 +1,289 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Spanish (Colombia) (https://www.transifex.com/oca/teams/23907/"
+"es_CO/)\n"
+"Language: es_CO\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Creado"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Nombre Público"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Actualizado por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Actualizado"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Última Modificación el"
+
+#~ msgid "Name"
+#~ msgstr "Nombre"
diff --git a/odex30_base/server_action_mass_edit/i18n/es_CR.po b/odex30_base/server_action_mass_edit/i18n/es_CR.po
new file mode 100644
index 0000000..9019309
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/es_CR.po
@@ -0,0 +1,286 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 9.0c\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-09-10 02:53+0000\n"
+"PO-Revision-Date: 2016-09-10 02:53+0000\n"
+"Last-Translator: OCA Transbot , 2016\n"
+"Language-Team: Spanish (Costa Rica) (https://www.transifex.com/oca/"
+"teams/23907/es_CR/)\n"
+"Language: es_CR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Ultima actualización por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Ultima actualización en"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Name"
+#~ msgstr "Nombre"
diff --git a/odex30_base/server_action_mass_edit/i18n/es_DO.po b/odex30_base/server_action_mass_edit/i18n/es_DO.po
new file mode 100644
index 0000000..066e7e8
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/es_DO.po
@@ -0,0 +1,289 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Spanish (Dominican Republic) (https://www.transifex.com/oca/"
+"teams/23907/es_DO/)\n"
+"Language: es_DO\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Nombre mostrado"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID (identificación)"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Última actualización de"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Última actualización en"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Última modificación en"
+
+#~ msgid "Name"
+#~ msgstr "Nombre"
diff --git a/odex30_base/server_action_mass_edit/i18n/es_EC.po b/odex30_base/server_action_mass_edit/i18n/es_EC.po
new file mode 100644
index 0000000..84b9d7b
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/es_EC.po
@@ -0,0 +1,289 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Spanish (Ecuador) (https://www.transifex.com/oca/teams/23907/"
+"es_EC/)\n"
+"Language: es_EC\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Nombre mostrado"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Última actualización de"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Última actualización en"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Última modificación en"
+
+#~ msgid "Name"
+#~ msgstr "Nombre"
diff --git a/odex30_base/server_action_mass_edit/i18n/es_ES.po b/odex30_base/server_action_mass_edit/i18n/es_ES.po
new file mode 100644
index 0000000..486cccf
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/es_ES.po
@@ -0,0 +1,286 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-01 10:38+0000\n"
+"PO-Revision-Date: 2017-05-01 10:38+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Spanish (Spain) (https://www.transifex.com/oca/teams/23907/"
+"es_ES/)\n"
+"Language: es_ES\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Nombre para mostrar"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Última actualización por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Última actualización en"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Última modificación en"
diff --git a/odex30_base/server_action_mass_edit/i18n/es_MX.po b/odex30_base/server_action_mass_edit/i18n/es_MX.po
new file mode 100644
index 0000000..c48e5c1
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/es_MX.po
@@ -0,0 +1,315 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2024-05-07 16:48+0000\n"
+"Last-Translator: Jesús Alan Ramos Rodríguez \n"
+"Language-Team: Spanish (Mexico) (https://www.transifex.com/oca/teams/23907/"
+"es_MX/)\n"
+"Language: es_MX\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.17\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+"ADVERTENCIA : Tenga en cuenta que agregar un campo con un dominio, y "
+"no incluir los campos de dicho dominio en esta definición de operación, "
+"generará un error al intentar realizarla. Asegúrate de incluirlos."
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr "Añadir"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+"Agregue el texto del widget que se utilizará para mostrar el campo en el "
+"asistente.\n"
+"Ejemplo: 'many2many_tags', 'selección', 'imagen'"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr "Aplicar"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr "Aplicar Dominio"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr "Aplicar dominio predeterminado relacionado con el campo"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr "Aplicar dominio en lineas"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr "Cancelar"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Nombre desplegado"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr "No tocar"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr "Campo"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr "Campos"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr "Si está configurado, este mensaje se mostrará en el asistente."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Ultima actualización por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Ultima actualización en"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr "Edición masiva"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr "Línea de edición masiva"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr "Registros de edición masiva"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr "Acción de servidor masivo"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+"Los campos de edición masiva deben pertenecer al modelo de acción del "
+"servidor."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr "Mensaje"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Modelo"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr "Modelo sobre el que se ejecuta la acción del servidor."
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+"Ninguno de los %(amount)d registros que ha seleccionado se puede procesar."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr "Operación Descripción Peligro"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr "Operación Descripción Información"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr "Operación Descripción Advertencia"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr "Cantidad de artículo restante"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr "Eliminar"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr "Cantidad de artículo seleccionado"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr "Secuencia"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr "Acción del servidor"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr "Acciones del servidor Editar líneas en masa"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr "Establecer"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr "El tratamiento se procesará en los %(amount)d registros seleccionados."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr "Tipo"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+"Tipo de acción del servidor. Están disponibles los siguientes valores:\n"
+"- 'Actualizar un registro': actualiza los valores de un registro\n"
+"- 'Crear actividad': crea una actividad (Discusiones)\n"
+"- 'Enviar correo electrónico': publicar un mensaje, una nota o enviar un "
+"correo electrónico (Discusiones)\n"
+"- 'Enviar SMS': enviar SMS, registrarlos en documentos (SMS) - 'Agregar o "
+"quitar seguidores': agregar o eliminar seguidores a un registro "
+"(Discusiones)\n"
+"- 'Crear registro': crea un nuevo registro con nuevos valores\n"
+"- 'Ejecutar código': un bloque de código Python que se ejecutará\n"
+"- 'Enviar notificación de Webhook': envía una solicitud POST a un sistema "
+"externo, también conocido como Webhook\n"
+"- 'Ejecutar acciones existentes': define una acción que desencadena varias "
+"otras acciones del servidor\n"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr "Ver"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr "Opción de widget"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr "Asistente para edición masiva"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+"Ha seleccionado %(origin_amount)d registros que no se pueden procesar.\n"
+"Solo se procesarán %(amount)d registros."
+
+#~ msgid "Last Modified on"
+#~ msgstr "Ultima modificacion realizada"
+
+#~ msgid "Name"
+#~ msgstr "Nombre"
diff --git a/odex30_base/server_action_mass_edit/i18n/es_PE.po b/odex30_base/server_action_mass_edit/i18n/es_PE.po
new file mode 100644
index 0000000..a31bf32
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/es_PE.po
@@ -0,0 +1,289 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Spanish (Peru) (https://www.transifex.com/oca/teams/23907/"
+"es_PE/)\n"
+"Language: es_PE\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Nombre a Mostrar"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Actualizado última vez por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Ultima Actualización"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Ultima Modificación en"
+
+#~ msgid "Name"
+#~ msgstr "Nombre"
diff --git a/odex30_base/server_action_mass_edit/i18n/es_PY.po b/odex30_base/server_action_mass_edit/i18n/es_PY.po
new file mode 100644
index 0000000..da62b88
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/es_PY.po
@@ -0,0 +1,286 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Spanish (Paraguay) (https://www.transifex.com/oca/teams/23907/"
+"es_PY/)\n"
+"Language: es_PY\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Ultima actualización por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Ultima actualización en"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Name"
+#~ msgstr "Nombre"
diff --git a/odex30_base/server_action_mass_edit/i18n/es_VE.po b/odex30_base/server_action_mass_edit/i18n/es_VE.po
new file mode 100644
index 0000000..e12ee47
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/es_VE.po
@@ -0,0 +1,289 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Spanish (Venezuela) (https://www.transifex.com/oca/"
+"teams/23907/es_VE/)\n"
+"Language: es_VE\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Mostrar nombre"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Ultima actualización por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Ultima actualización en"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Modificada por última vez"
+
+#~ msgid "Name"
+#~ msgstr "Nombre"
diff --git a/odex30_base/server_action_mass_edit/i18n/et.po b/odex30_base/server_action_mass_edit/i18n/et.po
new file mode 100644
index 0000000..2e12a3c
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/et.po
@@ -0,0 +1,288 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Estonian (https://www.transifex.com/oca/teams/23907/et/)\n"
+"Language: et\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Loonud"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Loodud"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Näidatav nimi"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Viimati uuendatud"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Viimati uuendatud"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Viimati muudetud"
+
+#~ msgid "Name"
+#~ msgstr "Nimi"
diff --git a/odex30_base/server_action_mass_edit/i18n/eu.po b/odex30_base/server_action_mass_edit/i18n/eu.po
new file mode 100644
index 0000000..ce95d7c
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/eu.po
@@ -0,0 +1,285 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-17 21:08+0000\n"
+"PO-Revision-Date: 2017-05-17 21:08+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Basque (https://www.transifex.com/oca/teams/23907/eu/)\n"
+"Language: eu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Nork sortua"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Created on"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Izena erakutsi"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Last Updated by"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Last Updated on"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Name"
+#~ msgstr "Izena"
diff --git a/odex30_base/server_action_mass_edit/i18n/fa.po b/odex30_base/server_action_mass_edit/i18n/fa.po
new file mode 100644
index 0000000..2814173
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/fa.po
@@ -0,0 +1,288 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Persian (https://www.transifex.com/oca/teams/23907/fa/)\n"
+"Language: fa\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "ایجاد شده توسط"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "ایجاد شده در"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "نام نمایشی"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "شناسه"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "آخرین به روز رسانی توسط"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "آخرین به روز رسانی در"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "تاریخ آخرین بهروزرسانی"
+
+#~ msgid "Name"
+#~ msgstr "نام"
diff --git a/odex30_base/server_action_mass_edit/i18n/fi.po b/odex30_base/server_action_mass_edit/i18n/fi.po
new file mode 100644
index 0000000..e35258e
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/fi.po
@@ -0,0 +1,324 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-17 21:08+0000\n"
+"PO-Revision-Date: 2017-05-17 21:08+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n"
+"Language: fi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Luonut"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Luotu"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Nimi"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+#, fuzzy
+msgid "Field"
+msgstr "Kentät"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Viimeksi päivittänyt"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Viimeksi päivitetty"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Mall"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Viimeksi muokattu"
+
+#~ msgid "Mass Editing"
+#~ msgstr "Massaeditointi"
+
+#, fuzzy
+#~ msgid "Mass Editing Line"
+#~ msgstr "Massaeditointi"
+
+#~ msgid "Name"
+#~ msgstr "Nimi"
+
+#~ msgid "Advanced"
+#~ msgstr "Edistynyt"
+
+#~ msgid ""
+#~ "Display a button in the sidebar of related documents to open a "
+#~ "composition wizard"
+#~ msgstr ""
+#~ "Näytä tähän liittyvien tietuiden sivupalkissa painike, joka avaa ohjatun "
+#~ "toiminnon"
+
+#~ msgid "Mass Editing (%s)"
+#~ msgstr "Massaeditointi (%s)"
+
+#~ msgid "Model List"
+#~ msgstr "Lista malleista"
+
+#~ msgid "Name must be unique!"
+#~ msgstr "Nimen täytyy olla uniikki!"
+
+#~ msgid "Object"
+#~ msgstr "Objekti"
+
+#~ msgid ""
+#~ "Remove the contextual action to use this template on related documents"
+#~ msgstr ""
+#~ "Poista tähän liittyvä toiminto käyttääksesi tätä mallipohjaa liittyvissä "
+#~ "tietueissa"
diff --git a/odex30_base/server_action_mass_edit/i18n/fr.po b/odex30_base/server_action_mass_edit/i18n/fr.po
new file mode 100644
index 0000000..c052f2d
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/fr.po
@@ -0,0 +1,331 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * server_action_mass_edit
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 16.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-11-02 09:12+0000\n"
+"PO-Revision-Date: 2023-10-30 12:38+0000\n"
+"Last-Translator: Grégory Moka Tourisme \n"
+"Language-Team: \n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 4.17\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+"WARNING : Tenez compte du fait que l'ajout d'un champ avec un "
+"domaine, et le fait de ne pas inclure les champs de ce domaine dans la "
+"définition de cette opération, entraînera une erreur lors de la tentative "
+"d'exécution. Assurez-vous de les inclure."
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr "Ajouter"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+"Ajouter un texte pour le widget qui sera utilisé pour afficher le champ. "
+"Exemple : \n"
+"'many2many_tags', 'selection'"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr "Appliquer"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr "Appliquer le domaine"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr "Appliquer le domaine par défaut lié au champ"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr "Appliquer le domaine dans les lignes"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr "Annuler"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Créé par"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Créé le"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Afficher Nom"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr "Ne pas modifier"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr "Champ"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr "Champs"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr "Si ce champ est défini, le message sera affiché dans l'assistant."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Dernière mise à jour par"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Dernière mise à jour le"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr "Édition en lot"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr "Ligne d'édition en lot"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr "Modification en lot"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+"Le champs de l'édition en ligne doit appartenir au modèle de l'action "
+"serveur."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Modèle"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr "Modèle executé par l'action serveur."
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+"Aucun des %(amount)d enregistrement(s) que vous avez sélectionné ne peuvent "
+"être traité"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr "Description de l'opération - Danger"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr "Description de l'opération - Information"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr "Description de l'opération - Attention"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr "Eléments restants"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr "Retirer"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr "Eléments sélectionnés"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr "Séquence"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr "Action serveur"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr "Lignes d'édition en lot d'action serveurs"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr "Definir"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+"Le traitement doit être réalisé sur les %(amount)d enregistrements "
+"sélectionnés"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr "Option du widget"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr "Assistant pour l'édition en lot"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+"Vous avez sélectionné %(origin_amount)d enregistrement(s) qui ne peuvent pas "
+"être traités.\n"
+"Seulement %(amount)d enregistrement(s) seront traités."
+
+#~ msgid "Action To Do"
+#~ msgstr "Action à effectuer"
+
+#~ msgid "Last Modified on"
+#~ msgstr "Dernière modification le"
+
+#~ msgid ""
+#~ "Type of server action. The following values are available:\n"
+#~ "- 'Execute Python Code': a block of python code that will be executed\n"
+#~ "- 'Create a new Record': create a new record with new values\n"
+#~ "- 'Update a Record': update the values of a record\n"
+#~ "- 'Execute several actions': define an action that triggers several other "
+#~ "server actions\n"
+#~ "- 'Send Email': post a message, a note or send an email (Discuss)\n"
+#~ "- 'Add Followers': add followers to a record (Discuss)\n"
+#~ "- 'Create Next Activity': create an activity (Discuss)\n"
+#~ "- 'Send SMS Text Message': send SMS, log them on documents (SMS)"
+#~ msgstr ""
+#~ "Type d'action du serveur. Les valeurs suivantes sont disponibles :\n"
+#~ "- 'Executer du code Python' : un bloc de code python qui sera exécuté\n"
+#~ "- 'Créer un nouvel enregistrement' : créer un nouvel enregistrement avec "
+#~ "de nouvelles valeurs\n"
+#~ "- 'Mettre à jour un enregistrement' : mettre à jour les valeurs d'un "
+#~ "enregistrement\n"
+#~ "- 'Exécuter plusieurs actions' : définir une action qui déclenche "
+#~ "plusieurs autres actions du serveur\n"
+#~ "- 'Envoyer un email' : poster un message, une note ou envoyer un email "
+#~ "(Discussion)\n"
+#~ "- 'Ajouter des abonnés' : ajouter des abonnés à un enregistrement "
+#~ "(Discussion)\n"
+#~ "- 'Créer l'activité suivante' : créer une activité (Discussion)\n"
+#~ "- 'Envoyer un message/SMS': envoyez des SMS, enregistrez-les sur des "
+#~ "documents (SMS)"
diff --git a/odex30_base/server_action_mass_edit/i18n/fr_CA.po b/odex30_base/server_action_mass_edit/i18n/fr_CA.po
new file mode 100644
index 0000000..3be48f2
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/fr_CA.po
@@ -0,0 +1,329 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-17 21:08+0000\n"
+"PO-Revision-Date: 2017-05-17 21:08+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: French (Canada) (https://www.transifex.com/oca/teams/23907/"
+"fr_CA/)\n"
+"Language: fr_CA\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Créé par"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Créé le"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Afficher le nom"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+#, fuzzy
+msgid "Field"
+msgstr "Champs"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "Identifiant"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Dernière mise à jour par"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Dernière mise à jour le"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Modèle"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Mass Editing"
+#~ msgstr "Édition en lot"
+
+#, fuzzy
+#~ msgid "Mass Editing Line"
+#~ msgstr "Édition en lot"
+
+#~ msgid "Name"
+#~ msgstr "Nom"
+
+#, fuzzy
+#~ msgid "Sidebar Action"
+#~ msgstr "Action de menu latéral"
+
+#~ msgid "Add Sidebar Button"
+#~ msgstr "Ajouter bouton au menu latéral"
+
+#~ msgid "Advanced"
+#~ msgstr "Avancé"
+
+#~ msgid ""
+#~ "Display a button in the sidebar of related documents to open a "
+#~ "composition wizard"
+#~ msgstr ""
+#~ "Afficher un bouton dans le menu latéral des documents associés pour "
+#~ "ouvrir un assistant de rédaction"
+
+#~ msgid "Mass Editing (%s)"
+#~ msgstr "Édition en lot (%s)"
+
+#~ msgid "Mass Editing Object"
+#~ msgstr "Objet d'édition en lot"
+
+#~ msgid "Model List"
+#~ msgstr "Liste de modèles"
+
+#~ msgid "Name must be unique!"
+#~ msgstr "Le nom doit être unique!"
+
+#~ msgid "Object"
+#~ msgstr "Objet"
+
+#~ msgid "Remove Sidebar Button"
+#~ msgstr "Enlever bouton au menu latéral"
diff --git a/odex30_base/server_action_mass_edit/i18n/fr_CH.po b/odex30_base/server_action_mass_edit/i18n/fr_CH.po
new file mode 100644
index 0000000..e11a1a8
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/fr_CH.po
@@ -0,0 +1,286 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: French (Switzerland) (https://www.transifex.com/oca/"
+"teams/23907/fr_CH/)\n"
+"Language: fr_CH\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Créé par"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Créé le"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Nom affiché"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Modifié par"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Modifié le"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Dernière modification le"
diff --git a/odex30_base/server_action_mass_edit/i18n/fr_FR.po b/odex30_base/server_action_mass_edit/i18n/fr_FR.po
new file mode 100644
index 0000000..060af9b
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/fr_FR.po
@@ -0,0 +1,293 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 14.0\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2021-04-11 18:46+0000\n"
+"Last-Translator: Yves Le Doeuff \n"
+"Language-Team: none\n"
+"Language: fr_FR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 4.3.2\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+"Attention : Tenez compte du fait que l'ajout d'un champ avec un "
+"domaine, et le fait de ne pas inclure les champs de ce domaine dans la "
+"définition de cette opération, entraînera une erreur lors de la tentative "
+"d'exécution. Assurez-vous de les inclure."
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr "Ajouter"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr "Appliquer le domaine par défaut lié au champ"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr "Appliquer le domaine sur les lignes"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Créé par"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Créé le"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Afficher Nom"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr "Champ"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr "Si ce champ est défini, le message sera affiché dans l'assistant."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Dernière mise à jour par"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Dernière mise à jour le"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr "Message"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Modèle"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr "Description de l'opération - Danger"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr "Description de l'opération - Information"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr "Description de l'opération - Attention"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr "Eléments restants"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr "Retirer"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr "Eléments sélectionnés"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr "Séquence"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr "Definir"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr "Option du widget"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr "Assistant pour l'édition en lot"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Dernière modification le"
+
+#~ msgid "Apply domain"
+#~ msgstr "Appliquer le domaine"
+
+#~ msgid "Mass Editing Line"
+#~ msgstr "Ligne d'édition en lot"
diff --git a/odex30_base/server_action_mass_edit/i18n/gl.po b/odex30_base/server_action_mass_edit/i18n/gl.po
new file mode 100644
index 0000000..78b513c
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/gl.po
@@ -0,0 +1,290 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2016
+# Alejandro Santana , 2016
+# César Castro Cruz , 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 9.0c\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-09-10 02:53+0000\n"
+"PO-Revision-Date: 2016-09-10 02:53+0000\n"
+"Last-Translator: César Castro Cruz , 2016\n"
+"Language-Team: Galician (https://www.transifex.com/oca/teams/23907/gl/)\n"
+"Language: gl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "ültima actualización por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Última actualización en"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Modificado por última vez o"
+
+#~ msgid "Name"
+#~ msgstr "Nome"
diff --git a/odex30_base/server_action_mass_edit/i18n/gl_ES.po b/odex30_base/server_action_mass_edit/i18n/gl_ES.po
new file mode 100644
index 0000000..16ef581
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/gl_ES.po
@@ -0,0 +1,283 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# Alejandro Santana , 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 9.0c\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-09-10 02:53+0000\n"
+"PO-Revision-Date: 2016-09-10 02:53+0000\n"
+"Last-Translator: Alejandro Santana , 2016\n"
+"Language-Team: Galician (Spain) (https://www.transifex.com/oca/teams/23907/"
+"gl_ES/)\n"
+"Language: gl_ES\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
diff --git a/odex30_base/server_action_mass_edit/i18n/he.po b/odex30_base/server_action_mass_edit/i18n/he.po
new file mode 100644
index 0000000..9a0df37
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/he.po
@@ -0,0 +1,288 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Hebrew (https://www.transifex.com/oca/teams/23907/he/)\n"
+"Language: he\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "נוצר על ידי"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "נוצר ב-"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "השם המוצג"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "מזהה"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "עודכן לאחרונה על ידי"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "עודכן לאחרונה על"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "תאריך שינוי אחרון"
+
+#~ msgid "Name"
+#~ msgstr "שם"
diff --git a/odex30_base/server_action_mass_edit/i18n/hr.po b/odex30_base/server_action_mass_edit/i18n/hr.po
new file mode 100644
index 0000000..bbb8216
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/hr.po
@@ -0,0 +1,365 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+# Bole , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-17 21:08+0000\n"
+"PO-Revision-Date: 2017-05-17 21:08+0000\n"
+"Last-Translator: Bole , 2017\n"
+"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n"
+"Language: hr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Kreirao"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Kreirano "
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Prikaži naziv"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+#, fuzzy
+msgid "Field"
+msgstr "Polja"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Zadnje ažuriranje izvršio"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Zadnje ažuriranje na"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Model"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Zadnja izmjena na"
+
+#~ msgid "Mass Editing"
+#~ msgstr "Grupno uređivanje"
+
+#, fuzzy
+#~ msgid "Mass Editing Line"
+#~ msgstr "Grupno uređivanje"
+
+#~ msgid "Name"
+#~ msgstr "Naziv"
+
+#, fuzzy
+#~ msgid "Sidebar Action"
+#~ msgstr "Akcija bočnog izbornika"
+
+#~ msgid "%s (copy)"
+#~ msgstr "%s (kopija)"
+
+#~ msgid "Add Sidebar Button"
+#~ msgstr "Dodaj bočni gumb"
+
+#~ msgid "Advanced"
+#~ msgstr "Napredno"
+
+#~ msgid ""
+#~ "Display a button in the sidebar of related documents to open a "
+#~ "composition wizard"
+#~ msgstr ""
+#~ "Prikaži ugumb u bočnoj traci izbornika povezanih dokumenata za otvaranje "
+#~ "čarobnjaka."
+
+#~ msgid "Mass Editing (%s)"
+#~ msgstr "Grupno uredi (%s)"
+
+#~ msgid "Mass Editing Object"
+#~ msgstr "Objekt grupnog uređivanja"
+
+#~ msgid "Model List"
+#~ msgstr "Popis modela"
+
+#~ msgid ""
+#~ "Model is used for Selecting Fields. This is editable until Sidebar menu "
+#~ "is not created."
+#~ msgstr ""
+#~ "Model se koristi za odabir polja. Ovo je moguće uređivati sve dok bočni "
+#~ "izbornik nije kreiran."
+
+#~ msgid "Name must be unique!"
+#~ msgstr "Naziv mora biti jedinstven"
+
+#~ msgid "Object"
+#~ msgstr "Objekt"
+
+#~ msgid "Remove Sidebar Button"
+#~ msgstr "Ukloni bočni gumb"
+
+#~ msgid ""
+#~ "Remove the contextual action to use this template on related documents"
+#~ msgstr ""
+#~ "Ukloni kontekstni izbornik za korištenje ovog predloška na povezanim "
+#~ "dokumentima."
+
+#~ msgid ""
+#~ "Sidebar action to make this template available on records of the related "
+#~ "document model."
+#~ msgstr ""
+#~ "Akcija bočnog izbornika koja omogućuje korištenje ovog predloška na "
+#~ "povezanom modelu podataka."
+
+#~ msgid "mass.editing.wizard"
+#~ msgstr "mass.editing.wizard"
+
+#~ msgid "Sidebar button"
+#~ msgstr "Bočni gumb"
+
+#~ msgid "Sidebar button to open the sidebar action."
+#~ msgstr "Gumb za otvaranje bočne akcije."
diff --git a/odex30_base/server_action_mass_edit/i18n/hr_HR.po b/odex30_base/server_action_mass_edit/i18n/hr_HR.po
new file mode 100644
index 0000000..a2f6a8b
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/hr_HR.po
@@ -0,0 +1,290 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# Bole , 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 9.0c\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-09-10 02:53+0000\n"
+"PO-Revision-Date: 2016-09-10 02:53+0000\n"
+"Last-Translator: Bole , 2016\n"
+"Language-Team: Croatian (Croatia) (https://www.transifex.com/oca/teams/23907/"
+"hr_HR/)\n"
+"Language: hr_HR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Kreirao"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Kreirano"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Naziv"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Zadnje ažurirao"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Zadnje ažurirano"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Zadnje modificirano"
+
+#~ msgid "Name"
+#~ msgstr "Naziv"
diff --git a/odex30_base/server_action_mass_edit/i18n/hu.po b/odex30_base/server_action_mass_edit/i18n/hu.po
new file mode 100644
index 0000000..5d30e2a
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/hu.po
@@ -0,0 +1,288 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Hungarian (https://www.transifex.com/oca/teams/23907/hu/)\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Készítette"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Létrehozás dátuma"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Név megjelenítése"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "Azonosító ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Utoljára frissítve, által"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Utoljára frissítve ekkor"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Modell, minta"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Utolsó frissítés dátuma"
+
+#~ msgid "Name"
+#~ msgstr "Név"
diff --git a/odex30_base/server_action_mass_edit/i18n/id.po b/odex30_base/server_action_mass_edit/i18n/id.po
new file mode 100644
index 0000000..de3a611
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/id.po
@@ -0,0 +1,288 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Indonesian (https://www.transifex.com/oca/teams/23907/id/)\n"
+"Language: id\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Dibuat oleh"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Dibuat pada"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Nama Tampilan"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Diperbaharui oleh"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Diperbaharui pada"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Terakhir Dimodifikasi pada"
+
+#~ msgid "Name"
+#~ msgstr "Nama"
diff --git a/odex30_base/server_action_mass_edit/i18n/it.po b/odex30_base/server_action_mass_edit/i18n/it.po
new file mode 100644
index 0000000..de71548
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/it.po
@@ -0,0 +1,427 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2025-02-06 11:06+0000\n"
+"Last-Translator: mymage \n"
+"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 5.6.2\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+"ATTENZIONE : Considera che aggiungere un campo con dominio e non "
+"includere i campi del dominio nella definizione dell'operazione, produrrà un "
+"errore quando si cercherà di eseguirlo. Accertati di includerli."
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr "Aggiungi"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+"Aggiungi testo alla widget che sarà usato per mostrare il campo nella "
+"wizard. \n"
+"Esempio: 'many2many_tags', 'selection', 'image'"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr "Applica"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr "Applica dominio"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr "Applica il dominio di default collegato al campo"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr "Applica dominio alle righe"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr "Annulla"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Creato da"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Creato il"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Nome visualizzato"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr "Non toccare"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr "Campo"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr "Campi"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr "Se impostato, questo messaggio sarà mostrato nel wizard."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Ultimo aggiornamento di"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Ultimo aggiornamento il"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr "Modifica di massa"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr "Riga modifica di massa"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr "Modifica di massa record"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr "Azione server di massa"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr "I campi modifica di massa devono appartenere al modello azione server."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr "Messaggio"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Modello"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr "Modello sul quale l'azione del server si applica."
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+"Nessuno dei %(amount)d record(s) record selezionati possono essere elaborati."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr "Descrizione Operazione Pericolosa"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr "Descrizione Operazione Informativa"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr "Descrizione Operazione Avviso"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr "Q.tà elementi rimanenti"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr "Rimuovi"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr "Q.tà elementi selezionati"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr "Sequenza"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr "Azione server"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr "Righe azioni modifica di massa server"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr "Imposta"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr "L'operazione sarà eseguita sui %(amount)d record selezionati."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr "Tipo"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+"Tipi si azioni server. Sono disponibili i seguenti valori:\n"
+"- 'Aggiorna record': aggiorna il valore di un record\n"
+"- 'Crea attività': crea una attività (Discussione)\n"
+"- 'Invia e.mail': inserisce un messaggio, una nota o invia una e-mail "
+"(Discussione)\n"
+"- 'Invia SMS': invia SMS, ne tiene traccia nei documenti (SMS)\n"
+"- 'Aggiungi/rimuovi chi segue': aggiunge o rimuove chi segue un record "
+"(Discussione)\n"
+"- 'Crea record': crea un nuovo record con valori nuovi\n"
+"- 'Esegui codice': un blocco di codice Python che verrà eseguito\n"
+"- 'Invia notifica webhook': invia una richiesta POST ad un sistema esterno, "
+"conosciuto come un webhook\n"
+"- 'Esegue azioni esistenti': definisce una azione che esegue diverse altre "
+"azioni\n"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr "Vista"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr "Opzione Widget"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr "Procedura guidata per le modifiche massive"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+"Sono stati selezionati %(origin_amount)d record che non possono essere "
+"elaborati.\n"
+"Solo %(amount)d record saranno elaborati."
+
+#~ msgid "Action To Do"
+#~ msgstr "Azione da compiere"
+
+#~ msgid "Last Modified on"
+#~ msgstr "Ultima modifica il"
+
+#~ msgid ""
+#~ "Type of server action. The following values are available:\n"
+#~ "- 'Execute Python Code': a block of python code that will be executed\n"
+#~ "- 'Create a new Record': create a new record with new values\n"
+#~ "- 'Update a Record': update the values of a record\n"
+#~ "- 'Execute several actions': define an action that triggers several other "
+#~ "server actions\n"
+#~ "- 'Send Email': post a message, a note or send an email (Discuss)\n"
+#~ "- 'Add Followers': add followers to a record (Discuss)\n"
+#~ "- 'Create Next Activity': create an activity (Discuss)\n"
+#~ "- 'Send SMS Text Message': send SMS, log them on documents (SMS)"
+#~ msgstr ""
+#~ "Tipo di azione server. Sono disponibili i seguenti valori:\n"
+#~ "- 'Esegue codice Python': un blocco di codice Python che verrà eseguito\n"
+#~ "- 'Crea un nuovo record': crea un nuovo record con nuovi valori\n"
+#~ "- 'Aggiorna un record': aggiorna i valori di un record\n"
+#~ "- 'Esegue diverse azioni': definisce un'azione che attiva diverse altre "
+#~ "azioni\n"
+#~ "- 'Invia e-mail': inva un messagio, una nota o inviauna e-mail "
+#~ "(Discussione)\n"
+#~ "- 'Aggiunge chi segue': aggiunge chi segue ad un record (Discussione)\n"
+#~ "- 'Crea attività successiva': crea un'attività (Discussione)\n"
+#~ "- 'Invia SMS': invia SMS, registrandoli nei documenti (SMS)"
+
+#~ msgid "Action Name"
+#~ msgstr "Nome Azione"
+
+#~ msgid ""
+#~ "Add widget text that will be used to display the field in the wizard. "
+#~ "Example :\n"
+#~ "'many2many_tags', 'selection'"
+#~ msgstr ""
+#~ "Aggiungi il tipo di widget che sarà usato per mostrare il campo nel "
+#~ "wizard. Esempio:\n"
+#~ "'many2many_tags', 'selection'"
+
+#~ msgid "Allowed Groups"
+#~ msgstr "Gruppi Consentiti"
+
+#~ msgid "Apply domain"
+#~ msgstr "Applica dominio"
+
+#~ msgid "Domain"
+#~ msgstr "Dominio"
+
+#~ msgid "Line"
+#~ msgstr "Linea"
+
+#~ msgid "Mass Editing"
+#~ msgstr "Modifiche massive"
+
+#~ msgid "Mass Editing Line"
+#~ msgstr "Riga Modifiche massive"
+
+#~ msgid "Name"
+#~ msgstr "Nome"
+
+#~ msgid "Sidebar Action"
+#~ msgstr "Azione Pulsante Menù"
+
+#~ msgid "%s (copy)"
+#~ msgstr "%s (copia)"
+
+#~ msgid "Add Sidebar Button"
+#~ msgstr "Aggiungi pulsante menù"
+
+#~ msgid "Advanced"
+#~ msgstr "Avanzate"
+
+#~ msgid ""
+#~ "Display a button in the sidebar of related documents to open a "
+#~ "composition wizard"
+#~ msgstr ""
+#~ "Mostra un pulsante, nel menù azioni collegato ai documenti, che apre una "
+#~ "procedura guidata"
+
+#~ msgid "Mass Editing (%s)"
+#~ msgstr "Modifiche massive (%s)"
+
+#~ msgid "Mass Editing Object"
+#~ msgstr "Oggetto modifiche massive"
+
+#~ msgid "Model List"
+#~ msgstr "Elenco modello"
+
+#~ msgid ""
+#~ "Model is used for Selecting Fields. This is editable until Sidebar menu "
+#~ "is not created."
+#~ msgstr ""
+#~ "Il modello è usato per selezionare i campi. È possibile modificarlo fino "
+#~ "alla creazione del pulsante di menù."
+
+#~ msgid "Name must be unique!"
+#~ msgstr "Il nome deve essere univoco."
+
+#~ msgid "Object"
+#~ msgstr "Oggetto"
+
+#~ msgid "Remove Sidebar Button"
+#~ msgstr "Rimuovi pulsante menù"
+
+#~ msgid ""
+#~ "Remove the contextual action to use this template on related documents"
+#~ msgstr ""
+#~ "Rimuove l'azione contestuale che usa questo modello sui documenti "
+#~ "collegati"
+
+#~ msgid ""
+#~ "Sidebar action to make this template available on records of the related "
+#~ "document model."
+#~ msgstr ""
+#~ "Azione del menù per rendere disponibile questo modello ai record del "
+#~ "modello documento collegato."
diff --git a/odex30_base/server_action_mass_edit/i18n/ja.po b/odex30_base/server_action_mass_edit/i18n/ja.po
new file mode 100644
index 0000000..97e6226
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/ja.po
@@ -0,0 +1,288 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Japanese (https://www.transifex.com/oca/teams/23907/ja/)\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "作成者"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "作成日"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "表示名"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "最終更新者"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "最終更新日"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "最終更新日"
+
+#~ msgid "Name"
+#~ msgstr "名前"
diff --git a/odex30_base/server_action_mass_edit/i18n/ko.po b/odex30_base/server_action_mass_edit/i18n/ko.po
new file mode 100644
index 0000000..332d594
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/ko.po
@@ -0,0 +1,288 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Korean (https://www.transifex.com/oca/teams/23907/ko/)\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "작성자"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "작성일"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "표시 이름"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "최근 갱신한 사람"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "최근 갱신 날짜"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "최근 수정"
+
+#~ msgid "Name"
+#~ msgstr "이름"
diff --git a/odex30_base/server_action_mass_edit/i18n/lt.po b/odex30_base/server_action_mass_edit/i18n/lt.po
new file mode 100644
index 0000000..7d4f2d2
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/lt.po
@@ -0,0 +1,289 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Lithuanian (https://www.transifex.com/oca/teams/23907/lt/)\n"
+"Language: lt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"(n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Sukūrė"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Sukurta"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Vaizduojamas pavadinimas"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Paskutini kartą atnaujino"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Paskutinį kartą atnaujinta"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Paskutinį kartą keista"
+
+#~ msgid "Name"
+#~ msgstr "Pavadinimas"
diff --git a/odex30_base/server_action_mass_edit/i18n/lt_LT.po b/odex30_base/server_action_mass_edit/i18n/lt_LT.po
new file mode 100644
index 0000000..8360443
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/lt_LT.po
@@ -0,0 +1,284 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# Arminas Grigonis , 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 9.0c\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-09-10 02:53+0000\n"
+"PO-Revision-Date: 2016-09-10 02:53+0000\n"
+"Last-Translator: Arminas Grigonis , 2016\n"
+"Language-Team: Lithuanian (Lithuania) (https://www.transifex.com/oca/"
+"teams/23907/lt_LT/)\n"
+"Language: lt_LT\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"(n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Sukūrė"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Sukurta"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Paskutinį kartą atnaujino"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Paskutinį kartą atnaujinta"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
diff --git a/odex30_base/server_action_mass_edit/i18n/lv.po b/odex30_base/server_action_mass_edit/i18n/lv.po
new file mode 100644
index 0000000..e483020
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/lv.po
@@ -0,0 +1,286 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 9.0c\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-09-10 02:53+0000\n"
+"PO-Revision-Date: 2016-09-10 02:53+0000\n"
+"Last-Translator: OCA Transbot , 2016\n"
+"Language-Team: Latvian (https://www.transifex.com/oca/teams/23907/lv/)\n"
+"Language: lv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
+"2);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Izveidoja"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Izveidots"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Pēdējo reizi atjaunoja"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Pēdējās izmaiņas"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Name"
+#~ msgstr "Nosaukums"
diff --git a/odex30_base/server_action_mass_edit/i18n/mk.po b/odex30_base/server_action_mass_edit/i18n/mk.po
new file mode 100644
index 0000000..397b101
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/mk.po
@@ -0,0 +1,288 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Macedonian (https://www.transifex.com/oca/teams/23907/mk/)\n"
+"Language: mk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Креирано од"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Креирано на"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Прикажи име"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Последно ажурирање од"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Последно ажурирање на"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Последна промена на"
+
+#~ msgid "Name"
+#~ msgstr "Име"
diff --git a/odex30_base/server_action_mass_edit/i18n/mn.po b/odex30_base/server_action_mass_edit/i18n/mn.po
new file mode 100644
index 0000000..b47491f
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/mn.po
@@ -0,0 +1,288 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Mongolian (https://www.transifex.com/oca/teams/23907/mn/)\n"
+"Language: mn\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Үүсгэгч"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Үүсгэсэн огноо"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Дэлгэцийн Нэр"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Сүүлийн засвар хийсэн"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Сүүлийн засвар хийсэн огноо"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Сүүлийн засвар хийсэн огноо"
+
+#~ msgid "Name"
+#~ msgstr "Нэр"
diff --git a/odex30_base/server_action_mass_edit/i18n/nb.po b/odex30_base/server_action_mass_edit/i18n/nb.po
new file mode 100644
index 0000000..a944422
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/nb.po
@@ -0,0 +1,289 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Norwegian Bokmål (https://www.transifex.com/oca/teams/23907/"
+"nb/)\n"
+"Language: nb\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Opprettet av"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Opprettet"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Visnings navn"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Sist oppdatert av"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Sist oppdatert"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Sist oppdatert "
+
+#~ msgid "Name"
+#~ msgstr "Navn"
diff --git a/odex30_base/server_action_mass_edit/i18n/nb_NO.po b/odex30_base/server_action_mass_edit/i18n/nb_NO.po
new file mode 100644
index 0000000..6f5445d
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/nb_NO.po
@@ -0,0 +1,286 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# Imre Kristoffer Eilertsen , 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 9.0c\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-09-10 02:53+0000\n"
+"PO-Revision-Date: 2016-09-10 02:53+0000\n"
+"Last-Translator: Imre Kristoffer Eilertsen , 2016\n"
+"Language-Team: Norwegian Bokmål (Norway) (https://www.transifex.com/oca/"
+"teams/23907/nb_NO/)\n"
+"Language: nb_NO\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Laget av"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Laget den"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Vis navn"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Sist oppdatert av"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Sist oppdatert den"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Sist endret den"
diff --git a/odex30_base/server_action_mass_edit/i18n/nl.po b/odex30_base/server_action_mass_edit/i18n/nl.po
new file mode 100644
index 0000000..78995f6
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/nl.po
@@ -0,0 +1,313 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-17 21:08+0000\n"
+"PO-Revision-Date: 2021-04-17 18:46+0000\n"
+"Last-Translator: Bosd \n"
+"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.3.2\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr "Toevoegen"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Aangemaakt door"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Aangemaakt op"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Weergave naam"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr "Veld"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Laatste bijgewerkt door"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Laatst bijgewerkt op"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr "Bericht"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Model"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr "Verwijder"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr "Geselecteerde items"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr "Volgorde"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+#, fuzzy
+msgid "Wizard for mass edition"
+msgstr "Wizard for mass edition"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Laatst bijgewerkt op"
+
+#~ msgid "Action Name"
+#~ msgstr "Actie naam"
+
+#~ msgid "Allowed Groups"
+#~ msgstr "Toegestane groepen"
+
+#~ msgid "Domain"
+#~ msgstr "Domein"
+
+#~ msgid "Line"
+#~ msgstr "Regel"
+
+#, fuzzy
+#~ msgid "Mass Editing"
+#~ msgstr "Mass Editing"
+
+#, fuzzy
+#~ msgid "Mass Editing Line"
+#~ msgstr "Mass Editing Line"
+
+#~ msgid "Name"
+#~ msgstr "Naam"
+
+#~ msgid "%s (copy)"
+#~ msgstr "%s (kopie)"
diff --git a/odex30_base/server_action_mass_edit/i18n/nl_BE.po b/odex30_base/server_action_mass_edit/i18n/nl_BE.po
new file mode 100644
index 0000000..fe5429f
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/nl_BE.po
@@ -0,0 +1,289 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Dutch (Belgium) (https://www.transifex.com/oca/teams/23907/"
+"nl_BE/)\n"
+"Language: nl_BE\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Gemaakt door"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Gemaakt op"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Schermnaam"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Laatst bijgewerkt door"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Laatst bijgewerkt op"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Laatst Aangepast op"
+
+#~ msgid "Name"
+#~ msgstr "Naam"
diff --git a/odex30_base/server_action_mass_edit/i18n/nl_NL.po b/odex30_base/server_action_mass_edit/i18n/nl_NL.po
new file mode 100644
index 0000000..83f49cf
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/nl_NL.po
@@ -0,0 +1,296 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# Peter Hageman , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-30 12:21+0000\n"
+"PO-Revision-Date: 2017-06-30 12:21+0000\n"
+"Last-Translator: Peter Hageman , 2017\n"
+"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/"
+"teams/23907/nl_NL/)\n"
+"Language: nl_NL\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Aangemaakt door"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Aangemaakt op"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "weergavenaam"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+#, fuzzy
+msgid "Field"
+msgstr "Velden"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Laatst bijgewerkt door"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Laatst bijgewerkt op"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Model"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Laatst gewijzigd op"
+
+#~ msgid "Name"
+#~ msgstr "Naam"
+
+#~ msgid "%s (copy)"
+#~ msgstr "%s(kopie)"
+
+#~ msgid "mass.editing.wizard"
+#~ msgstr "mass.editing.wizard"
diff --git a/odex30_base/server_action_mass_edit/i18n/pl.po b/odex30_base/server_action_mass_edit/i18n/pl.po
new file mode 100644
index 0000000..fb95bd3
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/pl.po
@@ -0,0 +1,289 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Polish (https://www.transifex.com/oca/teams/23907/pl/)\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Utworzone przez"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Data utworzenia"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Wyświetlana nazwa "
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Ostatnio modyfikowane przez"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Data ostatniej modyfikacji"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Ostatnio modyfikowano"
+
+#~ msgid "Name"
+#~ msgstr "Nazwa"
diff --git a/odex30_base/server_action_mass_edit/i18n/pt.po b/odex30_base/server_action_mass_edit/i18n/pt.po
new file mode 100644
index 0000000..483426c
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/pt.po
@@ -0,0 +1,388 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+# Pedro Castro Silva , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-22 01:12+0000\n"
+"PO-Revision-Date: 2021-01-11 01:44+0000\n"
+"Last-Translator: Pedro Castro Silva \n"
+"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Weblate 4.3.2\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+"AVISO : Tenha em consideração que, se adicionar um campo com um "
+"domínio e não incluir os campos desse domínio da definição da operação, "
+"obterá um erro na tentativa de execução. Certifique-se de que os inclui."
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr "Adicionar"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr "Aplicar domínio pré-definido relacionado com um campo"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr "Aplicar domínio nas linhas"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Criado por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Criado em"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Nome a Exibir"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr "Campo"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "Id"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr "Se atribuído, esta mensagem será exibida no assistente."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Última Atualização por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Última Atualização em"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr "Mensagem"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Modelo"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr "Perigo da Descrição da Operação"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr "Info da Descrição da Operação"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr "Aviso da Descrição da Operação"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr "Qtd de Itens Restantes"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr "Remover"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr "Qtd de Itens Selecionados"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr "Sequência"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr "Atribuir"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr "Opção do Widget"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr "Assistente de edição em massa"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Última Modificação em"
+
+#~ msgid "Action Name"
+#~ msgstr "Nome da Ação"
+
+#~ msgid ""
+#~ "Add widget text that will be used to display the field in the wizard. "
+#~ "Example :\n"
+#~ "'many2many_tags', 'selection'"
+#~ msgstr ""
+#~ "Adicionar texto do widget que será usado para exibir o campo do "
+#~ "assistente. Exemplo:\n"
+#~ "'many2many_tags', 'selection'"
+
+#~ msgid "Allowed Groups"
+#~ msgstr "Grupos Permitidos"
+
+#~ msgid "Apply domain"
+#~ msgstr "Aplicar domínio"
+
+#~ msgid "Domain"
+#~ msgstr "Domínio"
+
+#~ msgid "Line"
+#~ msgstr "Linha"
+
+#~ msgid "Mass Editing"
+#~ msgstr "Edição em Massa"
+
+#~ msgid "Mass Editing Line"
+#~ msgstr "Linha de Edição em Massa"
+
+#~ msgid "Name"
+#~ msgstr "Nome"
+
+#~ msgid "Sidebar Action"
+#~ msgstr "Ação da Barra Lateral"
+
+#~ msgid "%s (copy)"
+#~ msgstr "%s (cópia)"
+
+#~ msgid "Add Sidebar Button"
+#~ msgstr "Adicionar Botão na Barra Lateral"
+
+#~ msgid "Advanced"
+#~ msgstr "Avançado"
+
+#~ msgid ""
+#~ "Display a button in the sidebar of related documents to open a "
+#~ "composition wizard"
+#~ msgstr ""
+#~ "Apresentar um botão na barra lateral do documento relacionado para abrir "
+#~ "um assistente de composição"
+
+#~ msgid "Mass Editing (%s)"
+#~ msgstr "Edição Múltipla (%s)"
+
+#~ msgid "Mass Editing Object"
+#~ msgstr "Objeto de Edição Múltipla"
+
+#~ msgid "Model List"
+#~ msgstr "Lista de Modelos"
+
+#~ msgid ""
+#~ "Model is used for Selecting Fields. This is editable until Sidebar menu "
+#~ "is not created."
+#~ msgstr ""
+#~ "O modelo é usada para a seleção de campos. É editável até o menu da barra "
+#~ "lateral ser criado."
+
+#~ msgid "Name must be unique!"
+#~ msgstr "O nome tem que ser único!"
+
+#~ msgid "Object"
+#~ msgstr "Objeto"
+
+#~ msgid "Remove Sidebar Button"
+#~ msgstr "Remover Botão na Barra Lateral"
+
+#~ msgid ""
+#~ "Remove the contextual action to use this template on related documents"
+#~ msgstr ""
+#~ "Remover a ação contextual para usar este modelo em documentos relacionados"
+
+#~ msgid ""
+#~ "Sidebar action to make this template available on records of the related "
+#~ "document model."
+#~ msgstr ""
+#~ "Ação de barra lateral para tornar este modelo disponível em registos do "
+#~ "modelos de documento relacionado."
+
+#~ msgid "mass.editing.wizard"
+#~ msgstr "mass.editing.wizard"
+
+#~ msgid "Sidebar button"
+#~ msgstr "Botão da Barra Lateral"
+
+#~ msgid "Sidebar button to open the sidebar action."
+#~ msgstr "Botão da barra lateral para despoletar a ação."
diff --git a/odex30_base/server_action_mass_edit/i18n/pt_BR.po b/odex30_base/server_action_mass_edit/i18n/pt_BR.po
new file mode 100644
index 0000000..eb1b630
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/pt_BR.po
@@ -0,0 +1,356 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-17 21:08+0000\n"
+"PO-Revision-Date: 2019-08-26 16:01+0000\n"
+"Last-Translator: Rodrigo Macedo \n"
+"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/"
+"teams/23907/pt_BR/)\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 3.8\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Criado por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Criado em"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Nome para Mostrar"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+#, fuzzy
+msgid "Field"
+msgstr "Campos"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "Identificação"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Última atualização por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Última atualização em"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Modelo"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr "Assistente para edição em massa"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Última atualização em"
+
+#~ msgid "Mass Editing"
+#~ msgstr "Edição em massa"
+
+#, fuzzy
+#~ msgid "Mass Editing Line"
+#~ msgstr "Edição em massa"
+
+#~ msgid "Name"
+#~ msgstr "Nome"
+
+#, fuzzy
+#~ msgid "Sidebar Action"
+#~ msgstr "Ação da Barra Lateral"
+
+#~ msgid "%s (copy)"
+#~ msgstr "%s (cópia)"
+
+#~ msgid "Add Sidebar Button"
+#~ msgstr "Adicionar Botão da Barra Lateral"
+
+#~ msgid "Advanced"
+#~ msgstr "Avançado"
+
+#~ msgid ""
+#~ "Display a button in the sidebar of related documents to open a "
+#~ "composition wizard"
+#~ msgstr ""
+#~ "Exibir um botão na barra lateral de documentos relacionados para abrir um "
+#~ "assistente de composição"
+
+#~ msgid "Mass Editing (%s)"
+#~ msgstr "Edição em Massa (%s)"
+
+#~ msgid "Mass Editing Object"
+#~ msgstr "Objeto de edição em massa"
+
+#~ msgid "Model List"
+#~ msgstr "Lista de Modelos"
+
+#~ msgid ""
+#~ "Model is used for Selecting Fields. This is editable until Sidebar menu "
+#~ "is not created."
+#~ msgstr ""
+#~ "O modelo é usado para selecionar campos. Isso é editável até que o menu "
+#~ "da barra lateral não seja criado."
+
+#~ msgid "Name must be unique!"
+#~ msgstr "Nome deve ser único!"
+
+#~ msgid "Object"
+#~ msgstr "Objeto"
+
+#~ msgid "Remove Sidebar Button"
+#~ msgstr "Remover Botão da Barra Lateral"
+
+#~ msgid ""
+#~ "Remove the contextual action to use this template on related documents"
+#~ msgstr ""
+#~ "Remover a ação contextual para usar este modelo nos documentos "
+#~ "relacionados"
+
+#~ msgid ""
+#~ "Sidebar action to make this template available on records of the related "
+#~ "document model."
+#~ msgstr ""
+#~ "Ação da barra lateral para disponibilizar esse modelo nos registros do "
+#~ "modelo de documento relacionado."
diff --git a/odex30_base/server_action_mass_edit/i18n/pt_PT.po b/odex30_base/server_action_mass_edit/i18n/pt_PT.po
new file mode 100644
index 0000000..dfc5fc6
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/pt_PT.po
@@ -0,0 +1,324 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-17 21:08+0000\n"
+"PO-Revision-Date: 2017-05-17 21:08+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Portuguese (Portugal) (https://www.transifex.com/oca/"
+"teams/23907/pt_PT/)\n"
+"Language: pt_PT\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Criado por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Criado em"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Nome a Apresentar"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+#, fuzzy
+msgid "Field"
+msgstr "Campos"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Atualizado pela última vez por"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Atualizado pela última vez em"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Modelo"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Última Modificação em"
+
+#~ msgid "Mass Editing"
+#~ msgstr "Edição Múltipla"
+
+#, fuzzy
+#~ msgid "Mass Editing Line"
+#~ msgstr "Edição Múltipla"
+
+#~ msgid "Name"
+#~ msgstr "Nome"
+
+#~ msgid "Advanced"
+#~ msgstr "Avançado"
+
+#~ msgid ""
+#~ "Display a button in the sidebar of related documents to open a "
+#~ "composition wizard"
+#~ msgstr ""
+#~ "Apresentar um botão na barra lateral do documento relacionado para abrir "
+#~ "um assistente de composição"
+
+#~ msgid "Mass Editing (%s)"
+#~ msgstr "Edição Múltipla (%s)"
+
+#~ msgid "Model List"
+#~ msgstr "Lista de Modelos"
+
+#~ msgid "Name must be unique!"
+#~ msgstr "O nome tem que ser único!"
+
+#~ msgid "Object"
+#~ msgstr "Objeto"
+
+#~ msgid ""
+#~ "Remove the contextual action to use this template on related documents"
+#~ msgstr ""
+#~ "Remover a ação contextual para usar este modelo em documentos relacionados"
diff --git a/odex30_base/server_action_mass_edit/i18n/ro.po b/odex30_base/server_action_mass_edit/i18n/ro.po
new file mode 100644
index 0000000..6c41aa1
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/ro.po
@@ -0,0 +1,290 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+# Daniel Schweiger , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-22 01:12+0000\n"
+"PO-Revision-Date: 2017-06-22 01:12+0000\n"
+"Last-Translator: Daniel Schweiger , 2017\n"
+"Language-Team: Romanian (https://www.transifex.com/oca/teams/23907/ro/)\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
+"2:1));\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Creat de"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Creat la"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Nume Afişat"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Ultima actualizare făcută de"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Ultima actualizare la"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Model"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Ultima actualizare în"
+
+#~ msgid "Name"
+#~ msgstr "Nume"
diff --git a/odex30_base/server_action_mass_edit/i18n/ru.po b/odex30_base/server_action_mass_edit/i18n/ru.po
new file mode 100644
index 0000000..757289d
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/ru.po
@@ -0,0 +1,287 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Russian (https://www.transifex.com/oca/teams/23907/ru/)\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
+"(n%100>=11 && n%100<=14)? 2 : 3);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Создано"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Создан"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Последний раз обновлено"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Последний раз обновлено"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Модель"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Name"
+#~ msgstr "Название"
diff --git a/odex30_base/server_action_mass_edit/i18n/server_action_mass_edit.pot b/odex30_base/server_action_mass_edit/i18n/server_action_mass_edit.pot
new file mode 100644
index 0000000..8d868e5
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/server_action_mass_edit.pot
@@ -0,0 +1,274 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * server_action_mass_edit
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 18.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not"
+" including the fields of such domain in this operation definition, will lead"
+" to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
diff --git a/odex30_base/server_action_mass_edit/i18n/sk.po b/odex30_base/server_action_mass_edit/i18n/sk.po
new file mode 100644
index 0000000..c8e3d35
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/sk.po
@@ -0,0 +1,288 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Slovak (https://www.transifex.com/oca/teams/23907/sk/)\n"
+"Language: sk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Vytvoril"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Vytvorené"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Zobraziť meno"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Naposledy upravil"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Naposledy upravené"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Posledná modifikácia"
+
+#~ msgid "Name"
+#~ msgstr "Meno"
diff --git a/odex30_base/server_action_mass_edit/i18n/sl.po b/odex30_base/server_action_mass_edit/i18n/sl.po
new file mode 100644
index 0000000..e63a81e
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/sl.po
@@ -0,0 +1,325 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-17 21:08+0000\n"
+"PO-Revision-Date: 2023-04-11 13:26+0000\n"
+"Last-Translator: Matjaz Mozetic \n"
+"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n"
+"Language: sl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || "
+"n%100==4 ? 2 : 3;\n"
+"X-Generator: Weblate 4.14.1\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Ustvaril"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Ustvarjeno"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Prikazani naziv"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+#, fuzzy
+msgid "Field"
+msgstr "Polja"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Zadnjič posodobil"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Zadnjič posodobljeno"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Model"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Zadnjič spremenjeno"
+
+#~ msgid "Mass Editing"
+#~ msgstr "Masovno urejanje"
+
+#, fuzzy
+#~ msgid "Mass Editing Line"
+#~ msgstr "Masovno urejanje"
+
+#~ msgid "Name"
+#~ msgstr "Naziv"
+
+#~ msgid "Advanced"
+#~ msgstr "Napredno"
+
+#~ msgid ""
+#~ "Display a button in the sidebar of related documents to open a "
+#~ "composition wizard"
+#~ msgstr ""
+#~ "Prikaz gumba v stranski vrstici povezanega dokumenta za zagon čarovnika "
+#~ "za urejanje"
+
+#~ msgid "Mass Editing (%s)"
+#~ msgstr "Masovno urejanje (%s)"
+
+#~ msgid "Model List"
+#~ msgstr "Seznam modelov"
+
+#~ msgid "Name must be unique!"
+#~ msgstr "Naziv mora biti unikaten!"
+
+#~ msgid "Object"
+#~ msgstr "Objekt"
+
+#~ msgid ""
+#~ "Remove the contextual action to use this template on related documents"
+#~ msgstr ""
+#~ "Odstrani kontekstno dejanje za uporabo te predloge na povezanih dokumentih"
diff --git a/odex30_base/server_action_mass_edit/i18n/sr.po b/odex30_base/server_action_mass_edit/i18n/sr.po
new file mode 100644
index 0000000..cbdc112
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/sr.po
@@ -0,0 +1,286 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Serbian (https://www.transifex.com/oca/teams/23907/sr/)\n"
+"Language: sr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Kreiran"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Name"
+#~ msgstr "Ime"
diff --git a/odex30_base/server_action_mass_edit/i18n/sr@latin.po b/odex30_base/server_action_mass_edit/i18n/sr@latin.po
new file mode 100644
index 0000000..83f64f4
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/sr@latin.po
@@ -0,0 +1,290 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-17 21:08+0000\n"
+"PO-Revision-Date: 2017-05-17 21:08+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Serbian (Latin) (https://www.transifex.com/oca/teams/23907/"
+"sr@latin/)\n"
+"Language: sr@latin\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Kreirao"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Kreiran"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Ime za prikaz"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Zadnja izmjena"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Zadnja izmjena"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Zadnja izmjena"
+
+#~ msgid "Name"
+#~ msgstr "Ime:"
diff --git a/odex30_base/server_action_mass_edit/i18n/sv.po b/odex30_base/server_action_mass_edit/i18n/sv.po
new file mode 100644
index 0000000..c5549a2
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/sv.po
@@ -0,0 +1,326 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-17 21:08+0000\n"
+"PO-Revision-Date: 2024-02-27 11:35+0000\n"
+"Last-Translator: jakobkrabbe \n"
+"Language-Team: Swedish (https://www.transifex.com/oca/teams/23907/sv/)\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.17\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+"VARNING : Tänk på att om du lägger till ett fält med en domän, och "
+"inte inkluderar fälten för en sådan domän i denna operationsdefinition, "
+"kommer det att leda till ett fel när du försöker utföra den. Se till att du "
+"inkluderar dem."
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr "Lägg till"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+"Lägg till widgettext som kommer att användas för att visa fältet i guiden.\n"
+"Exempel: 'many2many_tags', 'selection', 'image'"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr "Tillämpa"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr "Ansök om domän"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr "Tillämpa standarddomän relaterad till fält"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr "Tillämpa domän i rader"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr "Avbryt"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Skapad av"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Skapad den"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Visningsnamn"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr "Rör inte"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr "Fält"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr "Fält"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr "Om detta anges kommer meddelandet att visas i guiden."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Senast uppdaterad av"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Senast uppdaterad"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr "Massredigera"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr "Massredigera rad"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr "Massredigera poster"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr "Massredigeringsfält bör tillhöra serverns åtgärdsmodell."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr "Meddelande"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Modell"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr "Modell på vilken serveråtgärden körs."
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr "Ingen av de %(amount)d poster som du har valt kan bearbetas."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr "Funktionsbeskrivning Fara"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr "Funktionsbeskrivning Info"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr "Funktionbeskrivning Varning"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr "Återstående antal artiklar"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr "Ta bort"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr "Vald artikel Antal"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr "Sekvens"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr "Serveråtgärd"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr "Serveråtgärder massredigering av rader"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr "Ställ in"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+"Behandlingen kommer att behandlas på den %(amount)d utvalda posten/posterna."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr "Alternativ för widget"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr "Guide för massutgåva"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+"Du har valt %(origin_amount)d post(er) som inte kan bearbetas.\n"
+"Endast %(amount)d post(er) kommer att behandlas."
+
+#~ msgid "Action To Do"
+#~ msgstr "Åtgärder att vidta"
+
+#~ msgid "Last Modified on"
+#~ msgstr "Senast redigerad"
+
+#~ msgid ""
+#~ "Type of server action. The following values are available:\n"
+#~ "- 'Execute Python Code': a block of python code that will be executed\n"
+#~ "- 'Create a new Record': create a new record with new values\n"
+#~ "- 'Update a Record': update the values of a record\n"
+#~ "- 'Execute several actions': define an action that triggers several other "
+#~ "server actions\n"
+#~ "- 'Send Email': post a message, a note or send an email (Discuss)\n"
+#~ "- 'Add Followers': add followers to a record (Discuss)\n"
+#~ "- 'Create Next Activity': create an activity (Discuss)\n"
+#~ "- 'Send SMS Text Message': send SMS, log them on documents (SMS)"
+#~ msgstr ""
+#~ "Typ av serveråtgärd. Följande värden är tillgängliga:\n"
+#~ "- \"Execute Python Code\": ett block med Python-kod som kommer att "
+#~ "exekveras\n"
+#~ "- 'Skapa en ny post': skapa en ny post med nya värden\n"
+#~ "- 'Uppdatera en post': uppdatera värdena för en post\n"
+#~ "- \"Utför flera åtgärder\": definiera en åtgärd som utlöser flera andra "
+#~ "serveråtgärder\n"
+#~ "- 'Skicka e-post': posta ett meddelande, en anteckning eller skicka ett e-"
+#~ "postmeddelande (Discuss)\n"
+#~ "- \"Lägg till följare\": lägg till följare till en post (Diskutera)\n"
+#~ "- 'Skapa nästa aktivitet': skapa en aktivitet (Diskutera)\n"
+#~ "- \"Skicka SMS\": skicka SMS, logga dem på dokument (SMS)"
+
+#~ msgid "Name"
+#~ msgstr "Namn"
diff --git a/odex30_base/server_action_mass_edit/i18n/th.po b/odex30_base/server_action_mass_edit/i18n/th.po
new file mode 100644
index 0000000..c0db924
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/th.po
@@ -0,0 +1,288 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-17 21:08+0000\n"
+"PO-Revision-Date: 2017-05-17 21:08+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Thai (https://www.transifex.com/oca/teams/23907/th/)\n"
+"Language: th\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "สร้างโดย"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "สร้างเมื่อ"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "ชื่อที่ใช้แสดง"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "รหัส"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "อัพเดทครั้งสุดท้ายโดย"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "อัพเดทครั้งสุดท้ายเมื่อ"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "แก้ไขครั้งสุดท้ายเมื่อ"
+
+#~ msgid "Name"
+#~ msgstr "ชื่อ"
diff --git a/odex30_base/server_action_mass_edit/i18n/tr.po b/odex30_base/server_action_mass_edit/i18n/tr.po
new file mode 100644
index 0000000..ab70e5c
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/tr.po
@@ -0,0 +1,383 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-17 21:08+0000\n"
+"PO-Revision-Date: 2023-03-09 12:23+0000\n"
+"Last-Translator: Ediz Duman \n"
+"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Weblate 4.14.1\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+" UYARI : Bu işlem tanımına etki alanına sahip bir alan eklemek ve bu "
+"etki alanına ait alanları dahil etmemenin, bunu gerçekleştirmeye çalışırken "
+"bir hataya yol açacağını dikkate alın. Bunları dahil ettiğinizden emin olun."
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr "Ekle"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+"Alanı sihirbazda görüntülemek için kullanılacak pencere öğesi metnini "
+"ekleyin.\n"
+"Örnek: \"many2many_tags\", \"seçim\", \"resim\""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr "Uygula"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr "Etki Alanını Uygula"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr "Alanla ilgili varsayılan domain uygula"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr "Domain satırlarına uygula"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr "İptal"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Oluşturan"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Oluşturuldu"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Görünen İsim"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr "Dokunmayın"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr "Alan"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr "Alanlar"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr "Ayarlanırsa, bu mesaj sihirbazda görüntülenecektir."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Son güncelleyen"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Son güncelleme"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr "Toplu Düzenleme"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr "Toplu Düzenleme Satırı"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr "Toplu Düzenleme Kayıtları"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr "Toplu düzenleme alanları sunucu eylem modeline ait olmalıdır."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr "Mesaj"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Model"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr "Sunucu eyleminin üzerinde çalıştığı model."
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr "Seçtiğiniz %(amount)d kayıt(lar)ın hiçbiri işlenemiyor."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr "Operasyon Tehlike Açıklaması"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr "Operasyon Bilgi Açıklaması"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr "Operasyon Uyarı Açıklaması"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr "Kalan Öğe Miktarı"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr "Kaldır"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr "Seçilen Öğe Adeti"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr "Sıralama"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr "Sunucu İşlemi"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr "Sunucu Eylemleri Toplu Düzenleme Satırları"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr "Ayarla"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr "İşlem seçilen %(amount)d kayıtta işlenecektir."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr "Widget Seçeneği"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr "Toplu düzenleme sihirbazı"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+"İşlenemeyen %(origin_amount)d kayıt seçtiniz.\n"
+"Yalnızca %(amount)d kayıt(lar) işlenecek."
+
+#~ msgid "Action To Do"
+#~ msgstr "Yapılacak İşlem"
+
+#~ msgid "Last Modified on"
+#~ msgstr "Son değişiklik"
+
+#~ msgid ""
+#~ "Type of server action. The following values are available:\n"
+#~ "- 'Execute Python Code': a block of python code that will be executed\n"
+#~ "- 'Create a new Record': create a new record with new values\n"
+#~ "- 'Update a Record': update the values of a record\n"
+#~ "- 'Execute several actions': define an action that triggers several other "
+#~ "server actions\n"
+#~ "- 'Send Email': post a message, a note or send an email (Discuss)\n"
+#~ "- 'Add Followers': add followers to a record (Discuss)\n"
+#~ "- 'Create Next Activity': create an activity (Discuss)\n"
+#~ "- 'Send SMS Text Message': send SMS, log them on documents (SMS)"
+#~ msgstr ""
+#~ "Sunucu eylemi türü. Aşağıdaki değerler mevcuttur:\n"
+#~ "- 'Python Kodunu Yürüt': yürütülecek bir python kodu bloğu\n"
+#~ "- 'Yeni Kayıt Oluştur': yeni değerlerle yeni bir kayıt oluşturun\n"
+#~ "- 'Bir Kaydı Güncelle': bir kaydın değerlerini güncelleyin\n"
+#~ "- 'Birkaç eylem yürütün': diğer birkaç sunucu eylemini tetikleyen bir "
+#~ "eylem tanımlayın\n"
+#~ "- 'E-posta Gönder': bir mesaj, not gönderin veya bir e-posta gönderin "
+#~ "(Tartış)\n"
+#~ "- 'Takipçi Ekle': bir kayda takipçi ekleyin (Tartış)\n"
+#~ "- 'Sonraki Etkinlik Oluştur': bir etkinlik oluşturun (Tartış)\n"
+#~ "- 'SMS Metin Mesajı Gönder': SMS gönderin, belgelere kaydedin (SMS)"
+
+#~ msgid "Action Name"
+#~ msgstr "Eylem Adı"
+
+#~ msgid ""
+#~ "Add widget text that will be used to display the field in the wizard. "
+#~ "Example :\n"
+#~ "'many2many_tags', 'selection'"
+#~ msgstr ""
+#~ "Alanı sihirbazda görüntülemek için kullanılacak widget metni ekleyin. "
+#~ "Örnek :\n"
+#~ "'many2many_tags', 'selection'"
+
+#~ msgid "Allowed Groups"
+#~ msgstr "İzin Verilen Gruplar"
+
+#~ msgid "Apply domain"
+#~ msgstr "Domain uygula"
+
+#~ msgid "Domain"
+#~ msgstr "Domain"
+
+#~ msgid "Line"
+#~ msgstr "Satır"
+
+#~ msgid "Mass Editing"
+#~ msgstr "Toplu Düzenleme"
+
+#~ msgid "Mass Editing Line"
+#~ msgstr "Toplu Düzenleme Satırı"
+
+#~ msgid "Name"
+#~ msgstr "Adı"
+
+#~ msgid "Sidebar Action"
+#~ msgstr "Kenar Çubuk Eylemi"
+
+#~ msgid "Advanced"
+#~ msgstr "Gelişmiş"
+
+#~ msgid ""
+#~ "Display a button in the sidebar of related documents to open a "
+#~ "composition wizard"
+#~ msgstr ""
+#~ "ilgili modelin \"DEVAMI\" menüsüne değiştirme sihirbazı açan bir eylem "
+#~ "ekler."
+
+#~ msgid "Mass Editing (%s)"
+#~ msgstr "Toplu Düzenleme (%s)"
+
+#~ msgid "Model List"
+#~ msgstr "Model Listesi"
+
+#~ msgid "Name must be unique!"
+#~ msgstr "Ad tekil olmalı!"
+
+#~ msgid "Object"
+#~ msgstr "Nesne"
+
+#~ msgid ""
+#~ "Remove the contextual action to use this template on related documents"
+#~ msgstr "ilgili belgelerde kullanılacak bağlamsal eylemi kaldır. "
diff --git a/odex30_base/server_action_mass_edit/i18n/tr_TR.po b/odex30_base/server_action_mass_edit/i18n/tr_TR.po
new file mode 100644
index 0000000..8383fa3
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/tr_TR.po
@@ -0,0 +1,289 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Turkish (Turkey) (https://www.transifex.com/oca/teams/23907/"
+"tr_TR/)\n"
+"Language: tr_TR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Oluşturan"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Oluşturulma tarihi"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Görünen ad"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "Kimlik"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "En son güncelleyen "
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "En son güncelleme tarihi"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Tip"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "En son güncelleme tarihi"
+
+#~ msgid "Name"
+#~ msgstr "Ad"
diff --git a/odex30_base/server_action_mass_edit/i18n/uk.po b/odex30_base/server_action_mass_edit/i18n/uk.po
new file mode 100644
index 0000000..8aafd95
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/uk.po
@@ -0,0 +1,326 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-17 21:08+0000\n"
+"PO-Revision-Date: 2022-10-11 10:35+0000\n"
+"Last-Translator: Razumovskyi Yurii \n"
+"Language-Team: Ukrainian (https://www.transifex.com/oca/teams/23907/uk/)\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Generator: Weblate 4.3.2\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+"УВАГА : Зверніть увагу, що додаючи поле з фільтром (domain) та не "
+"додаючи поля цього фільтру у визначення поточної операції, призведе до "
+"помилки при спробі виконати його. Переконайтеся, що ви їх додали."
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr "Додати"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr "Застосувати фільтр за замовчуванням, пов'язаний з полем"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr "Застосувати фільтр у рядках"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Створив"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Створено"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Назва для відображення"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr "Поле"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr "Якщо вказано, то це повідомлення буде відображатися у вікні майстра."
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Востаннє відредаговано"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Дата останньої зміни"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr "Повідомлення"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "Модель"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr "Опис операції (Небезпека)"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr "Опис операції (Повідомлення)"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr "Опис операції (Застереження)"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr "Кількість елементів, що залишилось"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr "Вилучити"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr "Кількість обраних елементів"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr "Послідовність"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr "Встановити"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr "Використати віджет"
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr "Майстер для групової обробки"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Остання модифікація"
+
+#~ msgid "Action Name"
+#~ msgstr "Назва дії"
+
+#~ msgid ""
+#~ "Add widget text that will be used to display the field in the wizard. "
+#~ "Example :\n"
+#~ "'many2many_tags', 'selection'"
+#~ msgstr ""
+#~ "Додайте назву віджета, котрий буде використаний для показу поля у формі "
+#~ "майстра.\n"
+#~ "Наприклад: 'many2many_tags', 'selection', 'image'"
+
+#~ msgid "Allowed Groups"
+#~ msgstr "Дозволені групи"
+
+#~ msgid "Apply domain"
+#~ msgstr "Застосувати фільтр"
+
+#~ msgid "Domain"
+#~ msgstr "Фільтр"
+
+#~ msgid "Line"
+#~ msgstr "Рядок"
+
+#~ msgid "Mass Editing"
+#~ msgstr "Групова обробка"
+
+#~ msgid "Mass Editing Line"
+#~ msgstr "Рядок групової обробки"
+
+#~ msgid "Name"
+#~ msgstr "Назва"
+
+#~ msgid "%s (copy)"
+#~ msgstr "%s (copy)"
diff --git a/odex30_base/server_action_mass_edit/i18n/vi.po b/odex30_base/server_action_mass_edit/i18n/vi.po
new file mode 100644
index 0000000..f45b773
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/vi.po
@@ -0,0 +1,288 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-05-17 21:08+0000\n"
+"PO-Revision-Date: 2017-05-17 21:08+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Vietnamese (https://www.transifex.com/oca/teams/23907/vi/)\n"
+"Language: vi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Được tạo bởi"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Tạo trên"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "Tên hiển thị"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Last Updated by"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Cập nhật lần cuối vào"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "Sửa lần cuối vào"
+
+#~ msgid "Name"
+#~ msgstr "Tên"
diff --git a/odex30_base/server_action_mass_edit/i18n/vi_VN.po b/odex30_base/server_action_mass_edit/i18n/vi_VN.po
new file mode 100644
index 0000000..8003efa
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/vi_VN.po
@@ -0,0 +1,286 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 9.0c\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-09-10 02:53+0000\n"
+"PO-Revision-Date: 2016-09-10 02:53+0000\n"
+"Last-Translator: OCA Transbot , 2016\n"
+"Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/oca/"
+"teams/23907/vi_VN/)\n"
+"Language: vi_VN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "Tạo bởi"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "Tạo vào"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "Cập nhật lần cuối bởi"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "Cập nhật lần cuối vào"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Name"
+#~ msgstr "Tên"
diff --git a/odex30_base/server_action_mass_edit/i18n/zh_CN.po b/odex30_base/server_action_mass_edit/i18n/zh_CN.po
new file mode 100644
index 0000000..a71458d
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/zh_CN.po
@@ -0,0 +1,349 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# Jeffery Chenn , 2016
+# OCA Transbot , 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 9.0c\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-09-10 02:53+0000\n"
+"PO-Revision-Date: 2019-09-02 16:56+0000\n"
+"Last-Translator: 黎伟杰 <674416404@qq.com>\n"
+"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/"
+"zh_CN/)\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 3.8\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "创建者"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "创建时间"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "显示名称"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+#, fuzzy
+msgid "Field"
+msgstr "字段"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "最后更新者"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "最后更新时间"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr "模型"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr "批量编辑的向导"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "最后修改时间"
+
+#~ msgid "Mass Editing"
+#~ msgstr "批量编辑"
+
+#, fuzzy
+#~ msgid "Mass Editing Line"
+#~ msgstr "批量编辑"
+
+#~ msgid "Name"
+#~ msgstr "名称"
+
+#, fuzzy
+#~ msgid "Sidebar Action"
+#~ msgstr "边栏动作"
+
+#~ msgid "%s (copy)"
+#~ msgstr "%s (复制)"
+
+#~ msgid "Add Sidebar Button"
+#~ msgstr "添加动作按钮"
+
+#~ msgid "Advanced"
+#~ msgstr "高级"
+
+#~ msgid ""
+#~ "Display a button in the sidebar of related documents to open a "
+#~ "composition wizard"
+#~ msgstr "在相关文档的动作中显示一个按钮打开一个组合向导"
+
+#~ msgid "Mass Editing (%s)"
+#~ msgstr "批量编辑(%s)"
+
+#~ msgid "Mass Editing Object"
+#~ msgstr "批量编辑对象"
+
+#~ msgid "Model List"
+#~ msgstr "模型列表"
+
+#~ msgid ""
+#~ "Model is used for Selecting Fields. This is editable until Sidebar menu "
+#~ "is not created."
+#~ msgstr "模型用于选择字段。在未创建动作菜单之前,此选项是可编辑的。"
+
+#~ msgid "Name must be unique!"
+#~ msgstr "名字必须是唯一的!"
+
+#~ msgid "Object"
+#~ msgstr "对象"
+
+#~ msgid "Remove Sidebar Button"
+#~ msgstr "删除动作按钮"
+
+#~ msgid ""
+#~ "Remove the contextual action to use this template on related documents"
+#~ msgstr "删除上下文操作以在相关文档上使用此模板"
+
+#~ msgid ""
+#~ "Sidebar action to make this template available on records of the related "
+#~ "document model."
+#~ msgstr "边栏使此模板可用于相关文档模型的记录。"
diff --git a/odex30_base/server_action_mass_edit/i18n/zh_TW.po b/odex30_base/server_action_mass_edit/i18n/zh_TW.po
new file mode 100644
index 0000000..84dcea3
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/i18n/zh_TW.po
@@ -0,0 +1,289 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mass_editing
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-02-22 00:55+0000\n"
+"PO-Revision-Date: 2017-02-22 00:55+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Chinese (Taiwan) (https://www.transifex.com/oca/teams/23907/"
+"zh_TW/)\n"
+"Language: zh_TW\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid ""
+"WARNING : Take into account that adding a field with a domain, and not "
+"including the fields of such domain in this operation definition, will lead "
+"to an error when trying to perform it. Make sure you include them."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Add"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid ""
+"Add widget text that will be used to display the field in the wizard.\n"
+"Example: 'many2many_tags', 'selection', 'image'"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Apply"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply Domain"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__apply_domain
+msgid "Apply default domain related to field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_apply_domain_in_lines
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_apply_domain_in_lines
+msgid "Apply domain in lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_mass_editing_wizard_form
+msgid "Cancel"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_uid
+msgid "Created by"
+msgstr "建立者"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__create_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__create_date
+msgid "Created on"
+msgstr "建立於"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__display_name
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__display_name
+msgid "Display Name"
+msgstr "顯示名稱"
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Don't touch"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__field_id
+msgid "Field"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Fields"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__id
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__id
+msgid "ID"
+msgstr "ID"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__mass_edit_message
+msgid "If set, this message will be displayed in the wizard."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_uid
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_uid
+msgid "Last Updated by"
+msgstr "最後更新:"
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__write_date
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__write_date
+msgid "Last Updated on"
+msgstr "最後更新於"
+
+#. module: server_action_mass_edit
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_partner_title
+#: model:ir.actions.server,name:server_action_mass_edit.mass_editing_user
+msgid "Mass Edit"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_line_ids
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_line_ids
+msgid "Mass Edit Line"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields.selection,name:server_action_mass_edit.selection__ir_actions_server__state__mass_edit
+msgid "Mass Edit Records"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_ui_view__mass_server_action_id
+msgid "Mass Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py:0
+msgid "Mass edit fields should belong to the server action model."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__mass_edit_message
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__message
+#: model_terms:ir.ui.view,arch_db:server_action_mass_edit.view_server_action_form
+msgid "Message"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server_mass_edit_line__model_id
+msgid "Model on which the server action runs."
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "None of the %(amount)d record(s) you have selected can be processed."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_danger
+msgid "Operation Description Danger"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_info
+msgid "Operation Description Info"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__operation_description_warning
+msgid "Operation Description Warning"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__remaining_item_qty
+msgid "Remaining Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Remove"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_mass_editing_wizard__selected_item_qty
+msgid "Selected Item Qty"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__server_action_id
+msgid "Server Action"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_actions_server_mass_edit_line
+msgid "Server Actions Mass Edit Lines"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "Set"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid "The treatment will be processed on the %(amount)d selected record(s)."
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_cron__state
+msgid "Type"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_actions_server__state
+#: model:ir.model.fields,help:server_action_mass_edit.field_ir_cron__state
+msgid ""
+"Type of server action. The following values are available:\n"
+"- 'Update a Record': update the values of a record\n"
+"- 'Create Activity': create an activity (Discuss)\n"
+"- 'Send Email': post a message, a note or send an email (Discuss)\n"
+"- 'Send SMS': send SMS, log them on documents (SMS)- 'Add/Remove Followers': "
+"add or remove followers to a record (Discuss)\n"
+"- 'Create Record': create a new record with new values\n"
+"- 'Execute Code': a block of Python code that will be executed\n"
+"- 'Send Webhook Notification': send a POST request to an external system, "
+"also known as a Webhook\n"
+"- 'Execute Existing Actions': define an action that triggers several other "
+"server actions\n"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_ir_ui_view
+msgid "View"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model.fields,field_description:server_action_mass_edit.field_ir_actions_server_mass_edit_line__widget_option
+msgid "Widget Option"
+msgstr ""
+
+#. module: server_action_mass_edit
+#: model:ir.model,name:server_action_mass_edit.model_mass_editing_wizard
+msgid "Wizard for mass edition"
+msgstr ""
+
+#. module: server_action_mass_edit
+#. odoo-python
+#: code:addons/server_action_mass_edit/wizard/mass_editing_wizard.py:0
+msgid ""
+"You have selected %(origin_amount)d record(s) that can not be processed.\n"
+"Only %(amount)d record(s) will be processed."
+msgstr ""
+
+#~ msgid "Last Modified on"
+#~ msgstr "最後修改:"
+
+#~ msgid "Name"
+#~ msgstr "名稱"
diff --git a/odex30_base/server_action_mass_edit/models/__init__.py b/odex30_base/server_action_mass_edit/models/__init__.py
new file mode 100644
index 0000000..bdb0d08
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/models/__init__.py
@@ -0,0 +1,3 @@
+from . import ir_actions_server
+from . import ir_actions_server_mass_edit_line
+from . import ir_ui_view
diff --git a/odex30_base/server_action_mass_edit/models/ir_actions_server.py b/odex30_base/server_action_mass_edit/models/ir_actions_server.py
new file mode 100644
index 0000000..fc42c98
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/models/ir_actions_server.py
@@ -0,0 +1,72 @@
+# Copyright (C) 2020 Iván Todorovich (https://twitter.com/ivantodorovich)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from odoo import api, fields, models
+
+
+class IrActionsServer(models.Model):
+ _inherit = "ir.actions.server"
+
+ state = fields.Selection(
+ selection_add=[("mass_edit", "Mass Edit Records")],
+ ondelete={"mass_edit": "cascade"},
+ )
+ mass_edit_line_ids = fields.One2many(
+ "ir.actions.server.mass.edit.line",
+ "server_action_id",
+ )
+ mass_edit_apply_domain_in_lines = fields.Boolean(
+ string="Apply domain in lines",
+ compute="_compute_mass_edit_apply_domain_in_lines",
+ )
+ mass_edit_message = fields.Text(
+ string="Message",
+ help="If set, this message will be displayed in the wizard.",
+ )
+
+ @api.onchange("model_id")
+ def _onchange_model_id(self):
+ # Play nice with other modules
+ res = None
+ if hasattr(super(), "_onchange_model_id"):
+ res = super()._onchange_model_id()
+ # Clear mass_edit_line_ids
+ self.update({"mass_edit_line_ids": [(5, 0, 0)]})
+ return res
+
+ @api.constrains("model_id")
+ def _check_field_model(self):
+ """Check that all fields belong to the model"""
+ self.mapped("mass_edit_line_ids")._check_field_model()
+
+ @api.depends("mass_edit_line_ids")
+ def _compute_mass_edit_apply_domain_in_lines(self):
+ for record in self:
+ record.mass_edit_apply_domain_in_lines = any(
+ record.mass_edit_line_ids.mapped("apply_domain")
+ )
+
+ def _run_action_mass_edit_multi(self, eval_context=None):
+ """Show report label wizard"""
+ context = dict(self.env.context)
+ context.update({"server_action_id": self.id})
+ view_id = self.env.ref("server_action_mass_edit.view_mass_editing_wizard_form")
+ view_id.mass_server_action_id = self.id
+ if view_id:
+ view_temp = view_id.copy(
+ {
+ "name": "Temporary Mass Editing Wizard",
+ "type": "form",
+ "model": "mass.editing.wizard",
+ }
+ )
+
+ return {
+ "name": self.name,
+ "type": "ir.actions.act_window",
+ "res_model": "mass.editing.wizard",
+ "context": str(context),
+ "view_mode": "form",
+ "views": [[view_temp.id, "form"]],
+ "target": "new",
+ }
diff --git a/odex30_base/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py b/odex30_base/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py
new file mode 100644
index 0000000..ac1ffd4
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/models/ir_actions_server_mass_edit_line.py
@@ -0,0 +1,68 @@
+# Copyright (C) 2019 - Today: GRAP (http://www.grap.coop)
+# Copyright (C) 2020 Iván Todorovich (https://twitter.com/ivantodorovich)
+# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from odoo import _, api, fields, models
+from odoo.exceptions import ValidationError
+
+MAGIC_FIELDS = models.MAGIC_COLUMNS
+
+
+class IrActionsServerMassEditLine(models.Model):
+ _name = "ir.actions.server.mass.edit.line"
+ _description = "Server Actions Mass Edit Lines"
+ _order = "sequence, field_id"
+
+ sequence = fields.Integer()
+ server_action_id = fields.Many2one(
+ "ir.actions.server",
+ string="Server Action",
+ ondelete="cascade",
+ required=True,
+ )
+ model_id = fields.Many2one(
+ "ir.model",
+ related="server_action_id.model_id",
+ )
+ field_id = fields.Many2one(
+ "ir.model.fields",
+ string="Field",
+ domain=f"""
+ [
+ ("name", "not in", {str(MAGIC_FIELDS)}),
+ ("ttype", "not in", ["reference", "function"]),
+ ("model_id", "=", model_id),
+ ("readonly", "!=", True),
+ ]
+ """,
+ ondelete="cascade",
+ required=True,
+ )
+ widget_option = fields.Char(
+ help="Add widget text that will be used to display the field in the wizard.\n"
+ "Example: 'many2many_tags', 'selection', 'image'",
+ )
+ apply_domain = fields.Boolean(
+ default=False,
+ help="Apply default domain related to field",
+ )
+
+ @api.constrains("server_action_id", "field_id")
+ def _check_field_model(self):
+ """Check that all fields belong to the action model"""
+ if any(rec.field_id.model_id != rec.server_action_id.model_id for rec in self):
+ raise ValidationError(
+ _("Mass edit fields should belong to the server action model.")
+ )
+
+ @api.onchange("field_id")
+ def _onchange_field_id(self):
+ for rec in self:
+ widget_option = False
+ if rec.field_id.ttype == "many2many":
+ widget_option = "many2many_tags"
+ elif rec.field_id.ttype == "binary":
+ if "image" in rec.field_id.name or "logo" in rec.field_id.name:
+ widget_option = "image"
+ rec.widget_option = widget_option
diff --git a/odex30_base/server_action_mass_edit/models/ir_ui_view.py b/odex30_base/server_action_mass_edit/models/ir_ui_view.py
new file mode 100644
index 0000000..abc7a8b
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/models/ir_ui_view.py
@@ -0,0 +1,7 @@
+from odoo import fields, models
+
+
+class View(models.Model):
+ _inherit = "ir.ui.view"
+
+ mass_server_action_id = fields.Many2one("ir.actions.server")
diff --git a/odex30_base/server_action_mass_edit/pyproject.toml b/odex30_base/server_action_mass_edit/pyproject.toml
new file mode 100644
index 0000000..4231d0c
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["whool"]
+build-backend = "whool.buildapi"
diff --git a/odex30_base/server_action_mass_edit/readme/CONFIGURE.md b/odex30_base/server_action_mass_edit/readme/CONFIGURE.md
new file mode 100644
index 0000000..9838e88
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/readme/CONFIGURE.md
@@ -0,0 +1,18 @@
+- In developer mode, go to *Settings / Technical / Actions / Server Actions*
+- Create a new server action
+- Name the server action (ie. *Product Template Category Mass Editing*)
+- Choose Type *Mass Edit Records*
+- Select the model
+- Add the security groups allowed to use this action
+- Add the fields you want to be mass edited
+
+
+
+- *Add Action*: Click on *Create Contextual Action* to add mass editing
+ in *Action* menu.
+
+**Options**
+
+- You can setup the widget option to be displayed (ie many2many_tags, selection_image...)
+- You can tick Apply Domain allowing you to limit the mass editing action with a domain.
+- You can add an extra message that will be displayed in the wizard.
diff --git a/odex30_base/server_action_mass_edit/readme/CONTRIBUTORS.md b/odex30_base/server_action_mass_edit/readme/CONTRIBUTORS.md
new file mode 100644
index 0000000..c81fb63
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/readme/CONTRIBUTORS.md
@@ -0,0 +1,13 @@
+- Oihane Crucelaegui \<\>
+- Serpent Consulting Services Pvt. Ltd. \<\>
+- Jay Vora \<\>
+- Juan Negrete \<\>
+- Raul Martin \<\>
+- Aitor Bouzas \<\>
+- Sylvain LE GAL ()
+- Iván Todorovich \<\>
+- [Tecnativa](https://www.tecnativa.com)
+ - Jairo Llopis
+ - Víctor Martínez
+- Tatiana Deribina \<\>
+- Tris Doan \<\>
diff --git a/odex30_base/server_action_mass_edit/readme/CREDITS.md b/odex30_base/server_action_mass_edit/readme/CREDITS.md
new file mode 100644
index 0000000..83b3ec9
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/readme/CREDITS.md
@@ -0,0 +1 @@
+The migration of this module from 17.0 to 18.0 was financially supported by Camptocamp.
diff --git a/odex30_base/server_action_mass_edit/readme/DESCRIPTION.md b/odex30_base/server_action_mass_edit/readme/DESCRIPTION.md
new file mode 100644
index 0000000..942dab5
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/readme/DESCRIPTION.md
@@ -0,0 +1,16 @@
+This module allows to edit several records at the same time in any Odoo model
+
+**Difference in comparison to the Odoo Feature**
+
+Since Odoo V13, a limited "mass Editing feature" is available in Odoo
+CE.
+
+This module provides the following extra features that are not in the
+Core for the time being:
+
+- Possibility to mass edit many fields in a single action
+- Possibility to add a group to limit the usage of this function to
+ given people
+- Possibility to filter the items the user can mass update
+- Possibility to mass edit any fields with any widget. (For exemple
+ color fields, image fields, etc...)
diff --git a/odex30_base/server_action_mass_edit/readme/ROADMAP.md b/odex30_base/server_action_mass_edit/readme/ROADMAP.md
new file mode 100644
index 0000000..3f913a2
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/readme/ROADMAP.md
@@ -0,0 +1 @@
+- Auto add fields that are used in related domains if apply_domain=True
diff --git a/odex30_base/server_action_mass_edit/readme/USAGE.md b/odex30_base/server_action_mass_edit/readme/USAGE.md
new file mode 100644
index 0000000..cbf4e2b
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/readme/USAGE.md
@@ -0,0 +1,13 @@
+- *Go for Mass Editing*: select the records which you want to modify and
+ click on *Action* to open mass editing popup.
+
+
+
+- Select *Set / Remove* action and write down the value to set or remove
+ the value for the given field.
+
+
+
+- This way you can set / remove the values of the fields.
+
+
diff --git a/odex30_base/server_action_mass_edit/security/ir.model.access.csv b/odex30_base/server_action_mass_edit/security/ir.model.access.csv
new file mode 100644
index 0000000..07f0989
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/security/ir.model.access.csv
@@ -0,0 +1,3 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_mass_editing_line_system,ir.actions.server.mass.edit.line manager,model_ir_actions_server_mass_edit_line,base.group_system,1,1,1,1
+access_mass_editing_wizard_user,mass.editing.wizard user,model_mass_editing_wizard,base.group_user,1,1,1,1
diff --git a/odex30_base/server_action_mass_edit/static/description/icon.png b/odex30_base/server_action_mass_edit/static/description/icon.png
new file mode 100644
index 0000000..3a0328b
Binary files /dev/null and b/odex30_base/server_action_mass_edit/static/description/icon.png differ
diff --git a/odex30_base/server_action_mass_edit/static/description/index.html b/odex30_base/server_action_mass_edit/static/description/index.html
new file mode 100644
index 0000000..0f2bfaa
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/static/description/index.html
@@ -0,0 +1,518 @@
+
+
+
+
+
+README.rst
+
+
+
+
+
+
+
+
+
+
+
Mass Editing
+
+
+
This module allows to edit several records at the same time in any Odoo
+model
+
Difference in comparison to the Odoo Feature
+
Since Odoo V13, a limited “mass Editing feature” is available in Odoo
+CE.
+
This module provides the following extra features that are not in the
+Core for the time being:
+
+Possibility to mass edit many fields in a single action
+Possibility to add a group to limit the usage of this function to
+given people
+Possibility to filter the items the user can mass update
+Possibility to mass edit any fields with any widget. (For exemple
+color fields, image fields, etc…)
+
+
Table of contents
+
+
+
+
+In developer mode, go to Settings / Technical / Actions / Server
+Actions
+Create a new server action
+Name the server action (ie. Product Template Category Mass Editing )
+Choose Type Mass Edit Records
+Select the model
+Add the security groups allowed to use this action
+Add the fields you want to be mass edited
+
+
+
+Add Action : Click on Create Contextual Action to add mass editing
+in Action menu.
+
+
Options
+
+You can setup the widget option to be displayed (ie many2many_tags,
+selection_image…)
+You can tick Apply Domain allowing you to limit the mass editing
+action with a domain.
+You can add an extra message that will be displayed in the wizard.
+
+
+
+
+
+Go for Mass Editing : select the records which you want to modify and
+click on Action to open mass editing popup.
+
+
+
+Select Set / Remove action and write down the value to set or remove
+the value for the given field.
+
+
+
+This way you can set / remove the values of the fields.
+
+
+
+
+
+
+Auto add fields that are used in related domains if apply_domain=True
+
+
+
+
+
Bugs are tracked on GitHub Issues .
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us to smash it by providing a detailed and welcomed
+feedback .
+
Do not contact contributors directly about support or help with technical issues.
+
+
+
+
+
+
+Serpent Consulting Services Pvt. Ltd.
+Tecnativa
+GRAP
+Iván Todorovich
+
+
+
+
+
+
The migration of this module from 17.0 to 18.0 was financially supported
+by Camptocamp.
+
+
+
+
This module is maintained by the OCA.
+
+
+
+
OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
This module is part of the OCA/server-ux project on GitHub.
+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute .
+
+
+
+
+
+
diff --git a/odex30_base/server_action_mass_edit/static/description/mass_editing-item_tree-result.png b/odex30_base/server_action_mass_edit/static/description/mass_editing-item_tree-result.png
new file mode 100644
index 0000000..c294b4b
Binary files /dev/null and b/odex30_base/server_action_mass_edit/static/description/mass_editing-item_tree-result.png differ
diff --git a/odex30_base/server_action_mass_edit/static/description/mass_editing-item_tree.png b/odex30_base/server_action_mass_edit/static/description/mass_editing-item_tree.png
new file mode 100644
index 0000000..70189a2
Binary files /dev/null and b/odex30_base/server_action_mass_edit/static/description/mass_editing-item_tree.png differ
diff --git a/odex30_base/server_action_mass_edit/static/description/mass_editing-wizard_form.png b/odex30_base/server_action_mass_edit/static/description/mass_editing-wizard_form.png
new file mode 100644
index 0000000..01e85e1
Binary files /dev/null and b/odex30_base/server_action_mass_edit/static/description/mass_editing-wizard_form.png differ
diff --git a/odex30_base/server_action_mass_edit/static/description/mass_editing_form.png b/odex30_base/server_action_mass_edit/static/description/mass_editing_form.png
new file mode 100644
index 0000000..0765846
Binary files /dev/null and b/odex30_base/server_action_mass_edit/static/description/mass_editing_form.png differ
diff --git a/odex30_base/server_action_mass_edit/static/src/js/record.esm.js b/odex30_base/server_action_mass_edit/static/src/js/record.esm.js
new file mode 100644
index 0000000..5242494
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/static/src/js/record.esm.js
@@ -0,0 +1,28 @@
+import {Record} from "@web/model/relational_model/record";
+import {patch} from "@web/core/utils/patch";
+
+patch(Record.prototype, {
+ _createStaticListDatapoint(data, fieldName) {
+ const {related, limit, defaultOrderBy} = this.activeFields[fieldName];
+ const config = {
+ resModel: this.fields[fieldName].relation,
+ activeFields: (related && related.activeFields) || {},
+ fields: (related && related.fields) || {},
+ relationField: this.fields[fieldName].relation_field || false,
+ offset: 0,
+ // To prevent the TypeError: data.map is not a function while set/remove/add
+ // value in wizard
+ resIds: Array.isArray(data) ? data.map((r) => r.id || null) : [],
+ orderBy: defaultOrderBy || [],
+ limit: limit || Number.MAX_SAFE_INTEGER,
+ currentCompanyId: this.currentCompanyId,
+ context: {},
+ };
+ const options = {
+ onUpdate: ({withoutOnchange} = {}) =>
+ this._update({[fieldName]: []}, {withoutOnchange}),
+ parent: this,
+ };
+ return new this.model.constructor.StaticList(this.model, config, data, options);
+ },
+});
diff --git a/odex30_base/server_action_mass_edit/static/src/js/static_list.esm.js b/odex30_base/server_action_mass_edit/static/src/js/static_list.esm.js
new file mode 100644
index 0000000..fdbb9a7
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/static/src/js/static_list.esm.js
@@ -0,0 +1,32 @@
+import {StaticList} from "@web/model/relational_model/static_list";
+import {markRaw} from "@odoo/owl";
+import {patch} from "@web/core/utils/patch";
+
+patch(StaticList.prototype, {
+ setup(config, data, options = {}) {
+ this._parent = options.parent;
+ this._onUpdate = options.onUpdate;
+
+ this._cache = markRaw({});
+ this._commands = [];
+ this._initialCommands = [];
+ this._savePoint = undefined;
+ this._unknownRecordCommands = {};
+ this._currentIds = [...this.resIds];
+ this._initialCurrentIds = [...this.currentIds];
+ this._needsReordering = false;
+ this._tmpIncreaseLimit = 0;
+ this._extendedRecords = new Set();
+ // To prevent the TypeError: data.slice is not a function" while set/remove/add
+ // value in wizard
+ this.records = Array.isArray(data)
+ ? data
+ .slice(this.offset, this.limit)
+ .map((r) => this._createRecordDatapoint(r))
+ : [];
+ this.count = this.resIds.length;
+ this.handleField = Object.keys(this.activeFields).find(
+ (fieldName) => this.activeFields[fieldName].isHandle
+ );
+ },
+});
diff --git a/odex30_base/server_action_mass_edit/tests/__init__.py b/odex30_base/server_action_mass_edit/tests/__init__.py
new file mode 100644
index 0000000..86a48b9
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/tests/__init__.py
@@ -0,0 +1,3 @@
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from . import test_mass_editing
diff --git a/odex30_base/server_action_mass_edit/tests/test_mass_editing.py b/odex30_base/server_action_mass_edit/tests/test_mass_editing.py
new file mode 100644
index 0000000..77ddc70
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/tests/test_mass_editing.py
@@ -0,0 +1,406 @@
+# Copyright 2016 Serpent Consulting Services Pvt. Ltd. (support@serpentcs.com)
+# Copyright 2018 Aitor Bouzas
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from ast import literal_eval
+
+from odoo.exceptions import ValidationError
+from odoo.tests import Form, common, new_test_user
+
+from odoo.addons.base.models.ir_actions import IrActionsServer
+
+
+def fake_onchange_model_id(self):
+ result = {
+ "warning": {
+ "title": "This is a fake onchange",
+ },
+ }
+ return result
+
+
+@common.tagged("-at_install", "post_install")
+class TestMassEditing(common.TransactionCase):
+ def setUp(self):
+ super().setUp()
+
+ self.MassEditingWizard = self.env["mass.editing.wizard"]
+ self.ResPartnerTitle = self.env["res.partner.title"]
+ self.ResLang = self.env["res.lang"]
+ self.IrActionsActWindow = self.env["ir.actions.act_window"]
+
+ self.mass_editing_user = self.env.ref(
+ "server_action_mass_edit.mass_editing_user"
+ )
+ self.mass_editing_partner_title = self.env.ref(
+ "server_action_mass_edit.mass_editing_partner_title"
+ )
+ user_admin = self.env.ref("base.user_admin")
+ user_demo = self.env.ref("base.user_demo")
+ self.users = self.env["res.users"].search(
+ [("id", "not in", (user_admin.id, user_demo.id))]
+ )
+ self.user = new_test_user(
+ self.env,
+ login="test-mass_editing-user",
+ groups="base.group_system",
+ )
+ self.partner_title = self._create_partner_title()
+
+ def _create_partner_title(self):
+ """Create a Partner Title."""
+ # Loads German to work with translations
+ self.ResLang._activate_lang("de_DE")
+ # Creating the title in English
+ partner_title = self.ResPartnerTitle.create(
+ {"name": "Ambassador", "shortcut": "Amb."}
+ )
+ # Adding translated terms
+ partner_title.with_context(lang="de_DE").write(
+ {"name": "Botschafter", "shortcut": "Bots."}
+ )
+ return partner_title
+
+ def _create_wizard_and_apply_values(self, server_action, items, vals):
+ action = server_action.with_context(
+ active_model=items._name,
+ active_ids=items.ids,
+ ).run()
+ wizard = (
+ self.env[action["res_model"]]
+ .with_context(
+ **literal_eval(action["context"]),
+ )
+ .create(vals)
+ )
+ wizard.button_apply()
+ return wizard
+
+ def test_wzd_default_get(self):
+ """Test whether `operation_description_danger` is correct"""
+ wzd_obj = self.MassEditingWizard.with_context(
+ server_action_id=self.mass_editing_user.id,
+ active_ids=[1],
+ original_active_ids=[1],
+ )
+ result = wzd_obj.default_get(
+ fields=[],
+ )
+ self.assertEqual(
+ result["operation_description_info"],
+ "The treatment will be processed on the 1 selected record(s).",
+ )
+ self.assertFalse(
+ result["operation_description_warning"],
+ )
+ self.assertFalse(
+ result["operation_description_danger"],
+ )
+
+ result = wzd_obj.with_context(active_ids=[]).default_get(
+ fields=[],
+ )
+ self.assertFalse(
+ result["operation_description_info"],
+ )
+ self.assertEqual(
+ result["operation_description_warning"],
+ (
+ "You have selected 1 record(s) that can not be processed.\n"
+ "Only 0 record(s) will be processed."
+ ),
+ )
+ self.assertFalse(
+ result["operation_description_danger"],
+ )
+
+ result = wzd_obj.with_context(original_active_ids=[]).default_get(
+ fields=[],
+ )
+ self.assertFalse(
+ result["operation_description_info"],
+ )
+ self.assertFalse(
+ result["operation_description_warning"],
+ )
+ self.assertEqual(
+ result["operation_description_danger"],
+ "None of the 1 record(s) you have selected can be processed.",
+ )
+
+ def test_wiz_fields_view_get(self):
+ """Test whether fields_view_get method returns arch.
+ with dynamic fields.
+ """
+ view_id = self.env.ref("server_action_mass_edit.view_mass_editing_wizard_form")
+ view_id.mass_server_action_id = False
+ result = self.MassEditingWizard.with_context(
+ active_ids=[],
+ ).get_view(view_id=view_id.id)
+ arch = result.get("arch", "")
+ self.assertTrue(
+ "selection__email" not in arch,
+ "Fields view get must return architecture w/o fields" "created dynamicaly",
+ )
+ view_id.mass_server_action_id = self.mass_editing_user
+ result = self.MassEditingWizard.with_context(
+ server_action_id=self.mass_editing_user.id,
+ active_ids=[],
+ ).get_view(view_id=view_id.id)
+ arch = result.get("arch", "")
+ self.assertTrue(
+ "selection__email" in arch,
+ "Fields view get must return architecture with fields" "created dynamicaly",
+ )
+
+ # test the code path where we extract an embedded tree for o2m fields
+ self.env["ir.ui.view"].search(
+ [
+ ("model", "in", ("res.partner.bank", "res.partner", "res.users")),
+ ("id", "!=", self.env.ref("base.res_partner_view_form_private").id),
+ ]
+ ).unlink()
+ self.env.ref("base.res_partner_view_form_private").model = "res.users"
+ result = self.MassEditingWizard.with_context(
+ server_action_id=self.mass_editing_user.id,
+ active_ids=[],
+ ).get_view(view_id=view_id.id)
+ arch = result.get("arch", "")
+ self.assertIn(
+ "
+
+
+ ir.actions.server
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WARNING : Take into account that adding a field with a domain, and not including the fields of such domain in this operation definition, will lead to an error when trying to perform it. Make sure you include them.
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/server_action_mass_edit/wizard/__init__.py b/odex30_base/server_action_mass_edit/wizard/__init__.py
new file mode 100644
index 0000000..6e9937d
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/wizard/__init__.py
@@ -0,0 +1,3 @@
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from . import mass_editing_wizard
diff --git a/odex30_base/server_action_mass_edit/wizard/mass_editing_wizard.py b/odex30_base/server_action_mass_edit/wizard/mass_editing_wizard.py
new file mode 100644
index 0000000..d87e915
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/wizard/mass_editing_wizard.py
@@ -0,0 +1,292 @@
+# Copyright (C) 2016 Serpent Consulting Services Pvt. Ltd. (support@serpentcs.com)
+# Copyright (C) 2020 Iván Todorovich (https://twitter.com/ivantodorovich)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+import json
+
+from lxml import etree
+
+from odoo import _, api, fields, models
+
+
+class MassEditingWizard(models.TransientModel):
+ _name = "mass.editing.wizard"
+ _description = "Wizard for mass edition"
+
+ selected_item_qty = fields.Integer(readonly=True)
+ remaining_item_qty = fields.Integer(readonly=True)
+ operation_description_info = fields.Text(readonly=True)
+ operation_description_warning = fields.Text(readonly=True)
+ operation_description_danger = fields.Text(readonly=True)
+ message = fields.Text(readonly=True)
+
+ @api.model
+ def default_get(self, fields):
+ res = super().default_get(fields)
+ server_action_id = self.env.context.get("server_action_id")
+ server_action = self.env["ir.actions.server"].sudo().browse(server_action_id)
+ active_ids = self.env.context.get("active_ids")
+
+ if not server_action:
+ return res
+
+ original_active_ids = self.env.context.get("original_active_ids", active_ids)
+ operation_description_info = False
+ operation_description_warning = False
+ operation_description_danger = False
+ if len(active_ids) == len(original_active_ids):
+ operation_description_info = _(
+ "The treatment will be processed on the %(amount)d selected record(s)."
+ ) % {
+ "amount": len(active_ids),
+ }
+ elif len(original_active_ids):
+ operation_description_warning = _(
+ "You have selected %(origin_amount)d "
+ "record(s) that can not be processed.\n"
+ "Only %(amount)d record(s) will be processed."
+ ) % {
+ "origin_amount": len(original_active_ids) - len(active_ids),
+ "amount": len(active_ids),
+ }
+ else:
+ operation_description_danger = _(
+ "None of the %(amount)d record(s) you have selected can be processed."
+ ) % {
+ "amount": len(active_ids),
+ }
+ # Set values
+ res.update(
+ {
+ "selected_item_qty": len(active_ids),
+ "remaining_item_qty": len(original_active_ids),
+ "operation_description_info": operation_description_info,
+ "operation_description_warning": operation_description_warning,
+ "operation_description_danger": operation_description_danger,
+ "message": server_action.mass_edit_message,
+ }
+ )
+
+ return res
+
+ @api.model
+ def _prepare_fields(self, line, field, field_info):
+ result = {}
+ # Add "selection field (set / add / remove / remove_m2m)
+ if field.ttype == "many2many":
+ selection = [
+ ("ignore", _("Don't touch")),
+ ("set_m2m", _("Set")),
+ ("remove_m2m", _("Remove")),
+ ("add", _("Add")),
+ ]
+ elif field.ttype == "one2many":
+ selection = [
+ ("ignore", _("Don't touch")),
+ ("set_o2m", _("Set")),
+ ("add_o2m", _("Add")),
+ ]
+ else:
+ selection = [
+ ("ignore", _("Don't touch")),
+ ("set", _("Set")),
+ ("remove", _("Remove")),
+ ]
+ result["selection__" + field.name] = {
+ "type": "selection",
+ "string": field_info["string"],
+ "selection": selection,
+ }
+ # Add field info
+ result[field.name] = field_info
+ return result
+
+ @api.model
+ def _insert_field_in_arch(self, line, field, main_xml_group):
+ etree.SubElement(
+ main_xml_group,
+ "label",
+ {
+ "for": "selection__" + field.name,
+ },
+ )
+ div = etree.SubElement(
+ main_xml_group,
+ "div",
+ {
+ "class": "d-flex",
+ },
+ )
+ etree.SubElement(
+ div,
+ "field",
+ {
+ "name": "selection__" + field.name,
+ "modifiers": '{"required": true}',
+ "class": "w-25",
+ },
+ )
+ field_vals = self._get_field_options(field)
+ if line.widget_option:
+ field_vals["widget"] = line.widget_option
+ field_element = etree.SubElement(div, "field", field_vals)
+ if field.ttype == "one2many":
+ comodel = self.env[field.relation]
+ dummy, form_view = comodel._get_view(view_type="form")
+ dummy, list_view = comodel._get_view(view_type="list")
+ field_context = {}
+ if form_view:
+ field_context["form_view_ref"] = form_view.xml_id
+ if list_view:
+ field_context["list_view_ref"] = list_view.xml_id
+ if field_context:
+ field_element.attrib["context"] = json.dumps(field_context)
+ else:
+ model_arch, dummy = self.env[field.model]._get_view(view_type="form")
+ embedded_list = None
+ for node in model_arch.xpath(f"//field[@name='{field.name}'][./list]"):
+ embedded_list = node.xpath("./list")[0]
+ break
+ if embedded_list is not None:
+ for node in embedded_list.xpath("./*"):
+ modifiers = node.get("modifiers")
+ if modifiers:
+ node.attrib["modifiers"] = modifiers
+ field_element.insert(0, embedded_list)
+
+ return field_element
+
+ def _get_field_options(self, field):
+ return {
+ "name": field.name,
+ "invisible": f'selection__{field.name} in ["ignore", "remove", False]',
+ "class": "w-75",
+ }
+
+ @api.model
+ def get_views(self, views, options=None):
+ for view, _type in views:
+ if view:
+ view = self.env["ir.ui.view"].sudo().browse(view)
+ server_action = view.mass_server_action_id
+ self = self.with_context(server_action_id=server_action.id)
+ return super().get_views(views, options)
+
+ @api.model
+ def get_view(self, view_id=None, view_type="form", **options):
+ view = self.env["ir.ui.view"].sudo().browse(view_id)
+ server_action = view.mass_server_action_id
+ self = self.with_context(server_action_id=server_action.id)
+ if not server_action:
+ return super().get_view(view_id, view_type, **options)
+ result = super().get_view(view_id, view_type, **options)
+ arch = etree.fromstring(result["arch"])
+ main_xml_group = arch.find('.//group[@name="group_field_list"]')
+ for line in server_action.mapped("mass_edit_line_ids"):
+ self._insert_field_in_arch(line, line.field_id, main_xml_group)
+ if line.field_id.ttype == "one2many":
+ comodel = self.env[line.field_id.relation]
+ result["models"] = dict(
+ result["models"], **{comodel._name: tuple(comodel.fields_get())}
+ )
+ result["arch"] = etree.tostring(arch, encoding="unicode")
+ return result
+
+ @api.model
+ def fields_get(self, allfields=None, attributes=None):
+ server_action_id = self.env.context.get("server_action_id")
+ server_action = self.env["ir.actions.server"].sudo().browse(server_action_id)
+ if not server_action:
+ return super().fields_get(allfields, attributes)
+ res = super().fields_get(allfields, attributes)
+ fields_info = self.env[server_action.model_id.model].fields_get()
+ for line in server_action.mapped("mass_edit_line_ids"):
+ field = line.field_id
+ field_info = self._clean_check_company_field_domain(
+ self.env[server_action.model_id.model], field, fields_info[field.name]
+ )
+ field_info["relation_field"] = False
+ if not line.apply_domain and "domain" in field_info:
+ field_info["domain"] = "[]"
+ res.update(self._prepare_fields(line, field, field_info))
+ return res
+
+ @api.model
+ def _clean_check_company_field_domain(self, TargetModel, field, field_info):
+ """
+ This method remove the field view domain added by Odoo for relational
+ fields with check_company attribute to avoid error for non exists
+ company_id or company_ids fields in wizard view.
+ See _description_domain method in _Relational Class
+ """
+ field_class = TargetModel._fields[field.name]
+ if not field_class.relational or not field_class.check_company or field.domain:
+ return field_info
+ field_info["domain"] = "[]"
+ return field_info
+
+ @api.model_create_multi
+ def create(self, vals_list):
+ server_action_id = self.env.context.get("server_action_id")
+ server_action = self.env["ir.actions.server"].sudo().browse(server_action_id)
+ if server_action:
+ for vals in vals_list:
+ values = {}
+ for key, val in vals.items():
+ if key.startswith("selection_"):
+ split_key = key.split("__", 1)[1]
+ if val == "set" or val == "add_o2m":
+ values.update({split_key: vals.get(split_key, False)})
+
+ elif val == "set_o2m" or val == "set_m2m":
+ values.update(
+ {split_key: [(6, 0, [])] + vals.get(split_key, [])}
+ )
+
+ elif val == "remove":
+ values.update({split_key: False})
+
+ elif val == "remove_m2m":
+ m2m_list = []
+ if vals.get(split_key):
+ for m2m_id in vals.get(split_key, False):
+ m2m_list.append((3, m2m_id[1]))
+ if m2m_list:
+ values.update({split_key: m2m_list})
+ else:
+ values.update({split_key: [(5, 0, [])]})
+
+ elif val == "add":
+ values.update({split_key: vals.get(split_key, False)})
+
+ if values:
+ self._exec_write(server_action, values)
+ return super().create([{}])
+
+ def _exec_write(self, server_action, vals):
+ active_ids = self.env.context.get("active_ids", [])
+ model = self.env[server_action.model_id.model].with_context(mass_edit=True)
+ records = model.browse(active_ids)
+ records.write(vals)
+
+ def _prepare_create_values(self, vals_list):
+ return vals_list
+
+ def read(self, fields=None, load="_classic_read"):
+ """Without this call, dynamic fields build by fields_view_get()
+ generate a log warning, i.e.:
+ odoo.models:mass.editing.wizard.read() with unknown field 'myfield'
+ odoo.models:mass.editing.wizard.read()
+ with unknown field 'selection__myfield'
+ """
+ real_fields = fields
+ if fields:
+ # We remove fields which are not in _fields
+ real_fields = [x for x in fields if x in self._fields]
+ result = super().read(real_fields, load=load)
+ # adding fields to result
+ [result[0].update({x: False}) for x in fields if x not in real_fields]
+ return result
+
+ def button_apply(self):
+ self.ensure_one()
diff --git a/odex30_base/server_action_mass_edit/wizard/mass_editing_wizard.xml b/odex30_base/server_action_mass_edit/wizard/mass_editing_wizard.xml
new file mode 100644
index 0000000..291e869
--- /dev/null
+++ b/odex30_base/server_action_mass_edit/wizard/mass_editing_wizard.xml
@@ -0,0 +1,51 @@
+
+
+
+
+ mass.editing.wizard
+
+
+
+
+
diff --git a/odex30_base/web_digital_sign/LICENSE/LICENSE b/odex30_base/web_digital_sign/LICENSE/LICENSE
new file mode 100644
index 0000000..d65e109
--- /dev/null
+++ b/odex30_base/web_digital_sign/LICENSE/LICENSE
@@ -0,0 +1,16 @@
+ OpenERP, Open Source Management Solution
+ Copyright (C) 2024-TODAY Serpent Consulting Services Pvt. Ltd.
+ ().
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
diff --git a/odex30_base/web_digital_sign/README.rst b/odex30_base/web_digital_sign/README.rst
new file mode 100644
index 0000000..18f406c
--- /dev/null
+++ b/odex30_base/web_digital_sign/README.rst
@@ -0,0 +1,36 @@
+=================
+Web Digital Sign
+=================
+
+* This module provides the functionality to store digital signature for a record.
+
+* This module is helpfull to make your business process a little bit more faster & makes it more user friendly by providing you digital signature functionality on your documents
+
+* It is touch screen enable so user can add signature with touch devices.
+
+* Digital signature can be very usefull for documents such as sale orders, purchase orders, inovoices, payslips, procurement receipts, etc.
+
+
+Usage
+=====
+
+* To use this module, you need to add widget="signature" to your binary field in your view.
+
+* User can store their digital signature in the binary field, as you can see image.
+
+* As shown in the image, user can add a signature using mouse, pen, or finger.
+
+* User can clear signature using clear button and it will re-initialize the signature.
+
+Bug Tracker
+===========
+
+Credits
+=======
+
+Contributors
+------------
+
+
+* Serpent Consulting Services Pvt. Ltd.
+
diff --git a/odex30_base/web_digital_sign/__init__.py b/odex30_base/web_digital_sign/__init__.py
new file mode 100644
index 0000000..a14d237
--- /dev/null
+++ b/odex30_base/web_digital_sign/__init__.py
@@ -0,0 +1,3 @@
+# See LICENSE file for full copyright and licensing details.
+
+from . import models
diff --git a/odex30_base/web_digital_sign/__manifest__.py b/odex30_base/web_digital_sign/__manifest__.py
new file mode 100644
index 0000000..3153865
--- /dev/null
+++ b/odex30_base/web_digital_sign/__manifest__.py
@@ -0,0 +1,30 @@
+# See LICENSE file for full copyright and licensing details.
+
+{
+ 'name': 'Web Digital Signature',
+ 'version': '17.0.1.0.0',
+ "category": "Tools",
+ "summary": """
+ Touch screen enable so user can add signature with touch devices.
+ Digital signature can be very usefull for documents.
+ """,
+ "description": """
+ This module provides the functionality to store digital signature
+ Example can be seen into the User's form view where we have
+ added a test field under signature.
+ """,
+ "author": "Serpent Consulting Services Pvt. Ltd.",
+ "website": "http://www.serpentcs.com/",
+ 'license': 'LGPL-3',
+ 'depends': ['web'],
+ "images": ["static/description/Digital_Signature.jpg"],
+ "data": ["views/users_view.xml"],
+ "assets": {
+ "web.assets_backend": [
+ "/web_digital_sign/static/src/js/digital_sign.js",
+ "/web_digital_sign/static/src/xml/digital_sign.xml",
+ ],
+ },
+ 'installable': True,
+ 'application': True,
+}
diff --git a/odex30_base/web_digital_sign/models/__init__.py b/odex30_base/web_digital_sign/models/__init__.py
new file mode 100644
index 0000000..fc88f73
--- /dev/null
+++ b/odex30_base/web_digital_sign/models/__init__.py
@@ -0,0 +1,3 @@
+# See LICENSE file for full copyright and licensing details.
+
+from . import users
diff --git a/odex30_base/web_digital_sign/models/users.py b/odex30_base/web_digital_sign/models/users.py
new file mode 100644
index 0000000..abd6281
--- /dev/null
+++ b/odex30_base/web_digital_sign/models/users.py
@@ -0,0 +1,9 @@
+# See LICENSE file for full copyright and licensing details.
+
+from odoo import models, fields
+
+
+class Users(models.Model):
+ _inherit = "res.users"
+
+ digital_signature = fields.Binary(string="Signature")
diff --git a/odex30_base/web_digital_sign/static/description/Digital_Signature.jpg b/odex30_base/web_digital_sign/static/description/Digital_Signature.jpg
new file mode 100644
index 0000000..757166d
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/Digital_Signature.jpg differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/icons/check.png b/odex30_base/web_digital_sign/static/description/assets/icons/check.png
new file mode 100755
index 0000000..c8e85f5
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/icons/check.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/icons/chevron.png b/odex30_base/web_digital_sign/static/description/assets/icons/chevron.png
new file mode 100755
index 0000000..2089293
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/icons/chevron.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/icons/cogs.png b/odex30_base/web_digital_sign/static/description/assets/icons/cogs.png
new file mode 100755
index 0000000..95d0bad
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/icons/cogs.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/icons/consultation.png b/odex30_base/web_digital_sign/static/description/assets/icons/consultation.png
new file mode 100755
index 0000000..8319d4b
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/icons/consultation.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/icons/ecom-black.png b/odex30_base/web_digital_sign/static/description/assets/icons/ecom-black.png
new file mode 100755
index 0000000..a9385ff
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/icons/ecom-black.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/icons/education-black.png b/odex30_base/web_digital_sign/static/description/assets/icons/education-black.png
new file mode 100755
index 0000000..3eb09b2
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/icons/education-black.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/icons/hotel-black.png b/odex30_base/web_digital_sign/static/description/assets/icons/hotel-black.png
new file mode 100755
index 0000000..130f613
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/icons/hotel-black.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/icons/license.png b/odex30_base/web_digital_sign/static/description/assets/icons/license.png
new file mode 100755
index 0000000..a586979
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/icons/license.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/icons/lifebuoy.png b/odex30_base/web_digital_sign/static/description/assets/icons/lifebuoy.png
new file mode 100755
index 0000000..658d56c
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/icons/lifebuoy.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/icons/manufacturing-black.png b/odex30_base/web_digital_sign/static/description/assets/icons/manufacturing-black.png
new file mode 100755
index 0000000..697eb0e
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/icons/manufacturing-black.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/icons/pos-black.png b/odex30_base/web_digital_sign/static/description/assets/icons/pos-black.png
new file mode 100755
index 0000000..97c0f90
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/icons/pos-black.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/icons/puzzle.png b/odex30_base/web_digital_sign/static/description/assets/icons/puzzle.png
new file mode 100755
index 0000000..65cf854
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/icons/puzzle.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/icons/restaurant-black.png b/odex30_base/web_digital_sign/static/description/assets/icons/restaurant-black.png
new file mode 100755
index 0000000..4a35eb9
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/icons/restaurant-black.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/icons/service-black.png b/odex30_base/web_digital_sign/static/description/assets/icons/service-black.png
new file mode 100755
index 0000000..301ab51
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/icons/service-black.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/icons/trading-black.png b/odex30_base/web_digital_sign/static/description/assets/icons/trading-black.png
new file mode 100755
index 0000000..9398ba2
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/icons/trading-black.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/icons/training.png b/odex30_base/web_digital_sign/static/description/assets/icons/training.png
new file mode 100755
index 0000000..884ca02
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/icons/training.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/icons/update.png b/odex30_base/web_digital_sign/static/description/assets/icons/update.png
new file mode 100755
index 0000000..ecbc5a0
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/icons/update.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/icons/user.png b/odex30_base/web_digital_sign/static/description/assets/icons/user.png
new file mode 100755
index 0000000..6ffb23d
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/icons/user.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/icons/wrench.png b/odex30_base/web_digital_sign/static/description/assets/icons/wrench.png
new file mode 100755
index 0000000..6c04dea
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/icons/wrench.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/misc/categories.png b/odex30_base/web_digital_sign/static/description/assets/misc/categories.png
new file mode 100755
index 0000000..bedf1e0
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/misc/categories.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/misc/check-box.png b/odex30_base/web_digital_sign/static/description/assets/misc/check-box.png
new file mode 100755
index 0000000..42caf24
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/misc/check-box.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/misc/compass.png b/odex30_base/web_digital_sign/static/description/assets/misc/compass.png
new file mode 100755
index 0000000..d5fed8f
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/misc/compass.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/misc/corporate.png b/odex30_base/web_digital_sign/static/description/assets/misc/corporate.png
new file mode 100755
index 0000000..2eb13ed
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/misc/corporate.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/misc/customer-support.png b/odex30_base/web_digital_sign/static/description/assets/misc/customer-support.png
new file mode 100755
index 0000000..79efc72
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/misc/customer-support.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/misc/cybrosys-logo.png b/odex30_base/web_digital_sign/static/description/assets/misc/cybrosys-logo.png
new file mode 100755
index 0000000..cc3cc0c
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/misc/cybrosys-logo.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/misc/features.png b/odex30_base/web_digital_sign/static/description/assets/misc/features.png
new file mode 100755
index 0000000..b41769f
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/misc/features.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/misc/logo.png b/odex30_base/web_digital_sign/static/description/assets/misc/logo.png
new file mode 100755
index 0000000..478462d
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/misc/logo.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/misc/pictures.png b/odex30_base/web_digital_sign/static/description/assets/misc/pictures.png
new file mode 100755
index 0000000..56d255f
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/misc/pictures.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/misc/pie-chart.png b/odex30_base/web_digital_sign/static/description/assets/misc/pie-chart.png
new file mode 100755
index 0000000..426e052
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/misc/pie-chart.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/misc/right-arrow.png b/odex30_base/web_digital_sign/static/description/assets/misc/right-arrow.png
new file mode 100755
index 0000000..730984a
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/misc/right-arrow.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/misc/star.png b/odex30_base/web_digital_sign/static/description/assets/misc/star.png
new file mode 100755
index 0000000..2eb9ab2
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/misc/star.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/misc/support.png b/odex30_base/web_digital_sign/static/description/assets/misc/support.png
new file mode 100755
index 0000000..4f18b8b
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/misc/support.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/misc/whatsapp.png b/odex30_base/web_digital_sign/static/description/assets/misc/whatsapp.png
new file mode 100755
index 0000000..d513a53
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/misc/whatsapp.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/modules/m1.png b/odex30_base/web_digital_sign/static/description/assets/modules/m1.png
new file mode 100755
index 0000000..5ecc4d8
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/modules/m1.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/modules/m2.png b/odex30_base/web_digital_sign/static/description/assets/modules/m2.png
new file mode 100755
index 0000000..89ff6c6
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/modules/m2.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/modules/m3.png b/odex30_base/web_digital_sign/static/description/assets/modules/m3.png
new file mode 100755
index 0000000..fd1f876
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/modules/m3.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/modules/m4.png b/odex30_base/web_digital_sign/static/description/assets/modules/m4.png
new file mode 100755
index 0000000..5514bb8
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/modules/m4.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/modules/m5.png b/odex30_base/web_digital_sign/static/description/assets/modules/m5.png
new file mode 100755
index 0000000..38ea1f6
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/modules/m5.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/modules/m6.png b/odex30_base/web_digital_sign/static/description/assets/modules/m6.png
new file mode 100755
index 0000000..f52b996
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/modules/m6.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot1.png b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot1.png
new file mode 100755
index 0000000..6322698
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot1.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot10.png b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot10.png
new file mode 100755
index 0000000..aaa78c8
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot10.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot2.png b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot2.png
new file mode 100755
index 0000000..4bd8868
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot2.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot3.png b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot3.png
new file mode 100755
index 0000000..1908228
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot3.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot4.png b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot4.png
new file mode 100755
index 0000000..4ae1126
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot4.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot5.png b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot5.png
new file mode 100755
index 0000000..7ceebe3
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot5.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot6.png b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot6.png
new file mode 100755
index 0000000..673b224
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot6.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot7.png b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot7.png
new file mode 100755
index 0000000..fb975a8
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot7.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot8.png b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot8.png
new file mode 100755
index 0000000..eef2f5a
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot8.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot9.png b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot9.png
new file mode 100755
index 0000000..66fa992
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/screenshots/Screenshot9.png differ
diff --git a/odex30_base/web_digital_sign/static/description/assets/screenshots/hero.gif b/odex30_base/web_digital_sign/static/description/assets/screenshots/hero.gif
new file mode 100755
index 0000000..573ba48
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/assets/screenshots/hero.gif differ
diff --git a/odex30_base/web_digital_sign/static/description/customise.png b/odex30_base/web_digital_sign/static/description/customise.png
new file mode 100755
index 0000000..f1db652
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/customise.png differ
diff --git a/odex30_base/web_digital_sign/static/description/div-bg.png b/odex30_base/web_digital_sign/static/description/div-bg.png
new file mode 100755
index 0000000..de04296
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/div-bg.png differ
diff --git a/odex30_base/web_digital_sign/static/description/fb.jpg b/odex30_base/web_digital_sign/static/description/fb.jpg
new file mode 100644
index 0000000..8fa52d3
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/fb.jpg differ
diff --git a/odex30_base/web_digital_sign/static/description/header-logo.png b/odex30_base/web_digital_sign/static/description/header-logo.png
new file mode 100755
index 0000000..89e9a41
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/header-logo.png differ
diff --git a/odex30_base/web_digital_sign/static/description/hire.png b/odex30_base/web_digital_sign/static/description/hire.png
new file mode 100755
index 0000000..eb5d592
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/hire.png differ
diff --git a/odex30_base/web_digital_sign/static/description/icon.png b/odex30_base/web_digital_sign/static/description/icon.png
new file mode 100644
index 0000000..d15532d
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/Delivery-Order-Signed-Tracked-icon.png b/odex30_base/web_digital_sign/static/description/images/Delivery-Order-Signed-Tracked-icon.png
new file mode 100644
index 0000000..1e33e8e
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/Delivery-Order-Signed-Tracked-icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/FSM.png b/odex30_base/web_digital_sign/static/description/images/FSM.png
new file mode 100755
index 0000000..144308d
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/FSM.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/HR-Attendance-OverTime-Icon.png b/odex30_base/web_digital_sign/static/description/images/HR-Attendance-OverTime-Icon.png
new file mode 100644
index 0000000..d6d6460
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/HR-Attendance-OverTime-Icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/HRMS.png b/odex30_base/web_digital_sign/static/description/images/HRMS.png
new file mode 100755
index 0000000..1d2d350
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/HRMS.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/Microsoft-Azure-icon.png b/odex30_base/web_digital_sign/static/description/images/Microsoft-Azure-icon.png
new file mode 100644
index 0000000..b494eb4
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/Microsoft-Azure-icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/Odoo-as-Inbox-icon.png b/odex30_base/web_digital_sign/static/description/images/Odoo-as-Inbox-icon.png
new file mode 100644
index 0000000..4a0bebb
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/Odoo-as-Inbox-icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/Ringcentral-icon.png b/odex30_base/web_digital_sign/static/description/images/Ringcentral-icon.png
new file mode 100644
index 0000000..8941a48
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/Ringcentral-icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/Web-Auto-Reload-Refresh-icn.png b/odex30_base/web_digital_sign/static/description/images/Web-Auto-Reload-Refresh-icn.png
new file mode 100755
index 0000000..4222786
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/Web-Auto-Reload-Refresh-icn.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/Web-Email-Interface-icn.png b/odex30_base/web_digital_sign/static/description/images/Web-Email-Interface-icn.png
new file mode 100755
index 0000000..3eec793
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/Web-Email-Interface-icn.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/advanced_pos_report_01.png b/odex30_base/web_digital_sign/static/description/images/advanced_pos_report_01.png
new file mode 100644
index 0000000..ef57eb8
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/advanced_pos_report_01.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/azure-icon.png b/odex30_base/web_digital_sign/static/description/images/azure-icon.png
new file mode 100644
index 0000000..48118ae
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/azure-icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/azure_sso.png b/odex30_base/web_digital_sign/static/description/images/azure_sso.png
new file mode 100755
index 0000000..a8c1fc4
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/azure_sso.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/biometrics.png b/odex30_base/web_digital_sign/static/description/images/biometrics.png
new file mode 100755
index 0000000..7490441
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/biometrics.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/calendar-icon.png b/odex30_base/web_digital_sign/static/description/images/calendar-icon.png
new file mode 100644
index 0000000..365cba3
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/calendar-icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/contacts-icon.png b/odex30_base/web_digital_sign/static/description/images/contacts-icon.png
new file mode 100644
index 0000000..28b03d9
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/contacts-icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/education.png b/odex30_base/web_digital_sign/static/description/images/education.png
new file mode 100755
index 0000000..d56507d
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/education.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/fleet.png b/odex30_base/web_digital_sign/static/description/images/fleet.png
new file mode 100755
index 0000000..2623f88
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/fleet.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/freight-icon.png b/odex30_base/web_digital_sign/static/description/images/freight-icon.png
new file mode 100644
index 0000000..afeeb19
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/freight-icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/freight_mgt.png b/odex30_base/web_digital_sign/static/description/images/freight_mgt.png
new file mode 100755
index 0000000..61caf1d
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/freight_mgt.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/gym-icon.png b/odex30_base/web_digital_sign/static/description/images/gym-icon.png
new file mode 100755
index 0000000..7cd8220
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/gym-icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/gym.png b/odex30_base/web_digital_sign/static/description/images/gym.png
new file mode 100755
index 0000000..c2b76d6
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/gym.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/hotel.png b/odex30_base/web_digital_sign/static/description/images/hotel.png
new file mode 100755
index 0000000..c5c8850
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/hotel.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/hr_attendance.jpeg b/odex30_base/web_digital_sign/static/description/images/hr_attendance.jpeg
new file mode 100755
index 0000000..3f58727
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/hr_attendance.jpeg differ
diff --git a/odex30_base/web_digital_sign/static/description/images/job-potal-icon.png b/odex30_base/web_digital_sign/static/description/images/job-potal-icon.png
new file mode 100644
index 0000000..3ba5d22
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/job-potal-icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/multi-branch-icon.png b/odex30_base/web_digital_sign/static/description/images/multi-branch-icon.png
new file mode 100644
index 0000000..52fed3e
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/multi-branch-icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/multi-currency-icon.png b/odex30_base/web_digital_sign/static/description/images/multi-currency-icon.png
new file mode 100644
index 0000000..1290176
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/multi-currency-icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/multi_currency.png b/odex30_base/web_digital_sign/static/description/images/multi_currency.png
new file mode 100644
index 0000000..f1bda26
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/multi_currency.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/popup-icon.png b/odex30_base/web_digital_sign/static/description/images/popup-icon.png
new file mode 100644
index 0000000..ff91284
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/popup-icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/project-scrum-icon.png b/odex30_base/web_digital_sign/static/description/images/project-scrum-icon.png
new file mode 100644
index 0000000..4dae901
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/project-scrum-icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/project_scrum_agile_icon.png b/odex30_base/web_digital_sign/static/description/images/project_scrum_agile_icon.png
new file mode 100755
index 0000000..ec8140c
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/project_scrum_agile_icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/property.png b/odex30_base/web_digital_sign/static/description/images/property.png
new file mode 100755
index 0000000..0390701
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/property.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/ring.png b/odex30_base/web_digital_sign/static/description/images/ring.png
new file mode 100755
index 0000000..4780433
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/ring.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/sale_dost.png b/odex30_base/web_digital_sign/static/description/images/sale_dost.png
new file mode 100755
index 0000000..040a0bd
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/sale_dost.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/servisa-dashboard-icon.png b/odex30_base/web_digital_sign/static/description/images/servisa-dashboard-icon.png
new file mode 100644
index 0000000..6a38cb2
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/servisa-dashboard-icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/singapore.png b/odex30_base/web_digital_sign/static/description/images/singapore.png
new file mode 100755
index 0000000..2541bb4
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/singapore.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/spa-salon.png b/odex30_base/web_digital_sign/static/description/images/spa-salon.png
new file mode 100755
index 0000000..3326ccb
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/spa-salon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/user_mailbox.png b/odex30_base/web_digital_sign/static/description/images/user_mailbox.png
new file mode 100755
index 0000000..e9005af
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/user_mailbox.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/user_mailbox_icon.png b/odex30_base/web_digital_sign/static/description/images/user_mailbox_icon.png
new file mode 100644
index 0000000..81630cb
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/user_mailbox_icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/user_mailbox_icon1.png b/odex30_base/web_digital_sign/static/description/images/user_mailbox_icon1.png
new file mode 100644
index 0000000..0f0fd27
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/user_mailbox_icon1.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/visa.png b/odex30_base/web_digital_sign/static/description/images/visa.png
new file mode 100755
index 0000000..285f72e
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/visa.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/whatsapp-icon.png b/odex30_base/web_digital_sign/static/description/images/whatsapp-icon.png
new file mode 100644
index 0000000..5e1b309
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/whatsapp-icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/images/zoom-icon.png b/odex30_base/web_digital_sign/static/description/images/zoom-icon.png
new file mode 100644
index 0000000..c2acae0
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/images/zoom-icon.png differ
diff --git a/odex30_base/web_digital_sign/static/description/img/1.png b/odex30_base/web_digital_sign/static/description/img/1.png
new file mode 100644
index 0000000..f6376f6
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/img/1.png differ
diff --git a/odex30_base/web_digital_sign/static/description/img/2.png b/odex30_base/web_digital_sign/static/description/img/2.png
new file mode 100644
index 0000000..e4a1730
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/img/2.png differ
diff --git a/odex30_base/web_digital_sign/static/description/img/3.png b/odex30_base/web_digital_sign/static/description/img/3.png
new file mode 100644
index 0000000..4ab0f7c
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/img/3.png differ
diff --git a/odex30_base/web_digital_sign/static/description/img/sign1.png b/odex30_base/web_digital_sign/static/description/img/sign1.png
new file mode 100644
index 0000000..7d4ea61
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/img/sign1.png differ
diff --git a/odex30_base/web_digital_sign/static/description/img/sign2.png b/odex30_base/web_digital_sign/static/description/img/sign2.png
new file mode 100644
index 0000000..f708787
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/img/sign2.png differ
diff --git a/odex30_base/web_digital_sign/static/description/img/sign3.png b/odex30_base/web_digital_sign/static/description/img/sign3.png
new file mode 100644
index 0000000..218f084
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/img/sign3.png differ
diff --git a/odex30_base/web_digital_sign/static/description/in.jpg b/odex30_base/web_digital_sign/static/description/in.jpg
new file mode 100644
index 0000000..d9b9a80
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/in.jpg differ
diff --git a/odex30_base/web_digital_sign/static/description/index.html b/odex30_base/web_digital_sign/static/description/index.html
new file mode 100644
index 0000000..08145b4
--- /dev/null
+++ b/odex30_base/web_digital_sign/static/description/index.html
@@ -0,0 +1,894 @@
+
+
+
+
+
+
+
+
+
+
+
+ Web Digital Signature
+
+
+
This module provides the functionality to store digital signature for a record
+
+
+
This module is helpful to make your business process a little bit more faster & makes it more user
+ friendly by providing you digital signature functionality on your documents.
+
It is touch screen enable so user can add signature with touch devices.
+
Digital signature can be very useful for documents such as sale orders, purchase orders, invoices,
+ payslips, procurement receipts, etc.
+
+
+
+
+
+
+
+
+
+
+
Usage: To use this module, you need to add widget="digital_signature" to your binary field in your
+ view.
+
+
+
+
+
+ Screenshots
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Related Products
+
+
+
+
+
+
+
+
+
+
+
+
+ Suggested Apps
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Business Solutions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Our Odoo Services
+
+
+
+
+
+
+
+
+
+
+
+ Odoo Customization
+
+
+
+
+
+
+
+ Odoo Implementation
+
+
+
+
+
+
+
+ Odoo Integration
+
+
+
+
+
+
+
+ Odoo Support
+
+
+
+
+
+
+
+ Hire Odoo Developers
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Help And Support
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/odex30_base/web_digital_sign/static/description/insta.jpg b/odex30_base/web_digital_sign/static/description/insta.jpg
new file mode 100644
index 0000000..c89a251
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/insta.jpg differ
diff --git a/odex30_base/web_digital_sign/static/description/integration.png b/odex30_base/web_digital_sign/static/description/integration.png
new file mode 100755
index 0000000..0e4be68
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/integration.png differ
diff --git a/odex30_base/web_digital_sign/static/description/odooqa32.png b/odex30_base/web_digital_sign/static/description/odooqa32.png
new file mode 100644
index 0000000..b0db6c2
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/odooqa32.png differ
diff --git a/odex30_base/web_digital_sign/static/description/pictures.png b/odex30_base/web_digital_sign/static/description/pictures.png
new file mode 100644
index 0000000..56d255f
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/pictures.png differ
diff --git a/odex30_base/web_digital_sign/static/description/serpent32.png b/odex30_base/web_digital_sign/static/description/serpent32.png
new file mode 100644
index 0000000..14612ca
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/serpent32.png differ
diff --git a/odex30_base/web_digital_sign/static/description/serpent_logo.png b/odex30_base/web_digital_sign/static/description/serpent_logo.png
new file mode 100644
index 0000000..68dacf8
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/serpent_logo.png differ
diff --git a/odex30_base/web_digital_sign/static/description/signature.png b/odex30_base/web_digital_sign/static/description/signature.png
new file mode 100644
index 0000000..0ea11cd
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/signature.png differ
diff --git a/odex30_base/web_digital_sign/static/description/support.png b/odex30_base/web_digital_sign/static/description/support.png
new file mode 100755
index 0000000..9728d08
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/support.png differ
diff --git a/odex30_base/web_digital_sign/static/description/twitter.jpg b/odex30_base/web_digital_sign/static/description/twitter.jpg
new file mode 100644
index 0000000..6d938f6
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/twitter.jpg differ
diff --git a/odex30_base/web_digital_sign/static/description/youtube.jpg b/odex30_base/web_digital_sign/static/description/youtube.jpg
new file mode 100644
index 0000000..05382a7
Binary files /dev/null and b/odex30_base/web_digital_sign/static/description/youtube.jpg differ
diff --git a/odex30_base/web_digital_sign/static/lib/jSignature/jSignatureCustom.js b/odex30_base/web_digital_sign/static/lib/jSignature/jSignatureCustom.js
new file mode 100644
index 0000000..2b29c07
--- /dev/null
+++ b/odex30_base/web_digital_sign/static/lib/jSignature/jSignatureCustom.js
@@ -0,0 +1,1405 @@
+/** @preserve
+jSignature v2 "${buildDate}" "${commitID}"
+Copyright (c) 2012 Willow Systems Corp http://willow-systems.com
+Copyright (c) 2010 Brinley Ang http://www.unbolt.net
+MIT License
+
+*/
+
+;(function() {
+
+var apinamespace = 'jSignature'
+
+/**
+Allows one to delay certain eventual action by setting up a timer for it and allowing one to delay it
+by "kick"ing it. Sorta like "kick the can down the road"
+
+@public
+@class
+@param
+@returns {Type}
+*/
+var KickTimerClass = function(time, callback) {
+ var timer
+ this.kick = function() {
+ clearTimeout(timer)
+ timer = setTimeout(
+ callback
+ , time
+ )
+ }
+ this.clear = function() {
+ clearTimeout(timer)
+ }
+ return this
+}
+
+var PubSubClass = function(context){
+ 'use strict'
+ /* @preserve
+ -----------------------------------------------------------------------------------------------
+ JavaScript PubSub library
+ 2012 (c) Willow Systems Corp (www.willow-systems.com)
+ based on Peter Higgins (dante@dojotoolkit.org)
+ Loosely based on Dojo publish/subscribe API, limited in scope. Rewritten blindly.
+ Original is (c) Dojo Foundation 2004-2010. Released under either AFL or new BSD, see:
+ http://dojofoundation.org/license for more information.
+ -----------------------------------------------------------------------------------------------
+ */
+ this.topics = {}
+ // here we choose what will be "this" for the called events.
+ // if context is defined, it's context. Else, 'this' is this instance of PubSub
+ this.context = context ? context : this
+ /**
+ * Allows caller to emit an event and pass arguments to event listeners.
+ * @public
+ * @function
+ * @param topic {String} Name of the channel on which to voice this event
+ * @param **arguments Any number of arguments you want to pass to the listeners of this event.
+ */
+ this.publish = function(topic, arg1, arg2, etc) {
+ 'use strict'
+ if (this.topics[topic]) {
+ var currentTopic = this.topics[topic]
+ , args = Array.prototype.slice.call(arguments, 1)
+ , toremove = []
+ , fn
+ , i, l
+ , pair
+
+ for (i = 0, l = currentTopic.length; i < l; i++) {
+ pair = currentTopic[i] // this is a [function, once_flag] array
+ fn = pair[0]
+ if (pair[1] /* 'run once' flag set */){
+ pair[0] = function(){}
+ toremove.push(i)
+ }
+ fn.apply(this.context, args)
+ }
+ for (i = 0, l = toremove.length; i < l; i++) {
+ currentTopic.splice(toremove[i], 1)
+ }
+ }
+ }
+ /**
+ * Allows listener code to subscribe to channel and be called when data is available
+ * @public
+ * @function
+ * @param topic {String} Name of the channel on which to voice this event
+ * @param callback {Function} Executable (function pointer) that will be ran when event is voiced on this channel.
+ * @param once {Boolean} (optional. False by default) Flag indicating if the function is to be triggered only once.
+ * @returns {Object} A token object that cen be used for unsubscribing.
+ */
+ this.subscribe = function(topic, callback, once) {
+ 'use strict'
+ if (!this.topics[topic]) {
+ this.topics[topic] = [[callback, once]];
+ } else {
+ this.topics[topic].push([callback,once]);
+ }
+ return {
+ "topic": topic,
+ "callback": callback
+ };
+ };
+ /**
+ * Allows listener code to unsubscribe from a channel
+ * @public
+ * @function
+ * @param token {Object} A token object that was returned by `subscribe` method
+ */
+ this.unsubscribe = function(token) {
+ if (this.topics[token.topic]) {
+ var currentTopic = this.topics[token.topic]
+
+ for (var i = 0, l = currentTopic.length; i < l; i++) {
+ if (currentTopic[i][0] === token.callback) {
+ currentTopic.splice(i, 1)
+ }
+ }
+ }
+ }
+}
+
+/// Returns front, back and "decor" colors derived from element (as jQuery obj)
+function getColors($e){
+ var tmp
+ , undef
+ , frontcolor = $e.css('color')
+ , backcolor
+ , e = $e[0]
+
+ var toOfDOM = false
+ while(e && !backcolor && !toOfDOM){
+ try{
+ tmp = $(e).css('background-color')
+ } catch (ex) {
+ tmp = 'transparent'
+ }
+ if (tmp !== 'transparent' && tmp !== 'rgba(0, 0, 0, 0)'){
+ backcolor = tmp
+ }
+ toOfDOM = e.body
+ e = e.parentNode
+ }
+
+ var rgbaregex = /rgb[a]*\((\d+),\s*(\d+),\s*(\d+)/ // modern browsers
+ , hexregex = /#([AaBbCcDdEeFf\d]{2})([AaBbCcDdEeFf\d]{2})([AaBbCcDdEeFf\d]{2})/ // IE 8 and less.
+ , frontcolorcomponents
+
+ // Decomposing Front color into R, G, B ints
+ tmp = undef
+ tmp = frontcolor.match(rgbaregex)
+ if (tmp){
+ frontcolorcomponents = {'r':parseInt(tmp[1],10),'g':parseInt(tmp[2],10),'b':parseInt(tmp[3],10)}
+ } else {
+ tmp = frontcolor.match(hexregex)
+ if (tmp) {
+ frontcolorcomponents = {'r':parseInt(tmp[1],16),'g':parseInt(tmp[2],16),'b':parseInt(tmp[3],16)}
+ }
+ }
+// if(!frontcolorcomponents){
+// frontcolorcomponents = {'r':255,'g':255,'b':255}
+// }
+
+ var backcolorcomponents
+ // Decomposing back color into R, G, B ints
+ if(!backcolor){
+ // HIghly unlikely since this means that no background styling was applied to any element from here to top of dom.
+ // we'll pick up back color from front color
+ if(frontcolorcomponents){
+ if (Math.max.apply(null, [frontcolorcomponents.r, frontcolorcomponents.g, frontcolorcomponents.b]) > 127){
+ backcolorcomponents = {'r':0,'g':0,'b':0}
+ } else {
+ backcolorcomponents = {'r':255,'g':255,'b':255}
+ }
+ } else {
+ // arg!!! front color is in format we don't understand (hsl, named colors)
+ // Let's just go with white background.
+ backcolorcomponents = {'r':255,'g':255,'b':255}
+ }
+ } else {
+ tmp = undef
+ tmp = backcolor.match(rgbaregex)
+ if (tmp){
+ backcolorcomponents = {'r':parseInt(tmp[1],10),'g':parseInt(tmp[2],10),'b':parseInt(tmp[3],10)}
+ } else {
+ tmp = backcolor.match(hexregex)
+ if (tmp) {
+ backcolorcomponents = {'r':parseInt(tmp[1],16),'g':parseInt(tmp[2],16),'b':parseInt(tmp[3],16)}
+ }
+ }
+// if(!backcolorcomponents){
+// backcolorcomponents = {'r':0,'g':0,'b':0}
+// }
+ }
+
+ // Deriving Decor color
+ // THis is LAZY!!!! Better way would be to use HSL and adjust luminocity. However, that could be an overkill.
+
+ var toRGBfn = function(o){return 'rgb(' + [o.r, o.g, o.b].join(', ') + ')'}
+ , decorcolorcomponents
+ , frontcolorbrightness
+ , adjusted
+
+ if (frontcolorcomponents && backcolorcomponents){
+ var backcolorbrightness = Math.max.apply(null, [frontcolorcomponents.r, frontcolorcomponents.g, frontcolorcomponents.b])
+
+ frontcolorbrightness = Math.max.apply(null, [backcolorcomponents.r, backcolorcomponents.g, backcolorcomponents.b])
+ adjusted = Math.round(frontcolorbrightness + (-1 * (frontcolorbrightness - backcolorbrightness) * 0.75)) // "dimming" the difference between pen and back.
+ decorcolorcomponents = {'r':adjusted,'g':adjusted,'b':adjusted} // always shade of gray
+ } else if (frontcolorcomponents) {
+ frontcolorbrightness = Math.max.apply(null, [frontcolorcomponents.r, frontcolorcomponents.g, frontcolorcomponents.b])
+ var polarity = +1
+ if (frontcolorbrightness > 127){
+ polarity = -1
+ }
+ // shifting by 25% (64 points on RGB scale)
+ adjusted = Math.round(frontcolorbrightness + (polarity * 96)) // "dimming" the pen's color by 75% to get decor color.
+ decorcolorcomponents = {'r':adjusted,'g':adjusted,'b':adjusted} // always shade of gray
+ } else {
+ decorcolorcomponents = {'r':191,'g':191,'b':191} // always shade of gray
+ }
+
+ return {
+ 'color': frontcolor
+ , 'background-color': backcolorcomponents? toRGBfn(backcolorcomponents) : backcolor
+ , 'decor-color': toRGBfn(decorcolorcomponents)
+ }
+}
+
+function Vector(x,y){
+ this.x = x
+ this.y = y
+ this.reverse = function(){
+ return new this.constructor(
+ this.x * -1
+ , this.y * -1
+ )
+ }
+ this._length = null
+ this.getLength = function(){
+ if (!this._length){
+ this._length = Math.sqrt( Math.pow(this.x, 2) + Math.pow(this.y, 2) )
+ }
+ return this._length
+ }
+
+ var polarity = function (e){
+ return Math.round(e / Math.abs(e))
+ }
+ this.resizeTo = function(length){
+ // proportionally changes x,y such that the hypotenuse (vector length) is = new length
+ if (this.x === 0 && this.y === 0){
+ this._length = 0
+ } else if (this.x === 0){
+ this._length = length
+ this.y = length * polarity(this.y)
+ } else if(this.y === 0){
+ this._length = length
+ this.x = length * polarity(this.x)
+ } else {
+ var proportion = Math.abs(this.y / this.x)
+ , x = Math.sqrt(Math.pow(length, 2) / (1 + Math.pow(proportion, 2)))
+ , y = proportion * x
+ this._length = length
+ this.x = x * polarity(this.x)
+ this.y = y * polarity(this.y)
+ }
+ return this
+ }
+
+ /**
+ * Calculates the angle between 'this' vector and another.
+ * @public
+ * @function
+ * @returns {Number} The angle between the two vectors as measured in PI.
+ */
+ this.angleTo = function(vectorB) {
+ var divisor = this.getLength() * vectorB.getLength()
+ if (divisor === 0) {
+ return 0
+ } else {
+ // JavaScript floating point math is screwed up.
+ // because of it, the core of the formula can, on occasion, have values
+ // over 1.0 and below -1.0.
+ return Math.acos(
+ Math.min(
+ Math.max(
+ ( this.x * vectorB.x + this.y * vectorB.y ) / divisor
+ , -1.0
+ )
+ , 1.0
+ )
+ ) / Math.PI
+ }
+ }
+}
+
+function Point(x,y){
+ this.x = x
+ this.y = y
+
+ this.getVectorToCoordinates = function (x, y) {
+ return new Vector(x - this.x, y - this.y)
+ }
+ this.getVectorFromCoordinates = function (x, y) {
+ return this.getVectorToCoordinates(x, y).reverse()
+ }
+ this.getVectorToPoint = function (point) {
+ return new Vector(point.x - this.x, point.y - this.y)
+ }
+ this.getVectorFromPoint = function (point) {
+ return this.getVectorToPoint(point).reverse()
+ }
+}
+
+/*
+ * About data structure:
+ * We don't store / deal with "pictures" this signature capture code captures "vectors"
+ *
+ * We don't store bitmaps. We store "strokes" as arrays of arrays. (Actually, arrays of objects containing arrays of coordinates.
+ *
+ * Stroke = mousedown + mousemoved * n (+ mouseup but we don't record that as that was the "end / lack of movement" indicator)
+ *
+ * Vectors = not classical vectors where numbers indicated shift relative last position. Our vectors are actually coordinates against top left of canvas.
+ * we could calc the classical vectors, but keeping the the actual coordinates allows us (through Math.max / min)
+ * to calc the size of resulting drawing very quickly. If we want classical vectors later, we can always get them in backend code.
+ *
+ * So, the data structure:
+ *
+ * var data = [
+ * { // stroke starts
+ * x : [101, 98, 57, 43] // x points
+ * , y : [1, 23, 65, 87] // y points
+ * } // stroke ends
+ * , { // stroke starts
+ * x : [55, 56, 57, 58] // x points
+ * , y : [101, 97, 54, 4] // y points
+ * } // stroke ends
+ * , { // stroke consisting of just a dot
+ * x : [53] // x points
+ * , y : [151] // y points
+ * } // stroke ends
+ * ]
+ *
+ * we don't care or store stroke width (it's canvas-size-relative), color, shadow values. These can be added / changed on whim post-capture.
+ *
+ */
+function DataEngine(storageObject, context, startStrokeFn, addToStrokeFn, endStrokeFn){
+ this.data = storageObject // we expect this to be an instance of Array
+ this.context = context
+
+ if (storageObject.length){
+ // we have data to render
+ var numofstrokes = storageObject.length
+ , stroke
+ , numofpoints
+
+ for (var i = 0; i < numofstrokes; i++){
+ stroke = storageObject[i]
+ numofpoints = stroke.x.length
+ startStrokeFn.call(context, stroke)
+ for(var j = 1; j < numofpoints; j++){
+ addToStrokeFn.call(context, stroke, j)
+ }
+ endStrokeFn.call(context, stroke)
+ }
+ }
+
+ this.changed = function(){}
+
+ this.startStrokeFn = startStrokeFn
+ this.addToStrokeFn = addToStrokeFn
+ this.endStrokeFn = endStrokeFn
+
+ this.inStroke = false
+
+ this._lastPoint = null
+ this._stroke = null
+ this.startStroke = function(point){
+ if(point && typeof(point.x) == "number" && typeof(point.y) == "number"){
+ this._stroke = {'x':[point.x], 'y':[point.y]}
+ this.data.push(this._stroke)
+ this._lastPoint = point
+ this.inStroke = true
+ // 'this' does not work same inside setTimeout(
+ var stroke = this._stroke
+ , fn = this.startStrokeFn
+ , context = this.context
+ setTimeout(
+ // some IE's don't support passing args per setTimeout API. Have to create closure every time instead.
+ function() {fn.call(context, stroke)}
+ , 3
+ )
+ return point
+ } else {
+ return null
+ }
+ }
+ // that "5" at the very end of this if is important to explain.
+ // we do NOT render links between two captured points (in the middle of the stroke) if the distance is shorter than that number.
+ // not only do we NOT render it, we also do NOT capture (add) these intermediate points to storage.
+ // when clustering of these is too tight, it produces noise on the line, which, because of smoothing, makes lines too curvy.
+ // maybe, later, we can expose this as a configurable setting of some sort.
+ this.addToStroke = function(point){
+ if (this.inStroke &&
+ typeof(point.x) === "number" &&
+ typeof(point.y) === "number" &&
+ // calculates absolute shift in diagonal pixels away from original point
+ (Math.abs(point.x - this._lastPoint.x) + Math.abs(point.y - this._lastPoint.y)) > 4
+ ){
+ var positionInStroke = this._stroke.x.length
+ this._stroke.x.push(point.x)
+ this._stroke.y.push(point.y)
+ this._lastPoint = point
+
+ var stroke = this._stroke
+ , fn = this.addToStrokeFn
+ , context = this.context
+ setTimeout(
+ // some IE's don't support passing args per setTimeout API. Have to create closure every time instead.
+ function() {fn.call(context, stroke, positionInStroke)}
+ , 3
+ )
+ return point
+ } else {
+ return null
+ }
+ }
+ this.endStroke = function(){
+ var c = this.inStroke
+ this.inStroke = false
+ this._lastPoint = null
+ if (c){
+ var stroke = this._stroke
+ , fn = this.endStrokeFn // 'this' does not work same inside setTimeout(
+ , context = this.context
+ , changedfn = this.changed
+ setTimeout(
+ // some IE's don't support passing args per setTimeout API. Have to create closure every time instead.
+ function(){
+ fn.call(context, stroke)
+ changedfn.call(context)
+ }
+ , 3
+ )
+ return true
+ } else {
+ return null
+ }
+ }
+}
+
+var basicDot = function(ctx, x, y, size){
+ var fillStyle = ctx.fillStyle
+ ctx.fillStyle = ctx.strokeStyle
+ ctx.fillRect(x + size / -2 , y + size / -2, size, size)
+ ctx.fillStyle = fillStyle
+}
+, basicLine = function(ctx, startx, starty, endx, endy){
+ ctx.beginPath()
+ ctx.moveTo(startx, starty)
+ ctx.lineTo(endx, endy)
+ ctx.stroke()
+}
+, basicCurve = function(ctx, startx, starty, endx, endy, cp1x, cp1y, cp2x, cp2y){
+ ctx.beginPath()
+ ctx.moveTo(startx, starty)
+ ctx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, endx, endy)
+ ctx.stroke()
+}
+, strokeStartCallback = function(stroke) {
+ // this = jSignatureClass instance
+ basicDot(this.canvasContext, stroke.x[0], stroke.y[0], this.settings.lineWidth)
+}
+, strokeAddCallback = function(stroke, positionInStroke){
+ // this = jSignatureClass instance
+
+ // Because we are funky this way, here we draw TWO curves.
+ // 1. POSSIBLY "this line" - spanning from point right before us, to this latest point.
+ // 2. POSSIBLY "prior curve" - spanning from "latest point" to the one before it.
+
+ // Why you ask?
+ // long lines (ones with many pixels between them) do not look good when they are part of a large curvy stroke.
+ // You know, the jaggedy crocodile spine instead of a pretty, smooth curve. Yuck!
+ // We want to approximate pretty curves in-place of those ugly lines.
+ // To approximate a very nice curve we need to know the direction of line before and after.
+ // Hence, on long lines we actually wait for another point beyond it to come back from
+ // mousemoved before we draw this curve.
+
+ // So for "prior curve" to be calc'ed we need 4 points
+ // A, B, C, D (we are on D now, A is 3 points in the past.)
+ // and 3 lines:
+ // pre-line (from points A to B),
+ // this line (from points B to C), (we call it "this" because if it was not yet, it's the only one we can draw for sure.)
+ // post-line (from points C to D) (even through D point is 'current' we don't know how we can draw it yet)
+ //
+ // Well, actually, we don't need to *know* the point A, just the vector A->B
+ var Cpoint = new Point(stroke.x[positionInStroke-1], stroke.y[positionInStroke-1])
+ , Dpoint = new Point(stroke.x[positionInStroke], stroke.y[positionInStroke])
+ , CDvector = Cpoint.getVectorToPoint(Dpoint)
+
+ // Again, we have a chance here to draw TWO things:
+ // BC Curve (only if it's long, because if it was short, it was drawn by previous callback) and
+ // CD Line (only if it's short)
+
+ // So, let's start with BC curve.
+ // if there is only 2 points in stroke array, we don't have "history" long enough to have point B, let alone point A.
+ // Falling through to drawing line CD is proper, as that's the only line we have points for.
+ if(positionInStroke > 1) {
+ // we are here when there are at least 3 points in stroke array.
+ var Bpoint = new Point(stroke.x[positionInStroke-2], stroke.y[positionInStroke-2])
+ , BCvector = Bpoint.getVectorToPoint(Cpoint)
+ , ABvector
+ if(BCvector.getLength() > this.lineCurveThreshold){
+ // Yey! Pretty curves, here we come!
+ if(positionInStroke > 2) {
+ // we are here when at least 4 points in stroke array.
+ ABvector = (new Point(stroke.x[positionInStroke-3], stroke.y[positionInStroke-3])).getVectorToPoint(Bpoint)
+ } else {
+ ABvector = new Vector(0,0)
+ }
+
+ var minlenfraction = 0.05
+ , maxlen = BCvector.getLength() * 0.35
+ , ABCangle = BCvector.angleTo(ABvector.reverse())
+ , BCDangle = CDvector.angleTo(BCvector.reverse())
+ , BCP1vector = new Vector(ABvector.x + BCvector.x, ABvector.y + BCvector.y).resizeTo(
+ Math.max(minlenfraction, ABCangle) * maxlen
+ )
+ , CCP2vector = (new Vector(BCvector.x + CDvector.x, BCvector.y + CDvector.y)).reverse().resizeTo(
+ Math.max(minlenfraction, BCDangle) * maxlen
+ )
+
+ basicCurve(
+ this.canvasContext
+ , Bpoint.x
+ , Bpoint.y
+ , Cpoint.x
+ , Cpoint.y
+ , Bpoint.x + BCP1vector.x
+ , Bpoint.y + BCP1vector.y
+ , Cpoint.x + CCP2vector.x
+ , Cpoint.y + CCP2vector.y
+ )
+ }
+ }
+ if(CDvector.getLength() <= this.lineCurveThreshold){
+ basicLine(
+ this.canvasContext
+ , Cpoint.x
+ , Cpoint.y
+ , Dpoint.x
+ , Dpoint.y
+ )
+ }
+}
+, strokeEndCallback = function(stroke){
+ // this = jSignatureClass instance
+
+ // Here we tidy up things left unfinished in last strokeAddCallback run.
+
+ // What's POTENTIALLY left unfinished there is the curve between the last points
+ // in the stroke, if the len of that line is more than lineCurveThreshold
+ // If the last line was shorter than lineCurveThreshold, it was drawn there, and there
+ // is nothing for us here to do.
+ // We can also be called when there is only one point in the stroke (meaning, the
+ // stroke was just a dot), in which case, again, there is nothing for us to do.
+
+ // So for "this curve" to be calc'ed we need 3 points
+ // A, B, C
+ // and 2 lines:
+ // pre-line (from points A to B),
+ // this line (from points B to C)
+ // Well, actually, we don't need to *know* the point A, just the vector A->B
+ // so, we really need points B, C and AB vector.
+ var positionInStroke = stroke.x.length - 1
+
+ if (positionInStroke > 0){
+ // there are at least 2 points in the stroke.we are in business.
+ var Cpoint = new Point(stroke.x[positionInStroke], stroke.y[positionInStroke])
+ , Bpoint = new Point(stroke.x[positionInStroke-1], stroke.y[positionInStroke-1])
+ , BCvector = Bpoint.getVectorToPoint(Cpoint)
+ , ABvector
+ if (BCvector.getLength() > this.lineCurveThreshold){
+ // yep. This one was left undrawn in prior callback. Have to draw it now.
+ if (positionInStroke > 1){
+ // we have at least 3 elems in stroke
+ ABvector = (new Point(stroke.x[positionInStroke-2], stroke.y[positionInStroke-2])).getVectorToPoint(Bpoint)
+ var BCP1vector = new Vector(ABvector.x + BCvector.x, ABvector.y + BCvector.y).resizeTo(BCvector.getLength() / 2)
+ basicCurve(
+ this.canvasContext
+ , Bpoint.x
+ , Bpoint.y
+ , Cpoint.x
+ , Cpoint.y
+ , Bpoint.x + BCP1vector.x
+ , Bpoint.y + BCP1vector.y
+ , Cpoint.x
+ , Cpoint.y
+ )
+ } else {
+ // Since there is no AB leg, there is no curve to draw. This line is still "long" but no curve.
+ basicLine(
+ this.canvasContext
+ , Bpoint.x
+ , Bpoint.y
+ , Cpoint.x
+ , Cpoint.y
+ )
+ }
+ }
+ }
+}
+
+
+/*
+var getDataStats = function(){
+ var strokecnt = strokes.length
+ , stroke
+ , pointid
+ , pointcnt
+ , x, y
+ , maxX = Number.NEGATIVE_INFINITY
+ , maxY = Number.NEGATIVE_INFINITY
+ , minX = Number.POSITIVE_INFINITY
+ , minY = Number.POSITIVE_INFINITY
+ for(strokeid = 0; strokeid < strokecnt; strokeid++){
+ stroke = strokes[strokeid]
+ pointcnt = stroke.length
+ for(pointid = 0; pointid < pointcnt; pointid++){
+ x = stroke.x[pointid]
+ y = stroke.y[pointid]
+ if (x > maxX){
+ maxX = x
+ } else if (x < minX) {
+ minX = x
+ }
+ if (y > maxY){
+ maxY = y
+ } else if (y < minY) {
+ minY = y
+ }
+ }
+ }
+ return {'maxX': maxX, 'minX': minX, 'maxY': maxY, 'minY': minY}
+}
+*/
+
+function conditionallyLinkCanvasResizeToWindowResize(jSignatureInstance, settingsWidth, apinamespace, globalEvents){
+ 'use strict'
+ if ( settingsWidth === 'ratio' || settingsWidth.split('')[settingsWidth.length - 1] === '%' ) {
+
+ this.eventTokens[apinamespace + '.parentresized'] = globalEvents.subscribe(
+ apinamespace + '.parentresized'
+ , (function(eventTokens, $parent, originalParentWidth, sizeRatio){
+ 'use strict'
+
+ return function(){
+ 'use strict'
+
+ var w = $parent.width()
+ if (w !== originalParentWidth) {
+
+ // UNsubscribing this particular instance of signature pad only.
+ // there is a separate `eventTokens` per each instance of signature pad
+ for (var key in eventTokens){
+ if (eventTokens.hasOwnProperty(key)) {
+ globalEvents.unsubscribe(eventTokens[key])
+ delete eventTokens[key]
+ }
+ }
+
+ var settings = jSignatureInstance.settings
+ jSignatureInstance.$parent.children().remove()
+ for (var key in jSignatureInstance){
+ if (jSignatureInstance.hasOwnProperty(key)) {
+ delete jSignatureInstance[key]
+ }
+ }
+
+ // scale data to new signature pad size
+ settings.data = (function(data, scale){
+ var newData = []
+ var o, i, l, j, m, stroke
+ for ( i = 0, l = data.length; i < l; i++) {
+ stroke = data[i]
+
+ o = {'x':[],'y':[]}
+
+ for ( j = 0, m = stroke.x.length; j < m; j++) {
+ o.x.push(stroke.x[j] * scale)
+ o.y.push(stroke.y[j] * scale)
+ }
+
+ newData.push(o)
+ }
+ return newData
+ })(
+ settings.data
+ , w * 1.0 / originalParentWidth
+ )
+
+ $parent[apinamespace](settings)
+ }
+ }
+ })(
+ this.eventTokens
+ , this.$parent
+ , this.$parent.width()
+ , this.canvas.width * 1.0 / this.canvas.height
+ )
+ )
+ }
+}
+
+
+function jSignatureClass(parent, options, instanceExtensions) {
+
+ var $parent = this.$parent = $(parent)
+ , eventTokens = this.eventTokens = {}
+ , events = this.events = new PubSubClass(this)
+ , globalEvents = $.fn[apinamespace]('globalEvents')
+ , settings = {
+ 'width' : 'ratio'
+ ,'height' : 'ratio'
+ ,'sizeRatio': 4 // only used when height = 'ratio'
+ ,'color' : '#000'
+ ,'background-color': '#fff'
+ ,'decor-color': '#eee'
+ ,'lineWidth' : 0
+ ,'minFatFingerCompensation' : -10
+ ,'showUndoButton': false
+ ,'data': []
+ }
+ $.extend(settings, getColors($parent))
+ if (options) {
+ $.extend(settings, options)
+ }
+ this.settings = settings
+
+ for (var extensionName in instanceExtensions){
+ if (instanceExtensions.hasOwnProperty(extensionName)) {
+ instanceExtensions[extensionName].call(this, extensionName)
+ }
+ }
+
+ this.events.publish(apinamespace+'.initializing')
+
+ // these, when enabled, will hover above the sig area. Hence we append them to DOM before canvas.
+ this.$controlbarUpper = (function(){
+ var controlbarstyle = 'padding:0 !important;margin:0 !important;'+
+ 'width: 100% !important; height: 0 !important;'+
+ 'margin-top:-1em !important;margin-bottom:1em !important;'
+ return $('
').appendTo($parent)
+ })();
+
+ this.isCanvasEmulator = false // will be flipped by initializer when needed.
+ var canvas = this.canvas = this.initializeCanvas(settings)
+ , $canvas = $(canvas)
+
+ this.$controlbarLower = (function(){
+ var controlbarstyle = 'padding:0 !important;margin:0 !important;'+
+ 'width: 100% !important; height: 0 !important;'+
+ 'margin-top:-1.5em !important;margin-bottom:1.5em !important;'
+ return $('
').appendTo($parent)
+ })();
+
+ this.canvasContext = canvas.getContext("2d")
+
+ // Most of our exposed API will be looking for this:
+ $canvas.data(apinamespace + '.this', this)
+
+
+ settings.lineWidth = (function(defaultLineWidth, canvasWidth){
+ if (!defaultLineWidth){
+ return Math.max(
+ Math.round(canvasWidth / 400) /*+1 pixel for every extra 300px of width.*/
+ , 2 /* minimum line width */
+ )
+ } else {
+ return defaultLineWidth
+ }
+ })(settings.lineWidth, canvas.width);
+
+ this.lineCurveThreshold = settings.lineWidth * 3
+
+ // Add custom class if defined
+ if(settings.cssclass && $.trim(settings.cssclass) != "") {
+ $canvas.addClass(settings.cssclass)
+ }
+
+ // used for shifting the drawing point up on touch devices, so one can see the drawing above the finger.
+ this.fatFingerCompensation = 0
+
+ var movementHandlers = (function(jSignatureInstance) {
+
+ //================================
+ // mouse down, move, up handlers:
+
+ // shifts - adjustment values in viewport pixels drived from position of canvas on the page
+ var shiftX
+ , shiftY
+ , setStartValues = function(){
+ var tos = $(jSignatureInstance.canvas).offset()
+ shiftX = tos.left * -1
+ shiftY = tos.top * -1
+ }
+ , getPointFromEvent = function(e) {
+ var firstEvent = (e.changedTouches && e.changedTouches.length > 0 ? e.changedTouches[0] : e)
+ // All devices i tried report correct coordinates in pageX,Y
+ // Android Chrome 2.3.x, 3.1, 3.2., Opera Mobile, safari iOS 4.x,
+ // Windows: Chrome, FF, IE9, Safari
+ // None of that scroll shift calc vs screenXY other sigs do is needed.
+ // ... oh, yeah, the "fatFinger.." is for tablets so that people see what they draw.
+ return new Point(
+ Math.round(firstEvent.pageX + shiftX)
+ , Math.round(firstEvent.pageY + shiftY) + jSignatureInstance.fatFingerCompensation
+ )
+ }
+ , timer = new KickTimerClass(
+ 750
+ , function() { jSignatureInstance.dataEngine.endStroke() }
+ )
+
+ this.drawEndHandler = function(e) {
+ try { e.preventDefault() } catch (ex) {}
+ timer.clear()
+ jSignatureInstance.dataEngine.endStroke()
+ }
+ this.drawStartHandler = function(e) {
+ e.preventDefault()
+ // for performance we cache the offsets
+ // we recalc these only at the beginning the stroke
+ setStartValues()
+ jSignatureInstance.dataEngine.startStroke( getPointFromEvent(e) )
+ timer.kick()
+ }
+ this.drawMoveHandler = function(e) {
+ e.preventDefault()
+ if (!jSignatureInstance.dataEngine.inStroke){
+ return
+ }
+ jSignatureInstance.dataEngine.addToStroke( getPointFromEvent(e) )
+ timer.kick()
+ }
+
+ return this
+
+ }).call( {}, this )
+
+ //
+ //================================
+
+ ;(function(drawEndHandler, drawStartHandler, drawMoveHandler) {
+ var canvas = this.canvas
+ , $canvas = $(canvas)
+ , undef
+ if (this.isCanvasEmulator){
+ $canvas.bind('mousemove.'+apinamespace, drawMoveHandler)
+ $canvas.bind('mouseup.'+apinamespace, drawEndHandler)
+ $canvas.bind('mousedown.'+apinamespace, drawStartHandler)
+ } else {
+ canvas.ontouchstart = function(e) {
+ canvas.onmousedown = undef
+ canvas.onmouseup = undef
+ canvas.onmousemove = undef
+
+ this.fatFingerCompensation = (
+ settings.minFatFingerCompensation &&
+ settings.lineWidth * -3 > settings.minFatFingerCompensation
+ ) ? settings.lineWidth * -3 : settings.minFatFingerCompensation
+
+ drawStartHandler(e)
+
+ canvas.ontouchend = drawEndHandler
+ canvas.ontouchstart = drawStartHandler
+ canvas.ontouchmove = drawMoveHandler
+ }
+ canvas.onmousedown = function(e) {
+ canvas.ontouchstart = undef
+ canvas.ontouchend = undef
+ canvas.ontouchmove = undef
+
+ drawStartHandler(e)
+
+ canvas.onmousedown = drawStartHandler
+ canvas.onmouseup = drawEndHandler
+ canvas.onmousemove = drawMoveHandler
+ }
+ }
+ }).call(
+ this
+ , movementHandlers.drawEndHandler
+ , movementHandlers.drawStartHandler
+ , movementHandlers.drawMoveHandler
+ )
+
+ //=========================================
+ // various event handlers
+
+ // on mouseout + mouseup canvas did not know that mouseUP fired. Continued to draw despite mouse UP.
+ // it is bettr than
+ // $canvas.bind('mouseout', drawEndHandler)
+ // because we don't want to break the stroke where user accidentally gets ouside and wants to get back in quickly.
+ eventTokens[apinamespace + '.windowmouseup'] = globalEvents.subscribe(
+ apinamespace + '.windowmouseup'
+ , movementHandlers.drawEndHandler
+ )
+
+ this.events.publish(apinamespace+'.attachingEventHandlers')
+
+ // If we have proportional width, we sign up to events broadcasting "window resized" and checking if
+ // parent's width changed. If so, we (1) extract settings + data from current signature pad,
+ // (2) remove signature pad from parent, and (3) reinit new signature pad at new size with same settings, (rescaled) data.
+ conditionallyLinkCanvasResizeToWindowResize.call(
+ this
+ , this
+ , settings.width.toString(10)
+ , apinamespace, globalEvents
+ )
+
+ // end of event handlers.
+ // ===============================
+
+ this.resetCanvas(settings.data)
+
+ // resetCanvas renders the data on the screen and fires ONE "change" event
+ // if there is data. If you have controls that rely on "change" firing
+ // attach them to something that runs before this.resetCanvas, like
+ // apinamespace+'.attachingEventHandlers' that fires a bit higher.
+ this.events.publish(apinamespace+'.initialized')
+
+ return this
+} // end of initBase
+
+//=========================================================================
+// jSignatureClass's methods and supporting fn's
+
+jSignatureClass.prototype.resetCanvas = function(data){
+ var canvas = this.canvas
+ , settings = this.settings
+ , ctx = this.canvasContext
+ , isCanvasEmulator = this.isCanvasEmulator
+
+ , cw = canvas.width
+ , ch = canvas.height
+
+ // preparing colors, drawing area
+
+ ctx.clearRect(0, 0, cw + 30, ch + 30)
+
+ ctx.shadowColor = ctx.fillStyle = settings['background-color']
+ if (isCanvasEmulator){
+ // FLashCanvas fills with Black by default, covering up the parent div's background
+ // hence we refill
+ ctx.fillRect(0,0,cw + 30, ch + 30)
+ }
+
+ ctx.lineWidth = Math.ceil(parseInt(settings.lineWidth, 10))
+ ctx.lineCap = ctx.lineJoin = "round"
+
+ // signature line
+ ctx.strokeStyle = settings['decor-color']
+ ctx.shadowOffsetX = 0
+ ctx.shadowOffsetY = 0
+ var lineoffset = Math.round( ch / 5 )
+ basicLine(ctx, lineoffset * 1.5, ch - lineoffset, cw - (lineoffset * 1.5), ch - lineoffset)
+ ctx.strokeStyle = settings.color
+
+ if (!isCanvasEmulator){
+ ctx.shadowColor = ctx.strokeStyle
+ ctx.shadowOffsetX = ctx.lineWidth * 0.5
+ ctx.shadowOffsetY = ctx.lineWidth * -0.6
+ ctx.shadowBlur = 0
+ }
+
+ // setting up new dataEngine
+
+ if (!data) { data = [] }
+
+ var dataEngine = this.dataEngine = new DataEngine(
+ data
+ , this
+ , strokeStartCallback
+ , strokeAddCallback
+ , strokeEndCallback
+ )
+
+ settings.data = data // onwindowresize handler uses it, i think.
+ $(canvas).data(apinamespace+'.data', data)
+ .data(apinamespace+'.settings', settings)
+
+ // we fire "change" event on every change in data.
+ // setting this up:
+ dataEngine.changed = (function(target, events, apinamespace) {
+ 'use strict'
+ return function() {
+ events.publish(apinamespace+'.change')
+ target.trigger('change')
+ }
+ })(this.$parent, this.events, apinamespace)
+ // let's trigger change on all data reloads
+ dataEngine.changed()
+
+ // import filters will be passing this back as indication of "we rendered"
+ return true
+}
+
+function initializeCanvasEmulator(canvas){
+ if (canvas.getContext){
+ return false
+ } else {
+ // for cases when jSignature, FlashCanvas is inserted
+ // from one window into another (child iframe)
+ // 'window' and 'FlashCanvas' may be stuck behind
+ // in that other parent window.
+ // we need to find it
+ var window = canvas.ownerDocument.parentWindow
+ var FC = window.FlashCanvas ?
+ canvas.ownerDocument.parentWindow.FlashCanvas :
+ (
+ typeof FlashCanvas === "undefined" ?
+ undefined :
+ FlashCanvas
+ )
+
+ if (FC) {
+ canvas = FC.initElement(canvas)
+
+ var zoom = 1
+ // FlashCanvas uses flash which has this annoying habit of NOT scaling with page zoom.
+ // It matches pixel-to-pixel to screen instead.
+ // Since we are targeting ONLY IE 7, 8 with FlashCanvas, we will test the zoom only the IE8, IE7 way
+ if (window && window.screen && window.screen.deviceXDPI && window.screen.logicalXDPI){
+ zoom = window.screen.deviceXDPI * 1.0 / window.screen.logicalXDPI
+ }
+ if (zoom !== 1){
+ try {
+ // We effectively abuse the brokenness of FlashCanvas and force the flash rendering surface to
+ // occupy larger pixel dimensions than the wrapping, scaled up DIV and Canvas elems.
+ $(canvas).children('object').get(0).resize(Math.ceil(canvas.width * zoom), Math.ceil(canvas.height * zoom))
+ // And by applying "scale" transformation we can talk "browser pixels" to FlashCanvas
+ // and have it translate the "browser pixels" to "screen pixels"
+ canvas.getContext('2d').scale(zoom, zoom)
+ // Note to self: don't reuse Canvas element. Repeated "scale" are cumulative.
+ } catch (ex) {}
+ }
+ return true
+ } else {
+ throw new Error("Canvas element does not support 2d context. jSignature cannot proceed.")
+ }
+ }
+
+}
+
+jSignatureClass.prototype.initializeCanvas = function(settings) {
+ // ===========
+ // Init + Sizing code
+
+ var canvas = document.createElement('canvas')
+ , $canvas = $(canvas)
+
+ // We cannot work with circular dependency
+ if (settings.width === settings.height && settings.height === 'ratio') {
+ settings.width = '100%'
+ }
+
+ $canvas.css(
+ 'margin'
+ , 0
+ ).css(
+ 'padding'
+ , 0
+ ).css(
+ 'border'
+ , 'none'
+ ).css(
+ 'height'
+ , settings.height === 'ratio' || !settings.height ? 1 : settings.height.toString(10)
+ ).css(
+ 'width'
+ , settings.width === 'ratio' || !settings.width ? 1 : settings.width.toString(10)
+ )
+
+ $canvas.appendTo(this.$parent)
+
+ // we could not do this until canvas is rendered (appended to DOM)
+ if (settings.height === 'ratio') {
+ $canvas.css(
+ 'height'
+ , Math.round( $canvas.width() / settings.sizeRatio )
+ )
+ } else if (settings.width === 'ratio') {
+ $canvas.css(
+ 'width'
+ , Math.round( $canvas.height() * settings.sizeRatio )
+ )
+ }
+
+ $canvas.addClass(apinamespace)
+
+ // canvas's drawing area resolution is independent from canvas's size.
+ // pixels are just scaled up or down when internal resolution does not
+ // match external size. So...
+
+ canvas.width = $canvas.width()
+ canvas.height = $canvas.height()
+
+ // Special case Sizing code
+
+ this.isCanvasEmulator = initializeCanvasEmulator(canvas)
+
+ // End of Sizing Code
+ // ===========
+
+ // normally select preventer would be short, but
+ // Canvas emulator on IE does NOT provide value for Event. Hence this convoluted line.
+ canvas.onselectstart = function(e){if(e && e.preventDefault){e.preventDefault()}; if(e && e.stopPropagation){e.stopPropagation()}; return false;}
+
+ return canvas
+}
+
+
+var GlobalJSignatureObjectInitializer = function(window){
+
+ var globalEvents = new PubSubClass()
+
+ // common "window resized" event listener.
+ // jSignature instances will subscribe to this chanel.
+ // to resize themselves when needed.
+ ;(function(globalEvents, apinamespace, $, window){
+ 'use strict'
+
+ var resizetimer
+ , runner = function(){
+ globalEvents.publish(
+ apinamespace + '.parentresized'
+ )
+ }
+
+ // jSignature knows how to resize its content when its parent is resized
+ // window resize is the only way we can catch resize events though...
+ $(window).bind('resize.'+apinamespace, function(){
+ if (resizetimer) {
+ clearTimeout(resizetimer)
+ }
+ resizetimer = setTimeout(
+ runner
+ , 500
+ )
+ })
+ // when mouse exists canvas element and "up"s outside, we cannot catch it with
+ // callbacks attached to canvas. This catches it outside.
+ .bind('mouseup.'+apinamespace, function(e){
+ globalEvents.publish(
+ apinamespace + '.windowmouseup'
+ )
+ })
+
+ })(globalEvents, apinamespace, $, window)
+
+ var jSignatureInstanceExtensions = {
+
+ 'exampleExtension':function(extensionName){
+ // we are called very early in instance's life.
+ // right after the settings are resolved and
+ // jSignatureInstance.events is created
+ // and right before first ("jSignature.initializing") event is called.
+ // You don't really need to manupilate
+ // jSignatureInstance directly, just attach
+ // a bunch of events to jSignatureInstance.events
+ // (look at the source of jSignatureClass to see when these fire)
+ // and your special pieces of code will attach by themselves.
+
+ // this function runs every time a new instance is set up.
+ // this means every var you create will live only for one instance
+ // unless you attach it to something outside, like "window."
+ // and pick it up later from there.
+
+ // when globalEvents' events fire, 'this' is globalEvents object
+ // when jSignatureInstance's events fire, 'this' is jSignatureInstance
+
+ // Here,
+ // this = is new jSignatureClass's instance.
+
+ // The way you COULD approch setting this up is:
+ // if you have multistep set up, attach event to "jSignature.initializing"
+ // that attaches other events to be fired further lower the init stream.
+ // Or, if you know for sure you rely on only one jSignatureInstance's event,
+ // just attach to it directly
+
+ this.events.subscribe(
+ // name of the event
+ apinamespace + '.initializing'
+ // event handlers, can pass args too, but in majority of cases,
+ // 'this' which is jSignatureClass object instance pointer is enough to get by.
+ , function(){
+ if (this.settings.hasOwnProperty('non-existent setting category?')) {
+ console.log(extensionName + ' is here')
+ }
+ }
+ )
+ }
+
+ }
+
+ var exportplugins = {
+ 'default':function(data){return this.toDataURL()}
+ , 'native':function(data){return data}
+ , 'image':function(data){
+ /*this = canvas elem */
+ var imagestring = this.toDataURL()
+
+ if (typeof imagestring === 'string' &&
+ imagestring.length > 4 &&
+ imagestring.slice(0,5) === 'data:' &&
+ imagestring.indexOf(',') !== -1){
+
+ var splitterpos = imagestring.indexOf(',')
+
+ return [
+ imagestring.slice(5, splitterpos)
+ , imagestring.substr(splitterpos + 1)
+ ]
+ }
+ return []
+ }
+ }
+
+ // will be part of "importplugins"
+ function _renderImageOnCanvas( data, formattype, rerendercallable ) {
+ 'use strict'
+ // #1. Do NOT rely on this. No worky on IE
+ // (url max len + lack of base64 decoder + possibly other issues)
+ // #2. This does NOT affect what is captured as "signature" as far as vector data is
+ // concerned. This is treated same as "signature line" - i.e. completely ignored
+ // the only time you see imported image data exported is if you export as image.
+
+ // we do NOT call rerendercallable here (unlike in other import plugins)
+ // because importing image does absolutely nothing to the underlying vector data storage
+ // This could be a way to "import" old signatures stored as images
+ // This could also be a way to import extra decor into signature area.
+
+// var img = new Image()
+// // this = Canvas DOM elem. Not jQuery object. Not Canvas's parent div.
+// , c = this
+//
+// img.onload = function() {
+// var ctx = c.getContext("2d").drawImage(
+// img, 0, 0
+// , ( img.width < c.width) ? img.width : c.width
+// , ( img.height < c.height) ? img.height : c.height
+// )
+// }
+//
+// img.src = 'data:' + formattype + ',' + data
+
+ var c = new Image,
+ e = this;
+ c.onload = function() {
+ var a = e.getContext("2d"),
+ b = a.shadowColor;
+ a.shadowColor = "transparent";
+ a.drawImage(c, 0, 0, c.width < e.width ? c.width : e.width, c.height <
+ e.height ? c.height : e.height);
+ a.shadowColor = b
+ };
+ c.src = "data:" + formattype + "," + data
+ }
+
+ var importplugins = {
+ 'native':function(data, formattype, rerendercallable){
+ // we expect data as Array of objects of arrays here - whatever 'default' EXPORT plugin spits out.
+ // returning Truthy to indicate we are good, all updated.
+ rerendercallable( data )
+ }
+ , 'image': _renderImageOnCanvas
+ , 'image/png;base64': _renderImageOnCanvas
+ , 'image/jpeg;base64': _renderImageOnCanvas
+ , 'image/jpg;base64': _renderImageOnCanvas
+ }
+
+ function _clearDrawingArea( data ) {
+ this.find('canvas.'+apinamespace)
+ .add(this.filter('canvas.'+apinamespace))
+ .data(apinamespace+'.this').resetCanvas( data )
+ return this
+ }
+
+ function _setDrawingData( data, formattype ) {
+ var undef
+
+ if (formattype === undef && typeof data === 'string' && data.substr(0,5) === 'data:') {
+ formattype = data.slice(5).split(',')[0]
+ // 5 chars of "data:" + mimetype len + 1 "," char = all skipped.
+ data = data.slice(6 + formattype.length)
+ if (formattype === data) return
+ }
+
+ var $canvas = this.find('canvas.'+apinamespace).add(this.filter('canvas.'+apinamespace))
+
+ if (!importplugins.hasOwnProperty(formattype)){
+ throw new Error(apinamespace + " is unable to find import plugin with for format '"+ String(formattype) +"'")
+ } else if ($canvas.length !== 0){
+ importplugins[formattype].call(
+ $canvas[0]
+ , data
+ , formattype
+ , (function(jSignatureInstance){
+ return function(){ return jSignatureInstance.resetCanvas.apply(jSignatureInstance, arguments) }
+ })($canvas.data(apinamespace+'.this'))
+ )
+ }
+
+ return this
+ }
+
+ var elementIsOrphan = function(e){
+ var topOfDOM = false
+ e = e.parentNode
+ while (e && !topOfDOM){
+ topOfDOM = $(e).find(".o_form_view")
+ e = e.parentNode
+ }
+ return !topOfDOM
+ }
+
+ //These are exposed as methods under $obj.jSignature('methodname', *args)
+ var plugins = {'export':exportplugins, 'import':importplugins, 'instance': jSignatureInstanceExtensions}
+ , methods = {
+ 'init' : function( options ) {
+ return this.each( function() {
+ if (!elementIsOrphan(this)) {
+ new jSignatureClass(this, options, jSignatureInstanceExtensions)
+ }
+ })
+ }
+ , 'getSettings' : function() {
+ return this.find('canvas.'+apinamespace)
+ .add(this.filter('canvas.'+apinamespace))
+ .data(apinamespace+'.this').settings
+ }
+ // around since v1
+ , 'clear' : _clearDrawingArea
+ // was mistakenly introduced instead of 'clear' in v2
+ , 'reset' : _clearDrawingArea
+ , 'addPlugin' : function(pluginType, pluginName, callable){
+ if (plugins.hasOwnProperty(pluginType)){
+ plugins[pluginType][pluginName] = callable
+ }
+ return this
+ }
+ , 'listPlugins' : function(pluginType){
+ var answer = []
+ if (plugins.hasOwnProperty(pluginType)){
+ var o = plugins[pluginType]
+ for (var k in o){
+ if (o.hasOwnProperty(k)){
+ answer.push(k)
+ }
+ }
+ }
+ return answer
+ }
+ , 'getData' : function( formattype ) {
+ var undef, $canvas=this.find('canvas.'+apinamespace).add(this.filter('canvas.'+apinamespace))
+ if (formattype === undef) formattype = 'default'
+ if ($canvas.length !== 0 && exportplugins.hasOwnProperty(formattype)){
+ return exportplugins[formattype].call(
+ $canvas.get(0) // canvas dom elem
+ , $canvas.data(apinamespace+'.data') // raw signature data as array of objects of arrays
+ )
+ }
+ }
+ // around since v1. Took only one arg - data-url-formatted string with (likely png of) signature image
+ , 'importData' : _setDrawingData
+ // was mistakenly introduced instead of 'importData' in v2
+ , 'setData' : _setDrawingData
+ // this is one and same instance for all jSignature.
+ , 'globalEvents' : function(){return globalEvents}
+ // there will be a separate one for each jSignature instance.
+ , 'events' : function() {
+ return this.find('canvas.'+apinamespace)
+ .add(this.filter('canvas.'+apinamespace))
+ .data(apinamespace+'.this').events
+ }
+ } // end of methods declaration.
+
+ $.fn[apinamespace] = function(method) {
+ 'use strict'
+ if ( !method || typeof method === 'object' ) {
+ return methods.init.apply( this, arguments )
+ } else if ( typeof method === 'string' && methods[method] ) {
+ return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ))
+ } else {
+ $.error( 'Method ' + String(method) + ' does not exist on jQuery.' + apinamespace )
+ }
+ }
+
+} // end of GlobalJSignatureObjectInitializer
+
+GlobalJSignatureObjectInitializer(window)
+
+})();
diff --git a/odex30_base/web_digital_sign/static/src/js/digital_sign.js b/odex30_base/web_digital_sign/static/src/js/digital_sign.js
new file mode 100644
index 0000000..be44ca5
--- /dev/null
+++ b/odex30_base/web_digital_sign/static/src/js/digital_sign.js
@@ -0,0 +1,128 @@
+/** @odoo-module */
+
+import { registry } from "@web/core/registry";
+import { BinaryField, binaryField } from "@web/views/fields/binary/binary_field";
+import { onWillStart, onMounted } from "@odoo/owl";
+import { loadJS } from "@web/core/assets";
+import { isBinarySize, toBase64Length } from "@web/core/utils/binary";
+import { useService } from "@web/core/utils/hooks";
+
+export class FieldSignature extends BinaryField {
+
+ setup() {
+ super.setup();
+ this.empty_sign = [];
+ this.sign_options = {
+ 'decor-color': '#D1D0CE',
+ 'color': '#000',
+ 'background-color': '#fff',
+ 'height': '150',
+ 'width': '550',
+ };
+ this.orm = useService("orm");
+
+ onWillStart(async () => {
+ await loadJS("/web_digital_sign/static/lib/jSignature/jSignatureCustom.js");
+ });
+ onMounted(async () => {
+ this.renderSignature();
+ $(".signature").jSignature("init", this.sign_options);
+ $(".signature").change(() => {
+ this.save_sign()
+ });
+ this.empty_sign = $(".signature").jSignature("getData",
+ 'image');
+ })
+ }
+
+ async renderSignature() {
+ var url = this.props.placeholder;
+ if (this.props.record.data.signature && !isBinarySize(this.props.record.data[this.props.name])) {
+ url = 'data:image/png;base64,' + this.props.record.data[this.props.name]
+ } else if (this.props.record?.data?.signature) {
+ this.field = {
+ model: this.props.record.resModel,
+ id: this.props.record.resId,
+ field: this.props.name,
+ filename_field: this.fileName,
+ filename: this.fileName || "",
+ data: isBinarySize(this.props.record.data[this.props.name])
+ ? null
+ : this.props.record.data[this.props.name],
+ };
+ } else {
+ url = this.placeholder;
+ }
+ if (!this.props.readonly) {
+ $('> img').remove();
+ if (this.props.record.data.signature) {
+ const binary_image = await this.orm.call(this.field.model, 'read', [this.field.id, [this.field.field]],)
+ if (binary_image) {
+ self.$(".signature").jSignature("clear");
+ self.$(".signature").jSignature("setData",
+ 'data:image/png;base64,' + binary_image[0].signature);
+ }
+ } else {
+ $('> img').remove();
+ $('.signature > canvas').remove();
+ var sign_options = {
+ 'decor-color': '#D1D0CE',
+ 'color': '#000',
+ 'background-color': '#fff',
+ 'height': '150',
+ 'width': '550',
+ };
+ }
+ } else if (this.mode === 'create') {
+ $('> img').remove();
+ $('> canvas').remove();
+ if (!this.value) {
+ $(".signature").empty().jSignature("init", {
+ 'decor-color': '#D1D0CE',
+ 'color': '#000',
+ 'background-color': '#fff',
+ 'height': '150',
+ 'width': '550',
+ });
+ }
+ }
+ }
+
+ save_sign() {
+ var self = this;
+ $('> img').remove();
+ var signature = $(".signature").jSignature("getData", 'image');
+ var is_empty = signature ?
+ self.empty_sign[1] === signature[1] :
+ false;
+ if (!is_empty && typeof signature !== "undefined" && signature[1]) {
+ const changes = { [this.props.name]: signature[1] || false };
+ this.props.record.update(changes);
+ }
+ }
+
+ sign_clean() {
+ $(".signature > canvas").remove();
+ $('> img').remove();
+ $(".signature").attr("tabindex", "0");
+ var sign_options = {
+ 'decor-color': '#D1D0CE',
+ 'color': '#000',
+ 'background-color': '#fff',
+ 'height': '150',
+ 'width': '550',
+ 'clear': true,
+ };
+ $(".signature").jSignature(sign_options);
+ $(".signature").focus();
+ }
+
+}
+FieldSignature.template = "web_digital_sign.FieldSignature";
+
+export const FieldSignatureField = {
+ ...binaryField,
+ component: FieldSignature,
+};
+
+registry.category("fields").add("digital_signature", FieldSignatureField);
\ No newline at end of file
diff --git a/odex30_base/web_digital_sign/static/src/xml/digital_sign.xml b/odex30_base/web_digital_sign/static/src/xml/digital_sign.xml
new file mode 100644
index 0000000..344d558
--- /dev/null
+++ b/odex30_base/web_digital_sign/static/src/xml/digital_sign.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
Draw your signature
+
+
+ Clear
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/odex30_base/web_digital_sign/views/users_view.xml b/odex30_base/web_digital_sign/views/users_view.xml
new file mode 100644
index 0000000..3897bbc
--- /dev/null
+++ b/odex30_base/web_digital_sign/views/users_view.xml
@@ -0,0 +1,31 @@
+
+
+
+
+ inherited.res.users.form
+ res.users
+
+
+
+
+
+
+
+
+
+
+
+ inherited.res.users.preferences.form
+ res.users
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex30_base/web_environment_ribbon/README.rst b/odex30_base/web_environment_ribbon/README.rst
new file mode 100644
index 0000000..ca063d8
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/README.rst
@@ -0,0 +1,107 @@
+======================
+Web Environment Ribbon
+======================
+
+..
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! This file is generated by oca-gen-addon-readme !!
+ !! changes will be overwritten. !!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! source digest: sha256:dcef2e754e7fca172c9bb05f3ad77530a26a66a9d729661c343d1f2b42d3c9f0
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
+ :target: https://odoo-community.org/page/development-status
+ :alt: Beta
+.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+ :alt: License: AGPL-3
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
+ :target: https://github.com/OCA/web/tree/18.0/web_environment_ribbon
+ :alt: OCA/web
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+ :target: https://translation.odoo-community.org/projects/web-18-0/web-18-0-web_environment_ribbon
+ :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=18.0
+ :alt: Try me on Runboat
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
+Mark a Test Environment with a red ribbon on the top left corner in
+every page
+
+**Table of contents**
+
+.. contents::
+ :local:
+
+Configuration
+=============
+
+- You can change the ribbon's name ("TEST") by editing the default
+ system parameter "ribbon.name" (in the menu Settings > Technical >
+ Parameters > System Parameters) To hide the ribbon, set this parameter
+ to "False" or delete it and refresh the page.
+
+- You can customize the ribbon color and background color through system
+ parameters: "ribbon.color", "ribbon.background.color". Fill with valid
+ CSS colors or just set to "False" to use default values.
+
+- You can add the database name in the ribbon by adding "{db_name}" in
+ the system parameter "ribbon.name".
+
+ `configure_1 <../static/description/configure_1.png>`__
+
+Usage
+=====
+
+To use this module, you need only to install it. After installation, a
+red ribbon will be visible on top left corner of every Odoo backend page
+
+Bug Tracker
+===========
+
+Bugs are tracked on `GitHub Issues `_.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us to smash it by providing a detailed and welcomed
+`feedback `_.
+
+Do not contact contributors directly about support or help with technical issues.
+
+Credits
+=======
+
+Authors
+-------
+
+* Francesco OpenCode Apruzzese
+* Tecnativa
+
+Contributors
+------------
+
+- Francesco Apruzzese
+- Javi Melendez
+- Antonio Espinosa
+- Thomas Binsfeld
+- Xavier Jiménez
+- Dennis Sluijk
+- Eric Lembregts
+
+Maintainers
+-----------
+
+This module is maintained by the OCA.
+
+.. image:: https://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: https://odoo-community.org
+
+OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
+This module is part of the `OCA/web `_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/odex30_base/web_environment_ribbon/__init__.py b/odex30_base/web_environment_ribbon/__init__.py
new file mode 100644
index 0000000..0650744
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/__init__.py
@@ -0,0 +1 @@
+from . import models
diff --git a/odex30_base/web_environment_ribbon/__manifest__.py b/odex30_base/web_environment_ribbon/__manifest__.py
new file mode 100644
index 0000000..64edf0c
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/__manifest__.py
@@ -0,0 +1,27 @@
+# Copyright 2015 Francesco OpenCode Apruzzese
+# Copyright 2016 Antonio Espinosa
+# Copyright 2017 Thomas Binsfeld
+# Copyright 2017 Xavier Jiménez
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+{
+ "name": "Web Environment Ribbon",
+ "version": "18.0.1.0.3",
+ "category": "Web",
+ "author": "Francesco OpenCode Apruzzese, "
+ "Tecnativa, "
+ "Odoo Community Association (OCA)",
+ "website": "https://github.com/OCA/web",
+ "license": "AGPL-3",
+ "depends": ["web"],
+ "data": [
+ "data/ribbon_data.xml",
+ ],
+ "auto_install": False,
+ "installable": True,
+ "assets": {
+ "web.assets_backend": [
+ "web_environment_ribbon/static/src/components/environment_ribbon/*",
+ ],
+ },
+}
diff --git a/odex30_base/web_environment_ribbon/data/ribbon_data.xml b/odex30_base/web_environment_ribbon/data/ribbon_data.xml
new file mode 100644
index 0000000..72a5024
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/data/ribbon_data.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ribbon.name
+ ({db_name})]]>
+
+
+
+ ribbon.color
+ #f0f0f0
+
+
+
+ ribbon.background.color
+ rgba(255,0,0,.6)
+
+
diff --git a/odex30_base/web_environment_ribbon/i18n/ca.po b/odex30_base/web_environment_ribbon/i18n/ca.po
new file mode 100644
index 0000000..57a4eb2
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/i18n/ca.po
@@ -0,0 +1,31 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * web_environment_ribbon
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 13.0\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2020-02-02 22:13+0000\n"
+"Last-Translator: eduardgm \n"
+"Language-Team: none\n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 3.10\n"
+
+#. module: web_environment_ribbon
+#: model:ir.model,name:web_environment_ribbon.model_web_environment_ribbon_backend
+msgid "Web Environment Ribbon Backend"
+msgstr "Backend \"Web Environment Ribbon\""
+
+#~ msgid "Display Name"
+#~ msgstr "Nom mostrat"
+
+#~ msgid "ID"
+#~ msgstr "ID"
+
+#~ msgid "Last Modified on"
+#~ msgstr "Última modificació el"
diff --git a/odex30_base/web_environment_ribbon/i18n/de.po b/odex30_base/web_environment_ribbon/i18n/de.po
new file mode 100644
index 0000000..f89b15d
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/i18n/de.po
@@ -0,0 +1,34 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * web_environment_ribbon
+#
+# Translators:
+# Niki Waibel , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-07-13 16:06+0000\n"
+"PO-Revision-Date: 2020-07-22 12:19+0000\n"
+"Last-Translator: c2cdidier \n"
+"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 3.10\n"
+
+#. module: web_environment_ribbon
+#: model:ir.model,name:web_environment_ribbon.model_web_environment_ribbon_backend
+msgid "Web Environment Ribbon Backend"
+msgstr "Web-Umgebung Ribbon-Backend"
+
+#~ msgid "Display Name"
+#~ msgstr "Anzeigename"
+
+#~ msgid "ID"
+#~ msgstr "ID"
+
+#~ msgid "Last Modified on"
+#~ msgstr "Zuletzt geändert am"
diff --git a/odex30_base/web_environment_ribbon/i18n/es.po b/odex30_base/web_environment_ribbon/i18n/es.po
new file mode 100644
index 0000000..39ffdbe
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/i18n/es.po
@@ -0,0 +1,31 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * web_environment_ribbon
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 12.0\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2019-08-04 17:44+0000\n"
+"Last-Translator: eduardgm \n"
+"Language-Team: none\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 3.7.1\n"
+
+#. module: web_environment_ribbon
+#: model:ir.model,name:web_environment_ribbon.model_web_environment_ribbon_backend
+msgid "Web Environment Ribbon Backend"
+msgstr "Backend \"Web Environment Ribbon\""
+
+#~ msgid "Display Name"
+#~ msgstr "Nombre mostrado"
+
+#~ msgid "ID"
+#~ msgstr "ID"
+
+#~ msgid "Last Modified on"
+#~ msgstr "Última modificación el"
diff --git a/odex30_base/web_environment_ribbon/i18n/fr.po b/odex30_base/web_environment_ribbon/i18n/fr.po
new file mode 100644
index 0000000..905b8dc
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/i18n/fr.po
@@ -0,0 +1,34 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * web_environment_ribbon
+#
+# Translators:
+# OCA Transbot , 2017
+# Quentin THEURET , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-07-26 02:44+0000\n"
+"PO-Revision-Date: 2017-07-26 02:44+0000\n"
+"Last-Translator: Quentin THEURET , 2017\n"
+"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. module: web_environment_ribbon
+#: model:ir.model,name:web_environment_ribbon.model_web_environment_ribbon_backend
+msgid "Web Environment Ribbon Backend"
+msgstr "Backend du bandeau de l'environnement Web"
+
+#~ msgid "Display Name"
+#~ msgstr "Nom affiché"
+
+#~ msgid "ID"
+#~ msgstr "ID"
+
+#~ msgid "Last Modified on"
+#~ msgstr "Dernière modification le"
diff --git a/odex30_base/web_environment_ribbon/i18n/hr.po b/odex30_base/web_environment_ribbon/i18n/hr.po
new file mode 100644
index 0000000..b038e60
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/i18n/hr.po
@@ -0,0 +1,35 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * web_environment_ribbon
+#
+# Translators:
+# Bole , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-07-13 16:06+0000\n"
+"PO-Revision-Date: 2023-01-04 02:41+0000\n"
+"Last-Translator: Bole \n"
+"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n"
+"Language: hr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Generator: Weblate 4.14.1\n"
+
+#. module: web_environment_ribbon
+#: model:ir.model,name:web_environment_ribbon.model_web_environment_ribbon_backend
+msgid "Web Environment Ribbon Backend"
+msgstr "Pozadina trake okoline"
+
+#~ msgid "Display Name"
+#~ msgstr "Naziv za prikaz"
+
+#~ msgid "ID"
+#~ msgstr "ID"
+
+#~ msgid "Last Modified on"
+#~ msgstr "Zadnje modificirano"
diff --git a/odex30_base/web_environment_ribbon/i18n/it.po b/odex30_base/web_environment_ribbon/i18n/it.po
new file mode 100644
index 0000000..781a9b9
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/i18n/it.po
@@ -0,0 +1,22 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * web_environment_ribbon
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 17.0\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2024-02-04 16:34+0000\n"
+"Last-Translator: mymage \n"
+"Language-Team: none\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.17\n"
+
+#. module: web_environment_ribbon
+#: model:ir.model,name:web_environment_ribbon.model_web_environment_ribbon_backend
+msgid "Web Environment Ribbon Backend"
+msgstr "Nastro ambiente web backend"
diff --git a/odex30_base/web_environment_ribbon/i18n/nl.po b/odex30_base/web_environment_ribbon/i18n/nl.po
new file mode 100644
index 0000000..16b808e
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/i18n/nl.po
@@ -0,0 +1,31 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * web_environment_ribbon
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 14.0\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2021-05-17 20:47+0000\n"
+"Last-Translator: Bosd \n"
+"Language-Team: none\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.3.2\n"
+
+#. module: web_environment_ribbon
+#: model:ir.model,name:web_environment_ribbon.model_web_environment_ribbon_backend
+msgid "Web Environment Ribbon Backend"
+msgstr "Web Environment Ribbon Backend"
+
+#~ msgid "Display Name"
+#~ msgstr "Weergavenaam"
+
+#~ msgid "ID"
+#~ msgstr "ID"
+
+#~ msgid "Last Modified on"
+#~ msgstr "Laatst Gewijzigd op"
diff --git a/odex30_base/web_environment_ribbon/i18n/nl_NL.po b/odex30_base/web_environment_ribbon/i18n/nl_NL.po
new file mode 100644
index 0000000..4db8e2b
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/i18n/nl_NL.po
@@ -0,0 +1,35 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * web_environment_ribbon
+#
+# Translators:
+# Peter Hageman , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-07-13 16:06+0000\n"
+"PO-Revision-Date: 2021-04-22 15:47+0000\n"
+"Last-Translator: Bosd \n"
+"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/"
+"teams/23907/nl_NL/)\n"
+"Language: nl_NL\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.3.2\n"
+
+#. module: web_environment_ribbon
+#: model:ir.model,name:web_environment_ribbon.model_web_environment_ribbon_backend
+msgid "Web Environment Ribbon Backend"
+msgstr ""
+
+#~ msgid "Display Name"
+#~ msgstr "Weergavenaam"
+
+#~ msgid "ID"
+#~ msgstr "ID"
+
+#~ msgid "Last Modified on"
+#~ msgstr "Laatst bijgewerkt op"
diff --git a/odex30_base/web_environment_ribbon/i18n/pt.po b/odex30_base/web_environment_ribbon/i18n/pt.po
new file mode 100644
index 0000000..9a8c210
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/i18n/pt.po
@@ -0,0 +1,31 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * web_environment_ribbon
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 12.0\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2019-08-12 11:44+0000\n"
+"Last-Translator: Pedro Castro Silva \n"
+"Language-Team: none\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 3.7.1\n"
+
+#. module: web_environment_ribbon
+#: model:ir.model,name:web_environment_ribbon.model_web_environment_ribbon_backend
+msgid "Web Environment Ribbon Backend"
+msgstr ""
+
+#~ msgid "Display Name"
+#~ msgstr "Nome a Exibir"
+
+#~ msgid "ID"
+#~ msgstr "ID"
+
+#~ msgid "Last Modified on"
+#~ msgstr "Última Modificação em"
diff --git a/odex30_base/web_environment_ribbon/i18n/pt_BR.po b/odex30_base/web_environment_ribbon/i18n/pt_BR.po
new file mode 100644
index 0000000..5af7c82
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/i18n/pt_BR.po
@@ -0,0 +1,35 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * web_environment_ribbon
+#
+# Translators:
+# Rodrigo de Almeida Sottomaior Macedo , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-07-13 16:06+0000\n"
+"PO-Revision-Date: 2018-08-03 12:34+0000\n"
+"Last-Translator: Rodrigo Macedo \n"
+"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/"
+"teams/23907/pt_BR/)\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 3.1.1\n"
+
+#. module: web_environment_ribbon
+#: model:ir.model,name:web_environment_ribbon.model_web_environment_ribbon_backend
+msgid "Web Environment Ribbon Backend"
+msgstr "Back-end da fita do ambiente da Web"
+
+#~ msgid "Display Name"
+#~ msgstr "Exibir Nome"
+
+#~ msgid "ID"
+#~ msgstr "Identificação"
+
+#~ msgid "Last Modified on"
+#~ msgstr "Última Modificação em"
diff --git a/odex30_base/web_environment_ribbon/i18n/sl.po b/odex30_base/web_environment_ribbon/i18n/sl.po
new file mode 100644
index 0000000..5b5182d
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/i18n/sl.po
@@ -0,0 +1,28 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * web_environment_ribbon
+#
+# Translators:
+# OCA Transbot , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 10.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-07-13 16:06+0000\n"
+"PO-Revision-Date: 2017-07-13 16:06+0000\n"
+"Last-Translator: OCA Transbot , 2017\n"
+"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n"
+"Language: sl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || "
+"n%100==4 ? 2 : 3);\n"
+
+#. module: web_environment_ribbon
+#: model:ir.model,name:web_environment_ribbon.model_web_environment_ribbon_backend
+msgid "Web Environment Ribbon Backend"
+msgstr ""
+
+#~ msgid "ID"
+#~ msgstr "ID"
diff --git a/odex30_base/web_environment_ribbon/i18n/web_environment_ribbon.pot b/odex30_base/web_environment_ribbon/i18n/web_environment_ribbon.pot
new file mode 100644
index 0000000..f441542
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/i18n/web_environment_ribbon.pot
@@ -0,0 +1,19 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * web_environment_ribbon
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 18.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: web_environment_ribbon
+#: model:ir.model,name:web_environment_ribbon.model_web_environment_ribbon_backend
+msgid "Web Environment Ribbon Backend"
+msgstr ""
diff --git a/odex30_base/web_environment_ribbon/i18n/zh.po b/odex30_base/web_environment_ribbon/i18n/zh.po
new file mode 100644
index 0000000..0a6c105
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/i18n/zh.po
@@ -0,0 +1,20 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * web_environment_ribbon
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 16.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: zh\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. module: web_environment_ribbon
+#: model:ir.model,name:web_environment_ribbon.model_web_environment_ribbon_backend
+msgid "Web Environment Ribbon Backend"
+msgstr ""
diff --git a/odex30_base/web_environment_ribbon/i18n/zh_CN.po b/odex30_base/web_environment_ribbon/i18n/zh_CN.po
new file mode 100644
index 0000000..f5a4fd3
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/i18n/zh_CN.po
@@ -0,0 +1,31 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * web_environment_ribbon
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 12.0\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2019-09-01 12:52+0000\n"
+"Last-Translator: 黎伟杰 <674416404@qq.com>\n"
+"Language-Team: none\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 3.8\n"
+
+#. module: web_environment_ribbon
+#: model:ir.model,name:web_environment_ribbon.model_web_environment_ribbon_backend
+msgid "Web Environment Ribbon Backend"
+msgstr "Web环境功能区后台"
+
+#~ msgid "Display Name"
+#~ msgstr "显示名称"
+
+#~ msgid "ID"
+#~ msgstr "ID"
+
+#~ msgid "Last Modified on"
+#~ msgstr "最后修改时间"
diff --git a/odex30_base/web_environment_ribbon/models/__init__.py b/odex30_base/web_environment_ribbon/models/__init__.py
new file mode 100644
index 0000000..18368b4
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/models/__init__.py
@@ -0,0 +1 @@
+from . import web_environment_ribbon_backend
diff --git a/odex30_base/web_environment_ribbon/models/web_environment_ribbon_backend.py b/odex30_base/web_environment_ribbon/models/web_environment_ribbon_backend.py
new file mode 100644
index 0000000..2174355
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/models/web_environment_ribbon_backend.py
@@ -0,0 +1,35 @@
+# Copyright 2017 ACSONE SA/NV
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from odoo import api, models
+
+
+class WebEnvironmentRibbonBackend(models.AbstractModel):
+ _name = "web.environment.ribbon.backend"
+ _description = "Web Environment Ribbon Backend"
+
+ @api.model
+ def _prepare_ribbon_format_vals(self):
+ return {"db_name": self.env.cr.dbname}
+
+ @api.model
+ def _prepare_ribbon_name(self):
+ name_tmpl = self.env["ir.config_parameter"].sudo().get_param("ribbon.name")
+ vals = self._prepare_ribbon_format_vals()
+ return name_tmpl and name_tmpl.format(**vals) or name_tmpl
+
+ @api.model
+ def get_environment_ribbon(self):
+ """
+ This method returns the ribbon data from ir config parameters
+ :return: dictionary
+ """
+ ir_config_model = self.env["ir.config_parameter"]
+ name = self._prepare_ribbon_name()
+ return {
+ "name": name,
+ "color": ir_config_model.sudo().get_param("ribbon.color"),
+ "background_color": ir_config_model.sudo().get_param(
+ "ribbon.background.color"
+ ),
+ }
diff --git a/odex30_base/web_environment_ribbon/pyproject.toml b/odex30_base/web_environment_ribbon/pyproject.toml
new file mode 100644
index 0000000..4231d0c
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["whool"]
+build-backend = "whool.buildapi"
diff --git a/odex30_base/web_environment_ribbon/readme/CONFIGURE.md b/odex30_base/web_environment_ribbon/readme/CONFIGURE.md
new file mode 100644
index 0000000..d7789f4
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/readme/CONFIGURE.md
@@ -0,0 +1,11 @@
+- You can change the ribbon's name ("TEST") by editing the default
+ system parameter "ribbon.name" (in the menu Settings \> Technical \> Parameters \>
+ System Parameters) To hide the ribbon, set this parameter to "False"
+ or delete it and refresh the page.
+- You can customize the ribbon color and background color through system
+ parameters: "ribbon.color", "ribbon.background.color". Fill with valid
+ CSS colors or just set to "False" to use default values.
+- You can add the database name in the ribbon by adding "{db_name}" in
+ the system parameter "ribbon.name".
+
+ [configure_1](../static/description/configure_1.png)
diff --git a/odex30_base/web_environment_ribbon/readme/CONTRIBUTORS.md b/odex30_base/web_environment_ribbon/readme/CONTRIBUTORS.md
new file mode 100644
index 0000000..b850a77
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/readme/CONTRIBUTORS.md
@@ -0,0 +1,7 @@
+- Francesco Apruzzese \<\>
+- Javi Melendez \<\>
+- Antonio Espinosa \<\>
+- Thomas Binsfeld \<\>
+- Xavier Jiménez \<\>
+- Dennis Sluijk \<\>
+- Eric Lembregts \<\>
diff --git a/odex30_base/web_environment_ribbon/readme/DESCRIPTION.md b/odex30_base/web_environment_ribbon/readme/DESCRIPTION.md
new file mode 100644
index 0000000..e9a7e1e
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/readme/DESCRIPTION.md
@@ -0,0 +1,2 @@
+Mark a Test Environment with a red ribbon on the top left corner in
+every page
diff --git a/odex30_base/web_environment_ribbon/readme/USAGE.md b/odex30_base/web_environment_ribbon/readme/USAGE.md
new file mode 100644
index 0000000..add072e
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/readme/USAGE.md
@@ -0,0 +1,2 @@
+To use this module, you need only to install it. After installation, a
+red ribbon will be visible on top left corner of every Odoo backend page
diff --git a/odex30_base/web_environment_ribbon/static/description/configure_1.png b/odex30_base/web_environment_ribbon/static/description/configure_1.png
new file mode 100644
index 0000000..55ceff9
Binary files /dev/null and b/odex30_base/web_environment_ribbon/static/description/configure_1.png differ
diff --git a/odex30_base/web_environment_ribbon/static/description/icon.png b/odex30_base/web_environment_ribbon/static/description/icon.png
new file mode 100644
index 0000000..78b52ae
Binary files /dev/null and b/odex30_base/web_environment_ribbon/static/description/icon.png differ
diff --git a/odex30_base/web_environment_ribbon/static/description/index.html b/odex30_base/web_environment_ribbon/static/description/index.html
new file mode 100644
index 0000000..6c231bc
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/static/description/index.html
@@ -0,0 +1,456 @@
+
+
+
+
+
+Web Environment Ribbon
+
+
+
+
+
Web Environment Ribbon
+
+
+
+
Mark a Test Environment with a red ribbon on the top left corner in
+every page
+
Table of contents
+
+
+
+
+You can change the ribbon’s name (“TEST”) by editing the default
+system parameter “ribbon.name” (in the menu Settings > Technical >
+Parameters > System Parameters) To hide the ribbon, set this parameter
+to “False” or delete it and refresh the page.
+
+You can customize the ribbon color and background color through system
+parameters: “ribbon.color”, “ribbon.background.color”. Fill with valid
+CSS colors or just set to “False” to use default values.
+
+You can add the database name in the ribbon by adding “{db_name}” in
+the system parameter “ribbon.name”.
+configure_1
+
+
+
+
+
+
To use this module, you need only to install it. After installation, a
+red ribbon will be visible on top left corner of every Odoo backend page
+
+
+
+
Bugs are tracked on GitHub Issues .
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us to smash it by providing a detailed and welcomed
+feedback .
+
Do not contact contributors directly about support or help with technical issues.
+
+
+
+
+
+
+Francesco OpenCode Apruzzese
+Tecnativa
+
+
+
+
+
+
This module is maintained by the OCA.
+
+
+
+
OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
This module is part of the OCA/web project on GitHub.
+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute .
+
+
+
+
+
diff --git a/odex30_base/web_environment_ribbon/static/description/screenshot.png b/odex30_base/web_environment_ribbon/static/description/screenshot.png
new file mode 100644
index 0000000..3024565
Binary files /dev/null and b/odex30_base/web_environment_ribbon/static/description/screenshot.png differ
diff --git a/odex30_base/web_environment_ribbon/static/src/components/environment_ribbon/ribbon.css b/odex30_base/web_environment_ribbon/static/src/components/environment_ribbon/ribbon.css
new file mode 100644
index 0000000..1f4d33a
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/static/src/components/environment_ribbon/ribbon.css
@@ -0,0 +1,29 @@
+/* Copyright 2015 Francesco OpenCode Apruzzese
+ Copyright 2017 Thomas Binsfeld
+ Copyright 2021 Andreas Perhab
+ * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */
+
+.test-ribbon {
+ width: 300px;
+ top: 25px;
+ left: -100px;
+ text-align: center;
+ padding: 10px;
+ line-height: 20px;
+ letter-spacing: 1px;
+ color: #f0f0f0;
+ -webkit-transform: rotate(-45deg);
+ -ms-transform: rotate(-45deg);
+ -moz-transform: rotate(-45deg);
+ -o-transform: rotate(-45deg);
+ transform: rotate(-45deg);
+ z-index: 9999;
+ position: fixed;
+ box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);
+ background: rgba(255, 0, 0, 0.6);
+ pointer-events: none;
+}
+
+.test-ribbon b {
+ font-size: 20px;
+}
diff --git a/odex30_base/web_environment_ribbon/static/src/components/environment_ribbon/ribbon.esm.js b/odex30_base/web_environment_ribbon/static/src/components/environment_ribbon/ribbon.esm.js
new file mode 100644
index 0000000..6d52922
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/static/src/components/environment_ribbon/ribbon.esm.js
@@ -0,0 +1,65 @@
+import {Component, xml} from "@odoo/owl";
+import {useBus, useService} from "@web/core/utils/hooks";
+import {registry} from "@web/core/registry";
+
+export class WebEnvironmentRibbon extends Component {
+ setup() {
+ this.orm = useService("orm");
+ useBus(this.env.bus, "WEB_CLIENT_READY", () => this.showRibbon());
+ }
+
+ // Code from: http://jsfiddle.net/WK_of_Angmar/xgA5C/
+ validStrColour(strToTest) {
+ if (strToTest === "") {
+ return false;
+ }
+ if (strToTest === "inherit") {
+ return true;
+ }
+ if (strToTest === "transparent") {
+ return true;
+ }
+ const image = document.createElement("img");
+ image.style.color = "rgb(0, 0, 0)";
+ image.style.color = strToTest;
+ if (image.style.color !== "rgb(0, 0, 0)") {
+ return true;
+ }
+ image.style.color = "rgb(255, 255, 255)";
+ image.style.color = strToTest;
+ return image.style.color !== "rgb(255, 255, 255)";
+ }
+
+ async showRibbon() {
+ const ribbon = document.getElementsByClassName("test-ribbon")[0];
+ ribbon.style.display = "none";
+ // Get ribbon data from backend
+ const ribbon_data = await this.orm.call(
+ "web.environment.ribbon.backend",
+ "get_environment_ribbon"
+ );
+ // Ribbon name
+ if (ribbon_data.name && ribbon_data.name !== "False") {
+ ribbon.style.display = "block";
+ ribbon.innerHTML = ribbon_data.name;
+ }
+ // Ribbon color
+ if (ribbon_data.color && this.validStrColour(ribbon_data.color)) {
+ ribbon.style.color = ribbon_data.color;
+ }
+ // Ribbon background color
+ if (
+ ribbon_data.background_color &&
+ this.validStrColour(ribbon_data.background_color)
+ ) {
+ ribbon.style.backgroundColor = ribbon_data.background_color;
+ }
+ }
+}
+
+WebEnvironmentRibbon.props = {};
+WebEnvironmentRibbon.template = xml`
`;
+
+registry.category("main_components").add("WebEnvironmentRibbon", {
+ Component: WebEnvironmentRibbon,
+});
diff --git a/odex30_base/web_environment_ribbon/tests/__init__.py b/odex30_base/web_environment_ribbon/tests/__init__.py
new file mode 100644
index 0000000..e9c243a
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/tests/__init__.py
@@ -0,0 +1,3 @@
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from . import test_environment_ribbon_data
diff --git a/odex30_base/web_environment_ribbon/tests/test_environment_ribbon_data.py b/odex30_base/web_environment_ribbon/tests/test_environment_ribbon_data.py
new file mode 100644
index 0000000..d924724
--- /dev/null
+++ b/odex30_base/web_environment_ribbon/tests/test_environment_ribbon_data.py
@@ -0,0 +1,26 @@
+# Copyright 2019 Eric Lembregts
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from odoo.tests import common
+
+
+class TestEnvironmentRibbonData(common.TransactionCase):
+ @classmethod
+ def setUpClass(cls):
+ super().setUpClass()
+ cls.env["ir.config_parameter"].set_param("ribbon.name", "Test Ribbon {db_name}")
+ cls.env["ir.config_parameter"].set_param("ribbon.color", "#000000")
+ cls.env["ir.config_parameter"].set_param("ribbon.background.color", "#FFFFFF")
+
+ def test_environment_ribbon(self):
+ """This test confirms that the data that is fetched by the javascript
+ code is the right title and colors."""
+ ribbon = self.env["web.environment.ribbon.backend"].get_environment_ribbon()
+
+ expected_ribbon = {
+ "name": f"Test Ribbon {self.env.cr.dbname}",
+ "color": "#000000",
+ "background_color": "#FFFFFF",
+ }
+
+ self.assertDictEqual(ribbon, expected_ribbon)
diff --git a/odex30_base/web_widget_colorpicker/README.rst b/odex30_base/web_widget_colorpicker/README.rst
new file mode 100755
index 0000000..779d7e8
--- /dev/null
+++ b/odex30_base/web_widget_colorpicker/README.rst
@@ -0,0 +1,41 @@
+Color Picker widget for Odoo web client
+================================
+
+
+Features
+========
+
+Now only in RGBA code.
+
+
+* Display the color on form view when you are not editing it
+
+ |form_view_no_edit|
+
+* Display the color on form view when you editing it
+
+ |form_view_edit|
+
+Usage
+=====
+
+You need to declare a char.
+
+ colorpicker = fields.Char(
+ string="Color Picker",
+ )
+
+
+In the view declaration,
+
+ ...
+
+
+
+ ...
+
+
diff --git a/odex30_base/web_widget_colorpicker/__init__.py b/odex30_base/web_widget_colorpicker/__init__.py
new file mode 100755
index 0000000..3d98261
--- /dev/null
+++ b/odex30_base/web_widget_colorpicker/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+#
+
diff --git a/odex30_base/web_widget_colorpicker/__manifest__.py b/odex30_base/web_widget_colorpicker/__manifest__.py
new file mode 100755
index 0000000..999ca9e
--- /dev/null
+++ b/odex30_base/web_widget_colorpicker/__manifest__.py
@@ -0,0 +1,67 @@
+# -*- coding: utf-8 -*-
+{
+ "name": """Web Widget Colorpicker""",
+ "summary": """Added Color Picker for From""",
+ "category": "web",
+ "images": ['static/description/icon.png'],
+ "version": "18.0.30.07.24",
+ "description": """
+
+ For Form View - added = widget="colorpicker"
+
+ ...
+
+
+
+ ...
+
+ """,
+
+ "author": "Viktor Vorobjov",
+ "license": "LGPL-3",
+ "website": "https://straga.github.io",
+ "support": "vostraga@gmail.com",
+ "price": 0.00,
+ "currency": "EUR",
+
+ "depends": [
+ "web"
+ ],
+ "external_dependencies": {"python": [], "bin": []},
+ "data": [
+ ],
+
+ 'assets': {
+
+ 'web.assets_backend': [
+
+ # Using Pickr - modern color picker with RGBA support
+ '/web_widget_colorpicker/static/src/lib/pickr/classic.min.css',
+ '/web_widget_colorpicker/static/src/lib/pickr/pickr.min.js',
+
+ '/web_widget_colorpicker/static/src/css/widget.css',
+ '/web_widget_colorpicker/static/src/js/color_picker_field.xml',
+ '/web_widget_colorpicker/static/src/js/color_picker_field.js',
+
+ ],
+
+
+ },
+
+
+ "qweb": [
+ ],
+ "demo": [],
+
+ "post_load": None,
+ "pre_init_hook": None,
+ "post_init_hook": None,
+ "uninstall_hook": None,
+
+ "auto_install": False,
+ "installable": True,
+}
diff --git a/odex30_base/web_widget_colorpicker/images/form_view_edit.png b/odex30_base/web_widget_colorpicker/images/form_view_edit.png
new file mode 100755
index 0000000..716e936
Binary files /dev/null and b/odex30_base/web_widget_colorpicker/images/form_view_edit.png differ
diff --git a/odex30_base/web_widget_colorpicker/images/form_view_no_edit.png b/odex30_base/web_widget_colorpicker/images/form_view_no_edit.png
new file mode 100755
index 0000000..cb097a6
Binary files /dev/null and b/odex30_base/web_widget_colorpicker/images/form_view_no_edit.png differ
diff --git a/odex30_base/web_widget_colorpicker/static/description/form_view_edit.png b/odex30_base/web_widget_colorpicker/static/description/form_view_edit.png
new file mode 100755
index 0000000..716e936
Binary files /dev/null and b/odex30_base/web_widget_colorpicker/static/description/form_view_edit.png differ
diff --git a/odex30_base/web_widget_colorpicker/static/description/form_view_no_edit.png b/odex30_base/web_widget_colorpicker/static/description/form_view_no_edit.png
new file mode 100755
index 0000000..cb097a6
Binary files /dev/null and b/odex30_base/web_widget_colorpicker/static/description/form_view_no_edit.png differ
diff --git a/odex30_base/web_widget_colorpicker/static/description/icon.png b/odex30_base/web_widget_colorpicker/static/description/icon.png
new file mode 100755
index 0000000..ab43cbc
Binary files /dev/null and b/odex30_base/web_widget_colorpicker/static/description/icon.png differ
diff --git a/odex30_base/web_widget_colorpicker/static/description/index.html b/odex30_base/web_widget_colorpicker/static/description/index.html
new file mode 100755
index 0000000..1cf5c81
--- /dev/null
+++ b/odex30_base/web_widget_colorpicker/static/description/index.html
@@ -0,0 +1,80 @@
+
+
+
Web Widget field
+
Bootstrap Color Picker
+
+
+
+
+
+
+
+
+
+
+
+
+
Demo
+
Live:https://demo18.garage12.eu/
+
user: demo Password:demog
+
+
+
+
+
+
+
+
+
in Action
+
+
+
+ Form View
+
+
+
+
+
+
+ Edit Form View
+
+
+
+
+
+
+
+
+
+
+
+
+
Need our service?
+
Contact us by email
+
+
+
+
+
+
+
diff --git a/odex30_base/web_widget_colorpicker/static/src/css/widget.css b/odex30_base/web_widget_colorpicker/static/src/css/widget.css
new file mode 100755
index 0000000..b97c621
--- /dev/null
+++ b/odex30_base/web_widget_colorpicker/static/src/css/widget.css
@@ -0,0 +1,34 @@
+.openerp .oe_form .oe_form_field_time_delta input {
+ width: 100%;
+}
+
+.openerp .oe_form .oe_form_field_delta div {
+ border: 1px solid;
+ display: inline-block;
+ height: 14px;
+ margin-right: 10px;
+ position: relative;
+ top: 3px;
+ width: 40px;
+}
+
+.oe_list_field_time_delta div {
+ border: 1px solid;
+ display: inline-block;
+ height: 14px;
+ margin-right: 10px;
+ position: relative;
+ top: 3px;
+ width: 40px;
+}
+
+.time_delta_box {
+ width: 10px;
+ height: 10px;
+ display: inline-block;
+ margin-right: 5px;
+}
+
+.color-value {
+ display: none;
+}
\ No newline at end of file
diff --git a/odex30_base/web_widget_colorpicker/static/src/js/color_picker_field.js b/odex30_base/web_widget_colorpicker/static/src/js/color_picker_field.js
new file mode 100755
index 0000000..bc35cff
--- /dev/null
+++ b/odex30_base/web_widget_colorpicker/static/src/js/color_picker_field.js
@@ -0,0 +1,135 @@
+/** @odoo-module **/
+import { Component, onMounted, onWillUnmount, useRef, useEffect } from "@odoo/owl";
+import { standardFieldProps } from "@web/views/fields/standard_field_props";
+import { useInputField } from "@web/views/fields/input_field_hook";
+import { _t } from "@web/core/l10n/translation";
+import { registry } from "@web/core/registry";
+
+export class FieldColorPicker extends Component {
+ static template = "web_widget_colorpicker.FieldColorPicker";
+ static props = {
+ ...standardFieldProps,
+ };
+
+ elRef = useRef("el");
+ inputRef = useRef("ColorChar");
+ pickrRef = useRef("pickrContainer");
+
+ setup() {
+ this.pickrInstance = null;
+
+ useInputField({
+ getValue: () => this.props.record.data[this.props.name] || "rgba(0, 0, 0, 1)",
+ refName: "ColorChar",
+ parse: (v) => this.parse(v),
+ });
+
+ onMounted(() => {
+ if (this.props.readonly) return;
+
+ const inputEl = this.inputRef.el;
+ const pickrContainer = this.pickrRef.el;
+
+ if (inputEl && pickrContainer && window.Pickr) {
+ // Initialize Pickr
+ this.pickrInstance = window.Pickr.create({
+ el: pickrContainer,
+ theme: 'classic', // or 'nano', 'monolith'
+ default: this.value || 'rgba(0, 0, 0, 1)',
+ components: {
+ // Main components
+ preview: true,
+ opacity: true,
+ hue: true,
+ // Additional components
+ interaction: {
+ hex: false,
+ rgba: true,
+ hsla: false,
+ hsva: false,
+ cmyk: false,
+ input: true,
+ clear: false,
+ save: true
+ }
+ }
+ });
+
+ // Event handlers
+ this.pickrInstance.on('save', (color) => {
+ if (color) {
+ const rgbaColor = color.toRGBA().toString(0);
+ inputEl.value = rgbaColor;
+ this.props.record.update({ [this.props.name]: rgbaColor });
+ }
+ this.pickrInstance.hide();
+ });
+
+ this.pickrInstance.on('change', (color) => {
+ if (color) {
+ const rgbaColor = color.toRGBA().toString(0);
+ inputEl.value = rgbaColor;
+ }
+ });
+
+ // Set initial value
+ if (this.value) {
+ this.pickrInstance.setColor(this.value);
+ inputEl.value = this.value;
+ }
+ }
+ });
+
+ // Watch for value changes when navigating between records
+ useEffect(
+ () => {
+ if (this.pickrInstance && !this.props.readonly) {
+ const currentValue = this.value || 'rgba(0, 0, 0, 1)';
+ const inputEl = this.inputRef.el;
+
+ // Update Pickr color
+ this.pickrInstance.setColor(currentValue);
+
+ // Update input field value
+ if (inputEl) {
+ inputEl.value = currentValue;
+ }
+ }
+ },
+ () => [this.value] // Dependencies: re-run when value changes
+ );
+
+ onWillUnmount(() => {
+ // Cleanup when component is unmounted
+ if (this.pickrInstance) {
+ this.pickrInstance.destroyAndRemove();
+ this.pickrInstance = null;
+ }
+ });
+
+ super.setup();
+ }
+
+ get formattedValue() {
+ return this.value || "rgba(0, 0, 0, 1)";
+ }
+
+ get value() {
+ return this.props.record.data[this.props.name];
+ }
+
+ parse(value) {
+ // Check for valid RGBA color
+ const isValidRgba = /^rgba?\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*(?:,\s*(?:0|1|0?\.\d+))?\s*\)$/.test(value);
+ return isValidRgba ? value : "rgba(0, 0, 0, 1)";
+ }
+}
+
+export const fieldColorPicker = {
+ component: FieldColorPicker,
+ displayName: _t("Color Picker Field"),
+ supportedTypes: ["char"]
+};
+
+// Add the field to the correct category
+registry.category("fields").add("colorpicker", fieldColorPicker);
diff --git a/odex30_base/web_widget_colorpicker/static/src/js/color_picker_field.xml b/odex30_base/web_widget_colorpicker/static/src/js/color_picker_field.xml
new file mode 100755
index 0000000..36ad303
--- /dev/null
+++ b/odex30_base/web_widget_colorpicker/static/src/js/color_picker_field.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/odex30_base/web_widget_colorpicker/static/src/lib/pickr/classic.min.css b/odex30_base/web_widget_colorpicker/static/src/lib/pickr/classic.min.css
new file mode 100644
index 0000000..05ab350
--- /dev/null
+++ b/odex30_base/web_widget_colorpicker/static/src/lib/pickr/classic.min.css
@@ -0,0 +1 @@
+/*! Pickr 1.8.1 MIT | https://github.com/Simonwep/pickr */.pickr{position:relative;overflow:visible;transform:translateY(0)}.pickr *{box-sizing:border-box;outline:none;border:none;-webkit-appearance:none}.pickr .pcr-button{position:relative;height:2em;width:2em;padding:.5em;cursor:pointer;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;border-radius:.15em;background:url('data:image/svg+xml;utf8, ') no-repeat 50%;background-size:0;transition:all .3s}.pickr .pcr-button:before{background:url('data:image/svg+xml;utf8, ');background-size:.5em;z-index:-1;z-index:auto}.pickr .pcr-button:after,.pickr .pcr-button:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;border-radius:.15em}.pickr .pcr-button:after{transition:background .3s;background:var(--pcr-color)}.pickr .pcr-button.clear{background-size:70%}.pickr .pcr-button.clear:before{opacity:0}.pickr .pcr-button.clear:focus{box-shadow:0 0 0 1px hsla(0,0%,100%,.85),0 0 0 3px var(--pcr-color)}.pickr .pcr-button.disabled{cursor:not-allowed}.pcr-app *,.pickr *{box-sizing:border-box;outline:none;border:none;-webkit-appearance:none}.pcr-app button.pcr-active,.pcr-app button:focus,.pcr-app input.pcr-active,.pcr-app input:focus,.pickr button.pcr-active,.pickr button:focus,.pickr input.pcr-active,.pickr input:focus{box-shadow:0 0 0 1px hsla(0,0%,100%,.85),0 0 0 3px var(--pcr-color)}.pcr-app .pcr-palette,.pcr-app .pcr-slider,.pickr .pcr-palette,.pickr .pcr-slider{transition:box-shadow .3s}.pcr-app .pcr-palette:focus,.pcr-app .pcr-slider:focus,.pickr .pcr-palette:focus,.pickr .pcr-slider:focus{box-shadow:0 0 0 1px hsla(0,0%,100%,.85),0 0 0 3px rgba(0,0,0,.25)}.pcr-app{position:fixed;display:flex;flex-direction:column;z-index:10000;border-radius:.1em;background:#fff;opacity:0;visibility:hidden;transition:opacity .3s,visibility 0s .3s;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;box-shadow:0 .15em 1.5em 0 rgba(0,0,0,.1),0 0 1em 0 rgba(0,0,0,.03);left:0;top:0}.pcr-app.visible{transition:opacity .3s;visibility:visible;opacity:1}.pcr-app .pcr-swatches{display:flex;flex-wrap:wrap;margin-top:.75em}.pcr-app .pcr-swatches.pcr-last{margin:0}@supports (display:grid){.pcr-app .pcr-swatches{display:grid;align-items:center;grid-template-columns:repeat(auto-fit,1.75em)}}.pcr-app .pcr-swatches>button{font-size:1em;position:relative;width:calc(1.75em - 5px);height:calc(1.75em - 5px);border-radius:.15em;cursor:pointer;margin:2.5px;flex-shrink:0;justify-self:center;transition:all .15s;overflow:hidden;background:transparent;z-index:1}.pcr-app .pcr-swatches>button:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;background:url('data:image/svg+xml;utf8, ');background-size:6px;border-radius:.15em;z-index:-1}.pcr-app .pcr-swatches>button:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:var(--pcr-color);border:1px solid rgba(0,0,0,.05);border-radius:.15em;box-sizing:border-box}.pcr-app .pcr-swatches>button:hover{filter:brightness(1.05)}.pcr-app .pcr-swatches>button:not(.pcr-active){box-shadow:none}.pcr-app .pcr-interaction{display:flex;flex-wrap:wrap;align-items:center;margin:0 -.2em}.pcr-app .pcr-interaction>*{margin:0 .2em}.pcr-app .pcr-interaction input{letter-spacing:.07em;font-size:.75em;text-align:center;cursor:pointer;color:#75797e;background:#f1f3f4;border-radius:.15em;transition:all .15s;padding:.45em .5em;margin-top:.75em}.pcr-app .pcr-interaction input:hover{filter:brightness(.975)}.pcr-app .pcr-interaction input:focus{box-shadow:0 0 0 1px hsla(0,0%,100%,.85),0 0 0 3px rgba(66,133,244,.75)}.pcr-app .pcr-interaction .pcr-result{color:#75797e;text-align:left;flex:1 1 8em;min-width:8em;transition:all .2s;border-radius:.15em;background:#f1f3f4;cursor:text}.pcr-app .pcr-interaction .pcr-result::-moz-selection{background:#4285f4;color:#fff}.pcr-app .pcr-interaction .pcr-result::selection{background:#4285f4;color:#fff}.pcr-app .pcr-interaction .pcr-type.active{color:#fff;background:#4285f4}.pcr-app .pcr-interaction .pcr-cancel,.pcr-app .pcr-interaction .pcr-clear,.pcr-app .pcr-interaction .pcr-save{width:auto;color:#fff}.pcr-app .pcr-interaction .pcr-cancel:hover,.pcr-app .pcr-interaction .pcr-clear:hover,.pcr-app .pcr-interaction .pcr-save:hover{filter:brightness(.925)}.pcr-app .pcr-interaction .pcr-save{background:#4285f4}.pcr-app .pcr-interaction .pcr-cancel,.pcr-app .pcr-interaction .pcr-clear{background:#f44250}.pcr-app .pcr-interaction .pcr-cancel:focus,.pcr-app .pcr-interaction .pcr-clear:focus{box-shadow:0 0 0 1px hsla(0,0%,100%,.85),0 0 0 3px rgba(244,66,80,.75)}.pcr-app .pcr-selection .pcr-picker{position:absolute;height:18px;width:18px;border:2px solid #fff;border-radius:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pcr-app .pcr-selection .pcr-color-chooser,.pcr-app .pcr-selection .pcr-color-opacity,.pcr-app .pcr-selection .pcr-color-palette{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column;cursor:grab;cursor:-webkit-grab}.pcr-app .pcr-selection .pcr-color-chooser:active,.pcr-app .pcr-selection .pcr-color-opacity:active,.pcr-app .pcr-selection .pcr-color-palette:active{cursor:grabbing;cursor:-webkit-grabbing}.pcr-app[data-theme=classic]{width:28.5em;max-width:95vw;padding:.8em}.pcr-app[data-theme=classic] .pcr-selection{display:flex;justify-content:space-between;flex-grow:1}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-preview{position:relative;z-index:1;width:2em;display:flex;flex-direction:column;justify-content:space-between;margin-right:.75em}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-preview:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;background:url('data:image/svg+xml;utf8, ');background-size:.5em;border-radius:.15em;z-index:-1}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-preview .pcr-last-color{cursor:pointer;transition:background-color .3s,box-shadow .3s;border-radius:.15em .15em 0 0;z-index:2}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-preview .pcr-current-color{border-radius:0 0 .15em .15em}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-preview .pcr-current-color,.pcr-app[data-theme=classic] .pcr-selection .pcr-color-preview .pcr-last-color{background:var(--pcr-color);width:100%;height:50%}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-palette{width:100%;height:8em;z-index:1}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-palette .pcr-palette{flex-grow:1;border-radius:.15em}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-palette .pcr-palette:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;background:url('data:image/svg+xml;utf8, ');background-size:.5em;border-radius:.15em;z-index:-1}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-chooser,.pcr-app[data-theme=classic] .pcr-selection .pcr-color-opacity{margin-left:.75em}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-chooser .pcr-picker,.pcr-app[data-theme=classic] .pcr-selection .pcr-color-opacity .pcr-picker{left:50%;transform:translateX(-50%)}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-chooser .pcr-slider,.pcr-app[data-theme=classic] .pcr-selection .pcr-color-opacity .pcr-slider{width:8px;flex-grow:1;border-radius:50em}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-chooser .pcr-slider{background:linear-gradient(180deg,red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.pcr-app[data-theme=classic] .pcr-selection .pcr-color-opacity .pcr-slider{background:linear-gradient(180deg,transparent,#000),url('data:image/svg+xml;utf8, ');background-size:100%,50%}
\ No newline at end of file
diff --git a/odex30_base/web_widget_colorpicker/static/src/lib/pickr/pickr.min.js b/odex30_base/web_widget_colorpicker/static/src/lib/pickr/pickr.min.js
new file mode 100644
index 0000000..c175e36
--- /dev/null
+++ b/odex30_base/web_widget_colorpicker/static/src/lib/pickr/pickr.min.js
@@ -0,0 +1,3 @@
+/*! Pickr 1.9.1 MIT | https://github.com/Simonwep/pickr */
+!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Pickr=e():t.Pickr=e()}(self,(()=>(()=>{"use strict";var t={d:(e,o)=>{for(var n in o)t.o(o,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:o[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.d(e,{default:()=>E});var o={};function n(t,e,o,n,i={}){e instanceof HTMLCollection||e instanceof NodeList?e=Array.from(e):Array.isArray(e)||(e=[e]),Array.isArray(o)||(o=[o]);for(const s of e)for(const e of o)s[t](e,n,{capture:!1,...i});return Array.prototype.slice.call(arguments,1)}t.r(o),t.d(o,{adjustableInputNumbers:()=>p,createElementFromString:()=>r,createFromTemplate:()=>a,eventPath:()=>l,off:()=>s,on:()=>i,resolveElement:()=>c});const i=n.bind(null,"addEventListener"),s=n.bind(null,"removeEventListener");function r(t){const e=document.createElement("div");return e.innerHTML=t.trim(),e.firstElementChild}function a(t){const e=(t,e)=>{const o=t.getAttribute(e);return t.removeAttribute(e),o},o=(t,n={})=>{const i=e(t,":obj"),s=e(t,":ref"),r=i?n[i]={}:n;s&&(n[s]=t);for(const n of Array.from(t.children)){const t=e(n,":arr"),i=o(n,t?{}:r);t&&(r[t]||(r[t]=[])).push(Object.keys(i).length?i:n)}return n};return o(r(t))}function l(t){let e=t.path||t.composedPath&&t.composedPath();if(e)return e;let o=t.target.parentElement;for(e=[t.target,o];o=o.parentElement;)e.push(o);return e.push(document,window),e}function c(t){return t instanceof Element?t:"string"==typeof t?t.split(/>>/g).reduce(((t,e,o,n)=>(t=t.querySelector(e),ot)){function o(o){const n=[.001,.01,.1][Number(o.shiftKey||2*o.ctrlKey)]*(o.deltaY<0?1:-1);let i=0,s=t.selectionStart;t.value=t.value.replace(/[\d.]+/g,((t,o)=>o<=s&&o+t.length>=s?(s=o,e(Number(t),n,i)):(i++,t))),t.focus(),t.setSelectionRange(s,s),o.preventDefault(),t.dispatchEvent(new Event("input"))}i(t,"focus",(()=>i(window,"wheel",o,{passive:!1}))),i(t,"blur",(()=>s(window,"wheel",o)))}const{min:u,max:h,floor:d,round:m}=Math;function f(t,e,o){e/=100,o/=100;const n=d(t=t/360*6),i=t-n,s=o*(1-e),r=o*(1-i*e),a=o*(1-(1-i)*e),l=n%6;return[255*[o,r,s,s,a,o][l],255*[a,o,o,r,s,s][l],255*[s,s,a,o,o,r][l]]}function v(t,e,o){const n=(2-(e/=100))*(o/=100)/2;return 0!==n&&(e=1===n?0:n<.5?e*o/(2*n):e*o/(2-2*n)),[t,100*e,100*n]}function b(t,e,o){const n=u(t/=255,e/=255,o/=255),i=h(t,e,o),s=i-n;let r,a;if(0===s)r=a=0;else{a=s/i;const n=((i-t)/6+s/2)/s,l=((i-e)/6+s/2)/s,c=((i-o)/6+s/2)/s;t===i?r=c-l:e===i?r=1/3+n-c:o===i&&(r=2/3+l-n),r<0?r+=1:r>1&&(r-=1)}return[360*r,100*a,100*i]}function y(t,e,o,n){e/=100,o/=100;return[...b(255*(1-u(1,(t/=100)*(1-(n/=100))+n)),255*(1-u(1,e*(1-n)+n)),255*(1-u(1,o*(1-n)+n)))]}function g(t,e,o){e/=100;const n=2*(e*=(o/=100)<.5?o:1-o)/(o+e)*100,i=100*(o+e);return[t,isNaN(n)?0:n,i]}function _(t){return b(...t.match(/.{2}/g).map((t=>parseInt(t,16))))}function w(t){t=t.match(/^[a-zA-Z]+$/)?function(t){if("black"===t.toLowerCase())return"#000";const e=document.createElement("canvas").getContext("2d");return e.fillStyle=t,"#000"===e.fillStyle?null:e.fillStyle}(t):t;const e={cmyk:/^cmyk\D+([\d.]+)\D+([\d.]+)\D+([\d.]+)\D+([\d.]+)/i,rgba:/^rgba?\D+([\d.]+)(%?)\D+([\d.]+)(%?)\D+([\d.]+)(%?)\D*?(([\d.]+)(%?)|$)/i,hsla:/^hsla?\D+([\d.]+)\D+([\d.]+)\D+([\d.]+)\D*?(([\d.]+)(%?)|$)/i,hsva:/^hsva?\D+([\d.]+)\D+([\d.]+)\D+([\d.]+)\D*?(([\d.]+)(%?)|$)/i,hexa:/^#?(([\dA-Fa-f]{3,4})|([\dA-Fa-f]{6})|([\dA-Fa-f]{8}))$/i},o=t=>t.map((t=>/^(|\d+)\.\d+|\d+$/.test(t)?Number(t):void 0));let n;t:for(const i in e)if(n=e[i].exec(t))switch(i){case"cmyk":{const[,t,e,s,r]=o(n);if(t>100||e>100||s>100||r>100)break t;return{values:y(t,e,s,r),type:i}}case"rgba":{let[,t,,e,,s,,,r]=o(n);if(t="%"===n[2]?t/100*255:t,e="%"===n[4]?e/100*255:e,s="%"===n[6]?s/100*255:s,r="%"===n[9]?r/100:r,t>255||e>255||s>255||r<0||r>1)break t;return{values:[...b(t,e,s),r],a:r,type:i}}case"hexa":{let[,t]=n;4!==t.length&&3!==t.length||(t=t.split("").map((t=>t+t)).join(""));const e=t.substring(0,6);let o=t.substring(6);return o=o?parseInt(o,16)/255:void 0,{values:[..._(e),o],a:o,type:i}}case"hsla":{let[,t,e,s,,r]=o(n);if(r="%"===n[6]?r/100:r,t>360||e>100||s>100||r<0||r>1)break t;return{values:[...g(t,e,s),r],a:r,type:i}}case"hsva":{let[,t,e,s,,r]=o(n);if(r="%"===n[6]?r/100:r,t>360||e>100||s>100||r<0||r>1)break t;return{values:[t,e,s,r],a:r,type:i}}}return{values:null,type:null}}function A(t=0,e=0,o=0,n=1){const i=(t,e)=>(o=-1)=>e(~o?t.map((t=>Number(t.toFixed(o)))):t),s={h:t,s:e,v:o,a:n,toHSVA(){const t=[s.h,s.s,s.v,s.a];return t.toString=i(t,(t=>`hsva(${t[0]}, ${t[1]}%, ${t[2]}%, ${s.a})`)),t},toHSLA(){const t=[...v(s.h,s.s,s.v),s.a];return t.toString=i(t,(t=>`hsla(${t[0]}, ${t[1]}%, ${t[2]}%, ${s.a})`)),t},toRGBA(){const t=[...f(s.h,s.s,s.v),s.a];return t.toString=i(t,(t=>`rgba(${t[0]}, ${t[1]}, ${t[2]}, ${s.a})`)),t},toCMYK(){const t=function(t,e,o){const n=f(t,e,o),i=n[0]/255,s=n[1]/255,r=n[2]/255,a=u(1-i,1-s,1-r);return[100*(1===a?0:(1-i-a)/(1-a)),100*(1===a?0:(1-s-a)/(1-a)),100*(1===a?0:(1-r-a)/(1-a)),100*a]}(s.h,s.s,s.v);return t.toString=i(t,(t=>`cmyk(${t[0]}%, ${t[1]}%, ${t[2]}%, ${t[3]}%)`)),t},toHEXA(){const t=function(t,e,o){return f(t,e,o).map((t=>m(t).toString(16).padStart(2,"0")))}(s.h,s.s,s.v),e=s.a>=1?"":Number((255*s.a).toFixed(0)).toString(16).toUpperCase().padStart(2,"0");return e&&t.push(e),t.toString=()=>`#${t.join("").toUpperCase()}`,t},clone:()=>A(s.h,s.s,s.v,s.a)};return s}const $=t=>Math.max(Math.min(t,1),0);function C(t){const e={options:Object.assign({lock:null,onchange:()=>0,onstop:()=>0},t),_keyboard(t){const{options:o}=e,{type:n,key:i}=t;if(document.activeElement===o.wrapper){const{lock:o}=e.options,s="ArrowUp"===i,r="ArrowRight"===i,a="ArrowDown"===i,l="ArrowLeft"===i;if("keydown"===n&&(s||r||a||l)){let n=0,i=0;"v"===o?n=s||r?1:-1:"h"===o?n=s||r?-1:1:(i=s?-1:a?1:0,n=l?-1:r?1:0),e.update($(e.cache.x+.01*n),$(e.cache.y+.01*i)),t.preventDefault()}else i.startsWith("Arrow")&&(e.options.onstop(),t.preventDefault())}},_tapstart(t){i(document,["mouseup","touchend","touchcancel"],e._tapstop),i(document,["mousemove","touchmove"],e._tapmove),t.cancelable&&t.preventDefault(),e._tapmove(t)},_tapmove(t){const{options:o,cache:n}=e,{lock:i,element:s,wrapper:r}=o,a=r.getBoundingClientRect();let l=0,c=0;if(t){const e=t&&t.touches&&t.touches[0];l=t?(e||t).clientX:0,c=t?(e||t).clientY:0,la.left+a.width&&(l=a.left+a.width),ca.top+a.height&&(c=a.top+a.height),l-=a.left,c-=a.top}else n&&(l=n.x*a.width,c=n.y*a.height);"h"!==i&&(s.style.left=`calc(${l/a.width*100}% - ${s.offsetWidth/2}px)`),"v"!==i&&(s.style.top=`calc(${c/a.height*100}% - ${s.offsetHeight/2}px)`),e.cache={x:l/a.width,y:c/a.height};const p=$(l/a.width),u=$(c/a.height);switch(i){case"v":return o.onchange(p);case"h":return o.onchange(u);default:return o.onchange(p,u)}},_tapstop(){e.options.onstop(),s(document,["mouseup","touchend","touchcancel"],e._tapstop),s(document,["mousemove","touchmove"],e._tapmove)},trigger(){e._tapmove()},update(t=0,o=0){const{left:n,top:i,width:s,height:r}=e.options.wrapper.getBoundingClientRect();"h"===e.options.lock&&(o=t),e._tapmove({clientX:n+s*t,clientY:i+r*o})},destroy(){const{options:t,_tapstart:o,_keyboard:n}=e;s(document,["keydown","keyup"],n),s([t.wrapper,t.element],"mousedown",o),s([t.wrapper,t.element],"touchstart",o,{passive:!1})}},{options:o,_tapstart:n,_keyboard:r}=e;return i([o.wrapper,o.element],"mousedown",n),i([o.wrapper,o.element],"touchstart",n,{passive:!1}),i(document,["keydown","keyup"],r),e}function k(t={}){t=Object.assign({onchange:()=>0,className:"",elements:[]},t);const e=i(t.elements,"click",(e=>{t.elements.forEach((o=>o.classList[e.target===o?"add":"remove"](t.className))),t.onchange(e),e.stopPropagation()}));return{destroy:()=>s(...e)}}const S={variantFlipOrder:{start:"sme",middle:"mse",end:"ems"},positionFlipOrder:{top:"tbrl",right:"rltb",bottom:"btrl",left:"lrbt"},position:"bottom",margin:8,padding:0},O=(t,e,o)=>{const n="object"!=typeof t||t instanceof HTMLElement?{reference:t,popper:e,...o}:t;return{update(t=n){const{reference:e,popper:o}=Object.assign(n,t);if(!o||!e)throw new Error("Popper- or reference-element missing.");return((t,e,o)=>{const{container:n,arrow:i,margin:s,padding:r,position:a,variantFlipOrder:l,positionFlipOrder:c}={container:document.documentElement.getBoundingClientRect(),...S,...o},{left:p,top:u}=e.style;e.style.left="0",e.style.top="0";const h=t.getBoundingClientRect(),d=e.getBoundingClientRect(),m={t:h.top-d.height-s,b:h.bottom+s,r:h.right+s,l:h.left-d.width-s},f={vs:h.left,vm:h.left+h.width/2-d.width/2,ve:h.left+h.width-d.width,hs:h.top,hm:h.bottom-h.height/2-d.height/2,he:h.bottom-d.height},[v,b="middle"]=a.split("-"),y=c[v],g=l[b],{top:_,left:w,bottom:A,right:$}=n;for(const t of y){const o="t"===t||"b"===t;let n=m[t];const[s,a]=o?["top","left"]:["left","top"],[l,c]=o?[d.height,d.width]:[d.width,d.height],[p,u]=o?[A,$]:[$,A],[v,b]=o?[_,w]:[w,_];if(!(np))for(const p of g){let m=f[(o?"v":"h")+p];if(!(mu)){if(m-=d[a],n-=d[s],e.style[a]=`${m}px`,e.style[s]=`${n}px`,i){const e=o?h.width/2:h.height/2,r=c/2,u=e>r,d=m+{s:u?r:e,m:r,e:u?r:c-e}[p],f=n+{t:l,b:0,r:0,l}[t];i.style[a]=`${d}px`,i.style[s]=`${f}px`}return t+p}}}return e.style.left=p,e.style.top=u,null})(e,o,n)}}};class E{static utils=o;static version="1.9.1";static I18N_DEFAULTS={"ui:dialog":"color picker dialog","btn:toggle":"toggle color picker dialog","btn:swatch":"color swatch","btn:last-color":"use previous color","btn:save":"Save","btn:cancel":"Cancel","btn:clear":"Clear","aria:btn:save":"save and close","aria:btn:cancel":"cancel and close","aria:btn:clear":"clear and close","aria:input":"color input field","aria:palette":"color selection area","aria:hue":"hue selection slider","aria:opacity":"selection slider"};static DEFAULT_OPTIONS={appClass:null,theme:"classic",useAsButton:!1,padding:8,disabled:!1,comparison:!0,closeOnScroll:!1,outputPrecision:0,lockOpacity:!1,autoReposition:!0,container:"body",components:{interaction:{}},i18n:{},swatches:null,inline:!1,sliders:null,default:"#42445a",defaultRepresentation:null,position:"bottom-middle",adjustableNumbers:!0,showAlways:!1,closeWithKey:"Escape"};_initializingActive=!0;_recalc=!0;_nanopop=null;_root=null;_color=A();_lastColor=A();_swatchColors=[];_setupAnimationFrame=null;_eventListener={init:[],save:[],hide:[],show:[],clear:[],change:[],changestop:[],cancel:[],swatchselect:[]};constructor(t){this.options=t=Object.assign({...E.DEFAULT_OPTIONS},t);const{swatches:e,components:o,theme:n,sliders:i,lockOpacity:s,padding:r}=t;["nano","monolith"].includes(n)&&!i&&(t.sliders="h"),o.interaction||(o.interaction={});const{preview:a,opacity:l,hue:c,palette:p}=o;o.opacity=!s&&l,o.palette=p||a||l||c,this._preBuild(),this._buildComponents(),this._bindEvents(),this._finalBuild(),e&&e.length&&e.forEach((t=>this.addSwatch(t)));const{button:u,app:h}=this._root;this._nanopop=O(u,h,{margin:r}),u.setAttribute("role","button"),u.setAttribute("aria-label",this._t("btn:toggle"));const d=this;this._setupAnimationFrame=requestAnimationFrame((function e(){if(!h.offsetWidth)return requestAnimationFrame(e);d.setColor(t.default),d._rePositioningPicker(),t.defaultRepresentation&&(d._representation=t.defaultRepresentation,d.setColorRepresentation(d._representation)),t.showAlways&&d.show(),d._initializingActive=!1,d._emit("init")}))}static create=t=>new E(t);_preBuild(){const{options:t}=this;for(const e of["el","container"])t[e]=c(t[e]);this._root=(t=>{const{components:e,useAsButton:o,inline:n,appClass:i,theme:s,lockOpacity:r}=t.options,l=t=>t?"":'style="display:none" hidden',c=e=>t._t(e),p=a(`\n \n `),u=p.interaction;return u.options.find((t=>!t.hidden&&!t.classList.add("active"))),u.type=()=>u.options.find((t=>t.classList.contains("active"))),p})(this),t.useAsButton&&(this._root.button=t.el),t.container.appendChild(this._root.root)}_finalBuild(){const t=this.options,e=this._root;if(t.container.removeChild(e.root),t.inline){const o=t.el.parentElement;t.el.nextSibling?o.insertBefore(e.app,t.el.nextSibling):o.appendChild(e.app)}else t.container.appendChild(e.app);t.useAsButton?t.inline&&t.el.remove():t.el.parentNode.replaceChild(e.root,t.el),t.disabled&&this.disable(),t.comparison||(e.button.style.transition="none",t.useAsButton||(e.preview.lastColor.style.transition="none")),this.hide()}_buildComponents(){const t=this,e=this.options.components,o=(t.options.sliders||"v").repeat(2),[n,i]=o.match(/^[vh]+$/g)?o:[],s=()=>this._color||(this._color=this._lastColor.clone()),r={palette:C({element:t._root.palette.picker,wrapper:t._root.palette.palette,onstop:()=>t._emit("changestop","slider",t),onchange(o,n){if(!e.palette)return;const i=s(),{_root:r,options:a}=t,{lastColor:l,currentColor:c}=r.preview;t._recalc&&(i.s=100*o,i.v=100-100*n,i.v<0&&(i.v=0),t._updateOutput("slider"));const p=i.toRGBA().toString(0);this.element.style.background=p,this.wrapper.style.background=`\n linear-gradient(to top, rgba(0, 0, 0, ${i.a}), transparent),\n linear-gradient(to left, hsla(${i.h}, 100%, 50%, ${i.a}), rgba(255, 255, 255, ${i.a}))\n `,a.comparison?a.useAsButton||t._lastColor||l.style.setProperty("--pcr-color",p):(r.button.style.setProperty("--pcr-color",p),r.button.classList.remove("clear"));const u=i.toHEXA().toString();for(const{el:e,color:o}of t._swatchColors)e.classList[u===o.toHEXA().toString()?"add":"remove"]("pcr-active");c.style.setProperty("--pcr-color",p)}}),hue:C({lock:"v"===i?"h":"v",element:t._root.hue.picker,wrapper:t._root.hue.slider,onstop:()=>t._emit("changestop","slider",t),onchange(o){if(!e.hue||!e.palette)return;const n=s();t._recalc&&(n.h=360*o),this.element.style.backgroundColor=`hsl(${n.h}, 100%, 50%)`,r.palette.trigger()}}),opacity:C({lock:"v"===n?"h":"v",element:t._root.opacity.picker,wrapper:t._root.opacity.slider,onstop:()=>t._emit("changestop","slider",t),onchange(o){if(!e.opacity||!e.palette)return;const n=s();t._recalc&&(n.a=Math.round(100*o)/100),this.element.style.background=`rgba(0, 0, 0, ${n.a})`,r.palette.trigger()}}),selectable:k({elements:t._root.interaction.options,className:"active",onchange(e){t._representation=e.target.getAttribute("data-type").toUpperCase(),t._recalc&&t._updateOutput("swatch")}})};this._components=r}_bindEvents(){const{_root:t,options:e}=this,o=[i(t.interaction.clear,"click",(()=>this._clearColor())),i([t.interaction.cancel,t.preview.lastColor],"click",(()=>{this.setHSVA(...(this._lastColor||this._color).toHSVA(),!0),this._emit("cancel")})),i(t.interaction.save,"click",(()=>{!this.applyColor()&&!e.showAlways&&this.hide()})),i(t.interaction.result,["keyup","input"],(t=>{this.setColor(t.target.value,!0)&&!this._initializingActive&&(this._emit("change",this._color,"input",this),this._emit("changestop","input",this)),t.stopImmediatePropagation()})),i(t.interaction.result,["focus","blur"],(t=>{this._recalc="blur"===t.type,this._recalc&&this._updateOutput(null)})),i([t.palette.palette,t.palette.picker,t.hue.slider,t.hue.picker,t.opacity.slider,t.opacity.picker],["mousedown","touchstart"],(()=>this._recalc=!0),{passive:!0})];if(!e.showAlways){const n=e.closeWithKey;o.push(i(t.button,"click",(()=>this.isOpen()?this.hide():this.show())),i(document,"keyup",(t=>this.isOpen()&&(t.key===n||t.code===n)&&this.hide())),i(document,["touchstart","mousedown"],(e=>{this.isOpen()&&!l(e).some((e=>e===t.app||e===t.button))&&this.hide()}),{capture:!0}))}if(e.adjustableNumbers){const e={rgba:[255,255,255,1],hsva:[360,100,100,1],hsla:[360,100,100,1],cmyk:[100,100,100,100]};p(t.interaction.result,((t,o,n)=>{const i=e[this.getColorRepresentation().toLowerCase()];if(i){const e=i[n],s=t+(e>=100?1e3*o:o);return s<=0?0:Number((s{n.isOpen()&&(e.closeOnScroll&&n.hide(),null===t?(t=setTimeout((()=>t=null),100),requestAnimationFrame((function e(){n._rePositioningPicker(),null!==t&&requestAnimationFrame(e)}))):(clearTimeout(t),t=setTimeout((()=>t=null),100)))}),{capture:!0}))}this._eventBindings=o}_rePositioningPicker(){const{options:t}=this;if(!t.inline){if(!this._nanopop.update({container:document.body.getBoundingClientRect(),position:t.position})){const t=this._root.app,e=t.getBoundingClientRect();t.style.top=(window.innerHeight-e.height)/2+"px",t.style.left=(window.innerWidth-e.width)/2+"px"}}}_updateOutput(t){const{_root:e,_color:o,options:n}=this;if(e.interaction.type()){const t=`to${e.interaction.type().getAttribute("data-type")}`;e.interaction.result.value="function"==typeof o[t]?o[t]().toString(n.outputPrecision):""}!this._initializingActive&&this._recalc&&this._emit("change",o,t,this)}_clearColor(t=!1){const{_root:e,options:o}=this;o.useAsButton||e.button.style.setProperty("--pcr-color","rgba(0, 0, 0, 0.15)"),e.button.classList.add("clear"),o.showAlways||this.hide(),this._lastColor=null,this._initializingActive||t||(this._emit("save",null),this._emit("clear"))}_parseLocalColor(t){const{values:e,type:o,a:n}=w(t),{lockOpacity:i}=this.options,s=void 0!==n&&1!==n;return e&&3===e.length&&(e[3]=void 0),{values:!e||i&&s?null:e,type:o}}_t(t){return this.options.i18n[t]||E.I18N_DEFAULTS[t]}_emit(t,...e){this._eventListener[t].forEach((t=>t(...e,this)))}on(t,e){return this._eventListener[t].push(e),this}off(t,e){const o=this._eventListener[t]||[],n=o.indexOf(e);return~n&&o.splice(n,1),this}addSwatch(t){const{values:e}=this._parseLocalColor(t);if(e){const{_swatchColors:t,_root:o}=this,n=A(...e),s=r(` `);return o.swatches.appendChild(s),t.push({el:s,color:n}),this._eventBindings.push(i(s,"click",(()=>{this.setHSVA(...n.toHSVA(),!0),this._emit("swatchselect",n),this._emit("change",n,"swatch",this)}))),!0}return!1}removeSwatch(t){const e=this._swatchColors[t];if(e){const{el:o}=e;return this._root.swatches.removeChild(o),this._swatchColors.splice(t,1),!0}return!1}applyColor(t=!1){const{preview:e,button:o}=this._root,n=this._color.toRGBA().toString(0);return e.lastColor.style.setProperty("--pcr-color",n),this.options.useAsButton||o.style.setProperty("--pcr-color",n),o.classList.remove("clear"),this._lastColor=this._color.clone(),this._initializingActive||t||this._emit("save",this._color),this}destroy(){cancelAnimationFrame(this._setupAnimationFrame),this._eventBindings.forEach((t=>s(...t))),Object.keys(this._components).forEach((t=>this._components[t].destroy()))}destroyAndRemove(){this.destroy();const{root:t,app:e}=this._root;t.parentElement&&t.parentElement.removeChild(t),e.parentElement.removeChild(e),Object.keys(this).forEach((t=>this[t]=null))}hide(){return!!this.isOpen()&&(this._root.app.classList.remove("visible"),this._emit("hide"),!0)}show(){return!this.options.disabled&&!this.isOpen()&&(this._root.app.classList.add("visible"),this._rePositioningPicker(),this._emit("show",this._color),this)}isOpen(){return this._root.app.classList.contains("visible")}setHSVA(t=360,e=0,o=0,n=1,i=!1){const s=this._recalc;if(this._recalc=!1,t<0||t>360||e<0||e>100||o<0||o>100||n<0||n>1)return!1;this._color=A(t,e,o,n);const{hue:r,opacity:a,palette:l}=this._components;return r.update(t/360),a.update(n),l.update(e/100,1-o/100),i||this.applyColor(),s&&this._updateOutput(),this._recalc=s,!0}setColor(t,e=!1){if(null===t)return this._clearColor(e),!0;const{values:o,type:n}=this._parseLocalColor(t);if(o){const t=n.toUpperCase(),{options:i}=this._root.interaction,s=i.find((e=>e.getAttribute("data-type")===t));if(s&&!s.hidden)for(const t of i)t.classList[t===s?"add":"remove"]("active");return!!this.setHSVA(...o,e)&&this.setColorRepresentation(t)}return!1}setColorRepresentation(t){return t=t.toUpperCase(),!!this._root.interaction.options.find((e=>e.getAttribute("data-type").startsWith(t)&&!e.click()))}getColorRepresentation(){return this._representation}getColor(){return this._color}getSelectedColor(){return this._lastColor}getRoot(){return this._root}disable(){return this.hide(),this.options.disabled=!0,this._root.button.classList.add("disabled"),this}enable(){return this.options.disabled=!1,this._root.button.classList.remove("disabled"),this}}return e=e.default})()));
+//# sourceMappingURL=pickr.min.js.map
\ No newline at end of file