Initial commit: OCA Technical packages (595 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:03 +02:00
commit 2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions

View file

@ -0,0 +1,145 @@
=======================
Barcode action launcher
=======================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:3c485a267e137cb93808d8be407e34fb0f2fea6a72998cd8497ccdbc0d3515e1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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%2Fserver--ux-lightgray.png?logo=github
:target: https://github.com/OCA/server-ux/tree/16.0/barcode_action
: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-16-0/server-ux-16-0-barcode_action
: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=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows to use barcodes as launchers of actions.
The action will launch a function that uses the barcode in order to return an action.
**Table of contents**
.. contents::
:local:
Usage
=====
Actions must be configured with the following data in the context:
* model: Model where we can find the method (required)
* method: Method to execute (required)
* res_id: Id as base (optional)
The method must return an action. Installing this module with demo data will
install a demo application that allows the system administrator to find a
partner by the external reference encoded in a barcode.
Go to *Settings / Find partners* and scan a barcode that contains the
internal reference of an existing partner. As soon as you read the barcode
the system will redirect you to that partner's form view.
Technical implementation of this example:
Action::
<act_window id="res_partner_find"
name="Find Partner"
res_model="barcode.action"
view_mode="form"
view_type="form"
context="{'default_model': 'res.partner', 'default_method': 'find_res_partner_by_ref_using_barcode'}"
target="new"/>
<menuitem id="menu_orders_customers" name="Find partners"
action="res_partner_find"
parent="base.menu_administration"/>
Python code::
import json
from odoo import api, models, _
from odoo.tools.safe_eval import safe_eval
class ResPartner(models.Model):
_inherit = 'res.partner'
@api.multi
def find_res_partner_by_ref_using_barcode(self, barcode):
partner = self.search([('ref', '=', barcode)], limit=1)
if not partner:
action = self.env.ref('res_partner_find')
result = action.read()[0]
context = safe_eval(result['context'])
context.update({
'default_state': 'warning',
'default_status': _('Partner with Internal Reference '
'%s cannot be found') % barcode
})
result['context'] = json.dumps(context)
return result
action = self.env.ref('base.action_partner_form')
result = action.read()[0]
res = self.env.ref('base.view_partner_form', False)
result['views'] = [(res and res.id or False, 'form')]
result['res_id'] = partner.id
return result
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-ux/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 <https://github.com/OCA/server-ux/issues/new?body=module:%20barcode_action%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* Creu Blanca
* ForgeFlow
Contributors
~~~~~~~~~~~~
* Enric Tobella <etobella@creublanca.es>
* Jordi Ballester <jordi.ballester@forgeflow.com>
* Foram Shah <foram.shah@initos.com>
* Dhara Solanki <dhara.solanki@initos.com>
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 <https://github.com/OCA/server-ux/tree/16.0/barcode_action>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,2 @@
from . import wizard
from . import models

View file

@ -0,0 +1,26 @@
# Copyright 2017 Creu Blanca
# Copyright 2020 ForgeFlow S.L.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
{
"name": "Barcode action launcher",
"version": "16.0.1.0.1",
"category": "Extra Tools",
"website": "https://github.com/OCA/server-ux",
"author": "Creu Blanca, ForgeFlow, Odoo Community Association (OCA)",
"license": "AGPL-3",
"installable": True,
"application": False,
"summary": "Allows to use barcodes as a launcher",
"depends": ["barcodes"],
"data": [
"security/ir.model.access.csv",
"wizard/barcode_action_view.xml",
],
"assets": {
"web.assets_backend": [
"barcode_action/static/src/js/action_barcode_widget.esm.js",
],
},
"demo": ["demo/barcode_action_demo.xml"],
}

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="res_partner_find" model="ir.actions.act_window">
<field name="name">Find Partner</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">barcode.action</field>
<field name="view_mode">form</field>
<field
name="context"
>{'default_model': 'res.partner', 'default_method': 'find_res_partner_by_ref_using_barcode'}
</field>
<field name="target">new</field>
</record>
<menuitem
id="menu_orders_customers"
name="Find partners"
action="res_partner_find"
parent="base.menu_administration"
/>
</odoo>

View file

@ -0,0 +1,136 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * barcode_action
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: barcode_action
#: model:ir.model,name:barcode_action.model_barcode_action
msgid "Barcode Action"
msgstr ""
#. module: barcode_action
#: model:ir.actions.act_window,name:barcode_action.barcode_action_action
msgid "Barcode Launcher"
msgstr ""
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action___barcode_scanned
msgid "Barcode Scanned"
msgstr ""
#. module: barcode_action
#: model_terms:ir.ui.view,arch_db:barcode_action.barcode_action_form
msgid "Close"
msgstr ""
#. module: barcode_action
#: model:ir.model,name:barcode_action.model_res_partner
msgid "Contact"
msgstr ""
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__create_uid
msgid "Created by"
msgstr ""
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__create_date
msgid "Created on"
msgstr ""
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__display_name
msgid "Display Name"
msgstr ""
#. module: barcode_action
#: model_terms:ir.ui.view,arch_db:barcode_action.barcode_action_form
msgid "Find"
msgstr ""
#. module: barcode_action
#: model:ir.actions.act_window,name:barcode_action.res_partner_find
msgid "Find Partner"
msgstr ""
#. module: barcode_action
#: model:ir.ui.menu,name:barcode_action.menu_orders_customers
msgid "Find partners"
msgstr ""
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__id
msgid "ID"
msgstr ""
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action____last_update
msgid "Last Modified on"
msgstr ""
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__write_uid
msgid "Last Updated by"
msgstr ""
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__write_date
msgid "Last Updated on"
msgstr ""
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__method
msgid "Method"
msgstr ""
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__model
msgid "Model"
msgstr ""
#. module: barcode_action
#. odoo-python
#: code:addons/barcode_action/models/res_partner.py:0
#, python-format
msgid "Partner with Internal Reference %s cannot be found"
msgstr ""
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__res_id
msgid "Res"
msgstr ""
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__state
msgid "State"
msgstr ""
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__status
msgid "Status"
msgstr ""
#. module: barcode_action
#: model:ir.model.fields,help:barcode_action.field_barcode_action___barcode_scanned
msgid "Value of the last barcode scanned."
msgstr ""
#. module: barcode_action
#: model:ir.model.fields.selection,name:barcode_action.selection__barcode_action__state__waiting
msgid "Waiting"
msgstr ""
#. module: barcode_action
#: model:ir.model.fields.selection,name:barcode_action.selection__barcode_action__state__warning
msgid "Warning"
msgstr ""

View file

@ -0,0 +1,136 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * barcode_action
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: barcode_action
#: model:ir.model,name:barcode_action.model_barcode_action
msgid "Barcode Action"
msgstr "barcode.action"
#. module: barcode_action
#: model:ir.actions.act_window,name:barcode_action.barcode_action_action
msgid "Barcode Launcher"
msgstr "Barkod pokretač"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action___barcode_scanned
msgid "Barcode Scanned"
msgstr "Barkod skeniran"
#. module: barcode_action
#: model_terms:ir.ui.view,arch_db:barcode_action.barcode_action_form
msgid "Close"
msgstr "Zatvori"
#. module: barcode_action
#: model:ir.model,name:barcode_action.model_res_partner
msgid "Contact"
msgstr "Kontakt"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__display_name
msgid "Display Name"
msgstr "Naziv"
#. module: barcode_action
#: model_terms:ir.ui.view,arch_db:barcode_action.barcode_action_form
msgid "Find"
msgstr "Traži"
#. module: barcode_action
#: model:ir.actions.act_window,name:barcode_action.res_partner_find
msgid "Find Partner"
msgstr "Nađi partnera"
#. module: barcode_action
#: model:ir.ui.menu,name:barcode_action.menu_orders_customers
msgid "Find partners"
msgstr "Nađi partnere"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__id
msgid "ID"
msgstr "ID"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action____last_update
msgid "Last Modified on"
msgstr "Zadnje modificirano"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__write_uid
msgid "Last Updated by"
msgstr "Zadnje ažurirao"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__write_date
msgid "Last Updated on"
msgstr "Zadnje ažuriranje"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__method
msgid "Method"
msgstr "Metoda"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__model
msgid "Model"
msgstr "Model"
#. module: barcode_action
#. odoo-python
#: code:addons/barcode_action/models/res_partner.py:0
#, python-format
msgid "Partner with Internal Reference %s cannot be found"
msgstr "Partner sa šifrom %s nije pronađen"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__res_id
msgid "Res"
msgstr "Res"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__state
msgid "State"
msgstr "Država"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__status
msgid "Status"
msgstr "Status"
#. module: barcode_action
#: model:ir.model.fields,help:barcode_action.field_barcode_action___barcode_scanned
msgid "Value of the last barcode scanned."
msgstr "Vrijednost zadnje skeniranog barkoda."
#. module: barcode_action
#: model:ir.model.fields.selection,name:barcode_action.selection__barcode_action__state__waiting
msgid "Waiting"
msgstr "Na čekanju"
#. module: barcode_action
#: model:ir.model.fields.selection,name:barcode_action.selection__barcode_action__state__warning
msgid "Warning"
msgstr "Upozorenje"

View file

@ -0,0 +1,139 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * barcode_action
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-12-07 22:35+0000\n"
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\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 4.17\n"
#. module: barcode_action
#: model:ir.model,name:barcode_action.model_barcode_action
msgid "Barcode Action"
msgstr "Acción de Código de Barras"
#. module: barcode_action
#: model:ir.actions.act_window,name:barcode_action.barcode_action_action
msgid "Barcode Launcher"
msgstr "Buscador por código de barras"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action___barcode_scanned
msgid "Barcode Scanned"
msgstr "Código de barras escaneado"
#. module: barcode_action
#: model_terms:ir.ui.view,arch_db:barcode_action.barcode_action_form
msgid "Close"
msgstr "Cerrar"
#. module: barcode_action
#: model:ir.model,name:barcode_action.model_res_partner
msgid "Contact"
msgstr "Contacto"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__create_date
msgid "Created on"
msgstr "Creado en"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__display_name
msgid "Display Name"
msgstr "Nombre mostrado"
#. module: barcode_action
#: model_terms:ir.ui.view,arch_db:barcode_action.barcode_action_form
msgid "Find"
msgstr "Buscar"
#. module: barcode_action
#: model:ir.actions.act_window,name:barcode_action.res_partner_find
msgid "Find Partner"
msgstr "Buscar Contacto"
#. module: barcode_action
#: model:ir.ui.menu,name:barcode_action.menu_orders_customers
msgid "Find partners"
msgstr "Buscar contactos"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__id
msgid "ID"
msgstr "ID"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action____last_update
msgid "Last Modified on"
msgstr "Última modificación en"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__write_uid
msgid "Last Updated by"
msgstr "Última actualización de"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__write_date
msgid "Last Updated on"
msgstr "Última actualización en"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__method
msgid "Method"
msgstr "Método"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__model
msgid "Model"
msgstr "Modelo"
#. module: barcode_action
#. odoo-python
#: code:addons/barcode_action/models/res_partner.py:0
#, python-format
msgid "Partner with Internal Reference %s cannot be found"
msgstr "No se ha encontrado el contacto con referencia %s"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__res_id
msgid "Res"
msgstr "Res"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__state
msgid "State"
msgstr "Estado"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__status
msgid "Status"
msgstr "Estado"
#. module: barcode_action
#: model:ir.model.fields,help:barcode_action.field_barcode_action___barcode_scanned
msgid "Value of the last barcode scanned."
msgstr "Valor del último código de barras escaneado."
#. module: barcode_action
#: model:ir.model.fields.selection,name:barcode_action.selection__barcode_action__state__waiting
msgid "Waiting"
msgstr "Esperando"
#. module: barcode_action
#: model:ir.model.fields.selection,name:barcode_action.selection__barcode_action__state__warning
msgid "Warning"
msgstr "Aviso"

View file

@ -0,0 +1,141 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * barcode_action
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2019-12-04 12:04+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>\n"
"Language-Team: none\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 3.9.1\n"
#. module: barcode_action
#: model:ir.model,name:barcode_action.model_barcode_action
#, fuzzy
msgid "Barcode Action"
msgstr "barcode.action"
#. module: barcode_action
#: model:ir.actions.act_window,name:barcode_action.barcode_action_action
msgid "Barcode Launcher"
msgstr "Barkod pokretač"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action___barcode_scanned
msgid "Barcode Scanned"
msgstr "Barkod skeniran"
#. module: barcode_action
#: model_terms:ir.ui.view,arch_db:barcode_action.barcode_action_form
msgid "Close"
msgstr "Zatvori"
#. module: barcode_action
#: model:ir.model,name:barcode_action.model_res_partner
msgid "Contact"
msgstr "Kontakt"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__display_name
msgid "Display Name"
msgstr "Naziv"
#. module: barcode_action
#: model_terms:ir.ui.view,arch_db:barcode_action.barcode_action_form
msgid "Find"
msgstr "Traži"
#. module: barcode_action
#: model:ir.actions.act_window,name:barcode_action.res_partner_find
msgid "Find Partner"
msgstr "Nađi partnera"
#. module: barcode_action
#: model:ir.ui.menu,name:barcode_action.menu_orders_customers
msgid "Find partners"
msgstr "Nađi partnere"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__id
msgid "ID"
msgstr "ID"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action____last_update
msgid "Last Modified on"
msgstr "Zadnje modificirano"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__write_uid
msgid "Last Updated by"
msgstr "Zadnje ažurirao"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__write_date
msgid "Last Updated on"
msgstr "Zadnje ažuriranje"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__method
msgid "Method"
msgstr "Metoda"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__model
msgid "Model"
msgstr "Model"
#. module: barcode_action
#. odoo-python
#: code:addons/barcode_action/models/res_partner.py:0
#, python-format
msgid "Partner with Internal Reference %s cannot be found"
msgstr "Partner sa šifrom %s nije pronađen"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__res_id
msgid "Res"
msgstr "Res"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__state
msgid "State"
msgstr "Država"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__status
msgid "Status"
msgstr "Status"
#. module: barcode_action
#: model:ir.model.fields,help:barcode_action.field_barcode_action___barcode_scanned
msgid "Value of the last barcode scanned."
msgstr "Vrijednost zadnje skeniranog barkoda."
#. module: barcode_action
#: model:ir.model.fields.selection,name:barcode_action.selection__barcode_action__state__waiting
msgid "Waiting"
msgstr "Na čekanju"
#. module: barcode_action
#: model:ir.model.fields.selection,name:barcode_action.selection__barcode_action__state__warning
msgid "Warning"
msgstr "Upozorenje"

View file

@ -0,0 +1,139 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * barcode_action
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-09-18 10:06+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\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 5.6.2\n"
#. module: barcode_action
#: model:ir.model,name:barcode_action.model_barcode_action
msgid "Barcode Action"
msgstr "Azione codice a barre"
#. module: barcode_action
#: model:ir.actions.act_window,name:barcode_action.barcode_action_action
msgid "Barcode Launcher"
msgstr "Applicazione codice a barre"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action___barcode_scanned
msgid "Barcode Scanned"
msgstr "Codice a barre letto"
#. module: barcode_action
#: model_terms:ir.ui.view,arch_db:barcode_action.barcode_action_form
msgid "Close"
msgstr "Chiudi"
#. module: barcode_action
#: model:ir.model,name:barcode_action.model_res_partner
msgid "Contact"
msgstr "Contatto"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__create_date
msgid "Created on"
msgstr "Creato il"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: barcode_action
#: model_terms:ir.ui.view,arch_db:barcode_action.barcode_action_form
msgid "Find"
msgstr "Trova"
#. module: barcode_action
#: model:ir.actions.act_window,name:barcode_action.res_partner_find
msgid "Find Partner"
msgstr "Trova partner"
#. module: barcode_action
#: model:ir.ui.menu,name:barcode_action.menu_orders_customers
msgid "Find partners"
msgstr "Trova partner"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__id
msgid "ID"
msgstr "ID"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__method
msgid "Method"
msgstr "Metodo"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__model
msgid "Model"
msgstr "Modello"
#. module: barcode_action
#. odoo-python
#: code:addons/barcode_action/models/res_partner.py:0
#, python-format
msgid "Partner with Internal Reference %s cannot be found"
msgstr "Partner con riferimento interno %s non trovato"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__res_id
msgid "Res"
msgstr "Res"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__state
msgid "State"
msgstr "Stato"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__status
msgid "Status"
msgstr "Stato"
#. module: barcode_action
#: model:ir.model.fields,help:barcode_action.field_barcode_action___barcode_scanned
msgid "Value of the last barcode scanned."
msgstr "Valore dell'ultimo codice a barre letto."
#. module: barcode_action
#: model:ir.model.fields.selection,name:barcode_action.selection__barcode_action__state__waiting
msgid "Waiting"
msgstr "In attesa"
#. module: barcode_action
#: model:ir.model.fields.selection,name:barcode_action.selection__barcode_action__state__warning
msgid "Warning"
msgstr "Attenzione"

View file

@ -0,0 +1,139 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * barcode_action
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2021-07-02 22:50+0000\n"
"Last-Translator: Pedro Castro Silva <pedrocs@exo.pt>\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 4.3.2\n"
#. module: barcode_action
#: model:ir.model,name:barcode_action.model_barcode_action
msgid "Barcode Action"
msgstr "Ação de Código de Barras"
#. module: barcode_action
#: model:ir.actions.act_window,name:barcode_action.barcode_action_action
msgid "Barcode Launcher"
msgstr "Launcher de Códigos de Barras"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action___barcode_scanned
msgid "Barcode Scanned"
msgstr "Código de Barras Digitalizado"
#. module: barcode_action
#: model_terms:ir.ui.view,arch_db:barcode_action.barcode_action_form
msgid "Close"
msgstr "Fechar"
#. module: barcode_action
#: model:ir.model,name:barcode_action.model_res_partner
msgid "Contact"
msgstr "Contacto"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__create_uid
msgid "Created by"
msgstr "Criado por"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__create_date
msgid "Created on"
msgstr "Criado em"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__display_name
msgid "Display Name"
msgstr "Nome a Exibir"
#. module: barcode_action
#: model_terms:ir.ui.view,arch_db:barcode_action.barcode_action_form
msgid "Find"
msgstr "Pesquisar"
#. module: barcode_action
#: model:ir.actions.act_window,name:barcode_action.res_partner_find
msgid "Find Partner"
msgstr "Pesquisar Parceiro"
#. module: barcode_action
#: model:ir.ui.menu,name:barcode_action.menu_orders_customers
msgid "Find partners"
msgstr "Pesquisar Parceiros"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__id
msgid "ID"
msgstr "ID"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action____last_update
msgid "Last Modified on"
msgstr "Última Modificação em"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__write_uid
msgid "Last Updated by"
msgstr "Última Atualização por"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__write_date
msgid "Last Updated on"
msgstr "Última Atualização em"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__method
msgid "Method"
msgstr "Método"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__model
msgid "Model"
msgstr "Modelo"
#. module: barcode_action
#. odoo-python
#: code:addons/barcode_action/models/res_partner.py:0
#, python-format
msgid "Partner with Internal Reference %s cannot be found"
msgstr "O parceiro com Refª Interna %s não pode ser encontrado"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__res_id
msgid "Res"
msgstr "Res"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__state
msgid "State"
msgstr "Estado"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__status
msgid "Status"
msgstr "Situação"
#. module: barcode_action
#: model:ir.model.fields,help:barcode_action.field_barcode_action___barcode_scanned
msgid "Value of the last barcode scanned."
msgstr "Valor do último código de barras digitalizado."
#. module: barcode_action
#: model:ir.model.fields.selection,name:barcode_action.selection__barcode_action__state__waiting
msgid "Waiting"
msgstr "À Espera"
#. module: barcode_action
#: model:ir.model.fields.selection,name:barcode_action.selection__barcode_action__state__warning
msgid "Warning"
msgstr "Aviso"

View file

@ -0,0 +1,139 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * barcode_action
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-02-22 11:06+0000\n"
"Last-Translator: İsmail Çağan Yılmaz <ismail.cagan.yilmaz@gmail.com>\n"
"Language-Team: none\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 5.6.2\n"
#. module: barcode_action
#: model:ir.model,name:barcode_action.model_barcode_action
msgid "Barcode Action"
msgstr "Barkod Eylemi"
#. module: barcode_action
#: model:ir.actions.act_window,name:barcode_action.barcode_action_action
msgid "Barcode Launcher"
msgstr "Barkod Başlatıcı"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action___barcode_scanned
msgid "Barcode Scanned"
msgstr "Taranan Barkod"
#. module: barcode_action
#: model_terms:ir.ui.view,arch_db:barcode_action.barcode_action_form
msgid "Close"
msgstr "Kapat"
#. module: barcode_action
#: model:ir.model,name:barcode_action.model_res_partner
msgid "Contact"
msgstr "Irtibat"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__create_uid
msgid "Created by"
msgstr "Tarafından oluşturuldu"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__create_date
msgid "Created on"
msgstr "Tarihinde oluşturuldu"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__display_name
msgid "Display Name"
msgstr "Görünür Isim"
#. module: barcode_action
#: model_terms:ir.ui.view,arch_db:barcode_action.barcode_action_form
msgid "Find"
msgstr "Bul"
#. module: barcode_action
#: model:ir.actions.act_window,name:barcode_action.res_partner_find
msgid "Find Partner"
msgstr "Iş Ortağını Bul"
#. module: barcode_action
#: model:ir.ui.menu,name:barcode_action.menu_orders_customers
msgid "Find partners"
msgstr "Iş ortaklarını bul"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__id
msgid "ID"
msgstr "ID"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action____last_update
msgid "Last Modified on"
msgstr "Son Değiştirilme Tarihi"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__write_uid
msgid "Last Updated by"
msgstr "Son Güncelleyen"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__write_date
msgid "Last Updated on"
msgstr "Son Güncelleme Tarihi"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__method
msgid "Method"
msgstr "Metodu"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__model
msgid "Model"
msgstr "Model"
#. module: barcode_action
#. odoo-python
#: code:addons/barcode_action/models/res_partner.py:0
#, python-format
msgid "Partner with Internal Reference %s cannot be found"
msgstr "%s Dahili Referanslı İş Ortağı bulunamıyor"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__res_id
msgid "Res"
msgstr "Kaynak"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__state
msgid "State"
msgstr "Durumu"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__status
msgid "Status"
msgstr "Durum"
#. module: barcode_action
#: model:ir.model.fields,help:barcode_action.field_barcode_action___barcode_scanned
msgid "Value of the last barcode scanned."
msgstr "Taranan son barkodun değeri."
#. module: barcode_action
#: model:ir.model.fields.selection,name:barcode_action.selection__barcode_action__state__waiting
msgid "Waiting"
msgstr "Bekliyor"
#. module: barcode_action
#: model:ir.model.fields.selection,name:barcode_action.selection__barcode_action__state__warning
msgid "Warning"
msgstr "Uyarı"

View file

@ -0,0 +1,140 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * barcode_action
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2019-09-02 16:57+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: barcode_action
#: model:ir.model,name:barcode_action.model_barcode_action
#, fuzzy
msgid "Barcode Action"
msgstr "barcode.action"
#. module: barcode_action
#: model:ir.actions.act_window,name:barcode_action.barcode_action_action
msgid "Barcode Launcher"
msgstr "条形码启动器"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action___barcode_scanned
msgid "Barcode Scanned"
msgstr "条形码扫描"
#. module: barcode_action
#: model_terms:ir.ui.view,arch_db:barcode_action.barcode_action_form
msgid "Close"
msgstr "关闭"
#. module: barcode_action
#: model:ir.model,name:barcode_action.model_res_partner
msgid "Contact"
msgstr "联系人"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__create_uid
msgid "Created by"
msgstr "创建者"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__create_date
msgid "Created on"
msgstr "创建时间"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__display_name
msgid "Display Name"
msgstr "显示名称"
#. module: barcode_action
#: model_terms:ir.ui.view,arch_db:barcode_action.barcode_action_form
msgid "Find"
msgstr "查找"
#. module: barcode_action
#: model:ir.actions.act_window,name:barcode_action.res_partner_find
msgid "Find Partner"
msgstr "查找合作伙伴"
#. module: barcode_action
#: model:ir.ui.menu,name:barcode_action.menu_orders_customers
msgid "Find partners"
msgstr "查找合作伙伴"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__id
msgid "ID"
msgstr "ID"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action____last_update
msgid "Last Modified on"
msgstr "最后修改时间"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__write_uid
msgid "Last Updated by"
msgstr "最后更新者"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__write_date
msgid "Last Updated on"
msgstr "最后更新时间"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__method
msgid "Method"
msgstr "方法"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__model
msgid "Model"
msgstr "模型"
#. module: barcode_action
#. odoo-python
#: code:addons/barcode_action/models/res_partner.py:0
#, python-format
msgid "Partner with Internal Reference %s cannot be found"
msgstr "无法找到内部参考%s的合作伙伴"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__res_id
msgid "Res"
msgstr "Res"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__state
msgid "State"
msgstr "状态"
#. module: barcode_action
#: model:ir.model.fields,field_description:barcode_action.field_barcode_action__status
msgid "Status"
msgstr "状态"
#. module: barcode_action
#: model:ir.model.fields,help:barcode_action.field_barcode_action___barcode_scanned
msgid "Value of the last barcode scanned."
msgstr "最后扫描的条形码的值。"
#. module: barcode_action
#: model:ir.model.fields.selection,name:barcode_action.selection__barcode_action__state__waiting
msgid "Waiting"
msgstr "等待"
#. module: barcode_action
#: model:ir.model.fields.selection,name:barcode_action.selection__barcode_action__state__warning
msgid "Warning"
msgstr "警告"

View file

@ -0,0 +1 @@
from . import res_partner

View file

@ -0,0 +1,35 @@
# Copyright 2018 Creu Blanca
# Copyright 2020 ForgeFlow S.L.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
import json
from odoo import _, models
from odoo.tools.safe_eval import safe_eval
class ResPartner(models.Model):
_inherit = "res.partner"
def find_res_partner_by_ref_using_barcode(self, barcode):
partner = self.search([("ref", "=", barcode)], limit=1)
if not partner:
xmlid = "barcode_action.res_partner_find"
action = self.env["ir.actions.act_window"]._for_xml_id(xmlid)
context = safe_eval(action["context"])
context.update(
{
"default_state": "warning",
"default_status": _(
"Partner with Internal Reference " "%s cannot be found"
)
% barcode,
}
)
action["context"] = json.dumps(context)
return action
xmlid = "base.action_partner_form"
action = self.env["ir.actions.act_window"]._for_xml_id(xmlid)
res = self.env.ref("base.view_partner_form", False)
action["views"] = [(res and res.id or False, "form")]
action["res_id"] = partner.id
return action

View file

@ -0,0 +1,4 @@
* Enric Tobella <etobella@creublanca.es>
* Jordi Ballester <jordi.ballester@forgeflow.com>
* Foram Shah <foram.shah@initos.com>
* Dhara Solanki <dhara.solanki@initos.com>

View file

@ -0,0 +1,3 @@
This module allows to use barcodes as launchers of actions.
The action will launch a function that uses the barcode in order to return an action.

View file

@ -0,0 +1,59 @@
Actions must be configured with the following data in the context:
* model: Model where we can find the method (required)
* method: Method to execute (required)
* res_id: Id as base (optional)
The method must return an action. Installing this module with demo data will
install a demo application that allows the system administrator to find a
partner by the external reference encoded in a barcode.
Go to *Settings / Find partners* and scan a barcode that contains the
internal reference of an existing partner. As soon as you read the barcode
the system will redirect you to that partner's form view.
Technical implementation of this example:
Action::
<act_window id="res_partner_find"
name="Find Partner"
res_model="barcode.action"
view_mode="form"
view_type="form"
context="{'default_model': 'res.partner', 'default_method': 'find_res_partner_by_ref_using_barcode'}"
target="new"/>
<menuitem id="menu_orders_customers" name="Find partners"
action="res_partner_find"
parent="base.menu_administration"/>
Python code::
import json
from odoo import api, models, _
from odoo.tools.safe_eval import safe_eval
class ResPartner(models.Model):
_inherit = 'res.partner'
@api.multi
def find_res_partner_by_ref_using_barcode(self, barcode):
partner = self.search([('ref', '=', barcode)], limit=1)
if not partner:
action = self.env.ref('res_partner_find')
result = action.read()[0]
context = safe_eval(result['context'])
context.update({
'default_state': 'warning',
'default_status': _('Partner with Internal Reference '
'%s cannot be found') % barcode
})
result['context'] = json.dumps(context)
return result
action = self.env.ref('base.action_partner_form')
result = action.read()[0]
res = self.env.ref('base.view_partner_form', False)
result['views'] = [(res and res.id or False, 'form')]
result['res_id'] = partner.id
return result

View file

@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_barcode_action,barcode.action,model_barcode_action,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_barcode_action barcode.action model_barcode_action base.group_user 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,488 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>Barcode action launcher</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="barcode-action-launcher">
<h1 class="title">Barcode action launcher</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:3c485a267e137cb93808d8be407e34fb0f2fea6a72998cd8497ccdbc0d3515e1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/server-ux/tree/16.0/barcode_action"><img alt="OCA/server-ux" src="https://img.shields.io/badge/github-OCA%2Fserver--ux-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/server-ux-16-0/server-ux-16-0-barcode_action"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/server-ux&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module allows to use barcodes as launchers of actions.</p>
<p>The action will launch a function that uses the barcode in order to return an action.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-3">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-4">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-5">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-6">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-1">Usage</a></h1>
<p>Actions must be configured with the following data in the context:
* model: Model where we can find the method (required)
* method: Method to execute (required)
* res_id: Id as base (optional)</p>
<p>The method must return an action. Installing this module with demo data will
install a demo application that allows the system administrator to find a
partner by the external reference encoded in a barcode.</p>
<p>Go to <em>Settings / Find partners</em> and scan a barcode that contains the
internal reference of an existing partner. As soon as you read the barcode
the system will redirect you to that partners form view.</p>
<p>Technical implementation of this example:</p>
<p>Action:</p>
<pre class="literal-block">
&lt;act_window id=&quot;res_partner_find&quot;
name=&quot;Find Partner&quot;
res_model=&quot;barcode.action&quot;
view_mode=&quot;form&quot;
view_type=&quot;form&quot;
context=&quot;{'default_model': 'res.partner', 'default_method': 'find_res_partner_by_ref_using_barcode'}&quot;
target=&quot;new&quot;/&gt;
&lt;menuitem id=&quot;menu_orders_customers&quot; name=&quot;Find partners&quot;
action=&quot;res_partner_find&quot;
parent=&quot;base.menu_administration&quot;/&gt;
</pre>
<p>Python code:</p>
<pre class="literal-block">
import json
from odoo import api, models, _
from odoo.tools.safe_eval import safe_eval
class ResPartner(models.Model):
_inherit = 'res.partner'
&#64;api.multi
def find_res_partner_by_ref_using_barcode(self, barcode):
partner = self.search([('ref', '=', barcode)], limit=1)
if not partner:
action = self.env.ref('res_partner_find')
result = action.read()[0]
context = safe_eval(result['context'])
context.update({
'default_state': 'warning',
'default_status': _('Partner with Internal Reference '
'%s cannot be found') % barcode
})
result['context'] = json.dumps(context)
return result
action = self.env.ref('base.action_partner_form')
result = action.read()[0]
res = self.env.ref('base.view_partner_form', False)
result['views'] = [(res and res.id or False, 'form')]
result['res_id'] = partner.id
return result
</pre>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/server-ux/issues">GitHub Issues</a>.
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
<a class="reference external" href="https://github.com/OCA/server-ux/issues/new?body=module:%20barcode_action%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-3">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-4">Authors</a></h2>
<ul class="simple">
<li>Creu Blanca</li>
<li>ForgeFlow</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-5">Contributors</a></h2>
<ul class="simple">
<li>Enric Tobella &lt;<a class="reference external" href="mailto:etobella&#64;creublanca.es">etobella&#64;creublanca.es</a>&gt;</li>
<li>Jordi Ballester &lt;<a class="reference external" href="mailto:jordi.ballester&#64;forgeflow.com">jordi.ballester&#64;forgeflow.com</a>&gt;</li>
<li>Foram Shah &lt;<a class="reference external" href="mailto:foram.shah&#64;initos.com">foram.shah&#64;initos.com</a>&gt;</li>
<li>Dhara Solanki &lt;<a class="reference external" href="mailto:dhara.solanki&#64;initos.com">dhara.solanki&#64;initos.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-6">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>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.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/server-ux/tree/16.0/barcode_action">OCA/server-ux</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,33 @@
/** @odoo-module **/
import {registry} from "@web/core/registry";
import {standardFieldProps} from "@web/views/fields/standard_field_props";
import {useBus, useService} from "@web/core/utils/hooks";
const {Component, xml} = owl;
export class ActionBarcodeField extends Component {
setup() {
const barcode = useService("barcode");
this.rpc = useService("rpc");
useBus(barcode.bus, "barcode_scanned", this.onBarcodeScanned);
}
onBarcodeScanned(event) {
const {barcode} = event.detail;
var self = this;
var record = this.props.record;
this.rpc(`/web/dataset/call_kw/${record.data.model}/${record.data.method}`, {
model: record.data.model,
method: record.data.method,
args: [[record.data.res_id], barcode],
kwargs: {context: this.props.record.context},
}).then(function (action) {
self.env.services.action.doAction(action);
});
}
}
ActionBarcodeField.template = xml``;
ActionBarcodeField.props = {...standardFieldProps};
registry.category("fields").add("action_barcode_handler", ActionBarcodeField);

View file

@ -0,0 +1 @@
from . import test_partner_find

View file

@ -0,0 +1,22 @@
# Copyright 2018 Creu Blanca
# Copyright 2020 ForgeFlow S.L.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from odoo.tests.common import TransactionCase
class TestPartnerFind(TransactionCase):
def test_partner(self):
partner_obj = self.env["res.partner"]
ref = "testing_partner_internal_reference"
partner = partner_obj.create({"name": "Testing partner", "ref": ref})
# We should find the partner when the ref is found
self.assertEqual(
partner.id,
partner_obj.find_res_partner_by_ref_using_barcode(ref).get("res_id", False),
)
# No partner is found, then there is no res_id on the result
self.assertFalse(
partner_obj.find_res_partner_by_ref_using_barcode(
"{}-{}".format(ref, ref)
).get("res_id", False)
)

View file

@ -0,0 +1 @@
from . import barcode_action

View file

@ -0,0 +1,17 @@
from odoo import fields, models
class BarcodeAction(models.TransientModel):
_name = "barcode.action"
_inherit = "barcodes.barcode_events_mixin"
_description = "Barcode Action"
model = fields.Char(required=True, readonly=True)
res_id = fields.Integer()
method = fields.Char(required=True, readonly=True)
state = fields.Selection(
[("waiting", "Waiting"), ("warning", "Warning")],
default="waiting",
readonly=True,
)
status = fields.Text(readonly=True, default="Start scanning")

View file

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2020 ForgeFlow S.L.
Copyright 2017 Creu Blanca
License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
-->
<odoo>
<record id="barcode_action_form" model="ir.ui.view">
<field name="name">barcode.action.form</field>
<field name="model">barcode.action</field>
<field name="arch" type="xml">
<form string="Find">
<div
class="alert alert-success text-center o_form_header"
role="alert"
style="margin-bottom:0px;"
attrs="{'invisible':[('state', '=', 'warning')]}"
>
<bold>
<field name="status" />
</bold>
</div>
<div
class="alert alert-danger alert-dismissable text-center"
role="alert"
style="margin-bottom:0px;"
attrs="{'invisible':[('state', '=', 'waiting')]}"
>
<bold>
<field name="status" />
</bold>
</div>
<field name="state" invisible="1" />
<field name="res_id" invisible="1" />
<field name="model" invisible="1" />
<field name="method" invisible="1" />
<field name="_barcode_scanned" widget="action_barcode_handler" />
<footer>
<button
name="action_cancel"
string="Close"
class="oe_link"
special="cancel"
/>
</footer>
</form>
</field>
</record>
<record id="barcode_action_action" model="ir.actions.act_window">
<field name="name">Barcode Launcher</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">barcode.action</field>
<field name="view_mode">form</field>
<field name="view_id" ref="barcode_action_form" />
<field name="target">new</field>
</record>
</odoo>