Browse Source

renamed to sale_exception suggested by pedro

pull/775/head
Atchuthan, Sodexis 9 years ago
commit
3177d4b823
  1. 41
      README.rst
  2. 6
      __init__.py
  3. 20
      __openerp__.py
  4. 212
      i18n/de.po
  5. 212
      i18n/es.po
  6. 211
      i18n/fi.po
  7. 212
      i18n/fr.po
  8. 212
      i18n/it.po
  9. 177
      i18n/sale_exceptions.pot
  10. 212
      i18n/sl.po
  11. 211
      i18n/zh_CN.po
  12. 188
      sale.py
  13. 19
      sale_exception_data.xml
  14. 114
      sale_view.xml
  15. 3
      security/ir.model.access.csv
  16. 5
      settings/sale.exception.csv
  17. BIN
      static/description/icon.png
  18. 5
      wizard/__init__.py
  19. 35
      wizard/sale_exception_confirm.py
  20. 39
      wizard/sale_exception_confirm_view.xml

41
README.rst

@ -0,0 +1,41 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:alt: License: AGPL-3
Sale Exceptions
===============
This module allows you attach several customizable exceptions to your
sale order in a way that you can filter orders by exceptions type and fix them.
This is especially useful in an order importation scenario such as with
the base_sale_multi_channels module, because it's likely a few orders have
errors when you import them (like product not found in Odoo, wrong line
format etc...)
Credits
=======
Contributors
------------
* Raphaël Valyi <raphael.valyi@akretion.com>
* Renato Lima <renato.lima@akretion.com>
* Sébastien BEAU <sebastien.beau@akretion.com>
* Guewen Baconnier <guewen.baconnier@camptocamp.com>
* Yannick Vaucher <yannick.vaucher@camptocamp.com>
* SodexisTeam <dev@sodexis.com>
Maintainer
----------
.. image:: http://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: http://odoo-community.org
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.
To contribute to this module, please visit http://odoo-community.org.

6
__init__.py

@ -0,0 +1,6 @@
# -*- coding: utf-8 -*-
# © 2011 Raphaël Valyi, Renato Lima, Guewen Baconnier, Sodexis
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import sale
from . import wizard

20
__openerp__.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# © 2011 Raphaël Valyi, Renato Lima, Guewen Baconnier, Sodexis
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{'name': 'Sale Exceptions',
'summary': 'Custom exceptions on sale order',
'version': '9.0.1.0.0',
'category': 'Generic Modules/Sale',
'author': "Akretion, Sodexis, Odoo Community Association (OCA)",
'website': 'http://www.akretion.com',
'depends': ['sale'],
'data': [
'security/ir.model.access.csv',
'wizard/sale_exception_confirm_view.xml',
'settings/sale.exception.csv',
'sale_exception_data.xml',
'sale_view.xml',
],
'installable': True,
}

212
i18n/de.po

@ -0,0 +1,212 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_exceptions
#
# Translators:
# Rudolf Schnapka <rs@techno-flex.de>, 2015
msgid ""
msgstr ""
"Project-Id-Version: sale-workflow (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-08 20:48+0000\n"
"PO-Revision-Date: 2015-10-09 13:41+0000\n"
"Last-Translator: Rudolf Schnapka <rs@techno-flex.de>\n"
"Language-Team: German (http://www.transifex.com/oca/OCA-sale-workflow-8-0/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_exceptions
#: field:sale.exception,active:0
msgid "Active"
msgstr "Aktiv"
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_form
msgid "Affected Sales Orders"
msgstr "Betroffene Verkaufsaufträge"
#. module: sale_exceptions
#: field:sale.exception,model:0
msgid "Apply on"
msgstr "Anwenden auf"
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_sales_order_filter
msgid "Blocked in draft"
msgstr "Im Entwurf gesperrt"
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:114
#: model:ir.actions.act_window,name:sale_exceptions.action_sale_exception_confirm
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
#, python-format
msgid "Blocked in draft due to exceptions"
msgstr "Im Entwurf wegen Ausnahmen gesperrt"
#. module: sale_exceptions
#: field:sale.exception,create_uid:0 field:sale.exception.confirm,create_uid:0
msgid "Created by"
msgstr "Angelegt durch"
#. module: sale_exceptions
#: field:sale.exception,create_date:0
#: field:sale.exception.confirm,create_date:0
msgid "Created on"
msgstr "Angelegt am"
#. module: sale_exceptions
#: field:sale.exception,description:0
msgid "Description"
msgstr "Beschreibung"
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:192
#, python-format
msgid "Error"
msgstr "Fehler"
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:193
#, python-format
msgid ""
"Error when evaluating the sale exception rule:\n"
" %s \n"
"(%s)"
msgstr "Fehler beim Auswerten des Verkaufs-Ausnahmenregel:\n%s\n(%s)"
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_order_form
msgid "Error:"
msgstr "Fehler:"
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_order_form
msgid "Exception"
msgstr "Ausnahme"
#. module: sale_exceptions
#: field:sale.exception,name:0
msgid "Exception Name"
msgstr "Ausnahmebezeichnung"
#. module: sale_exceptions
#: model:ir.actions.act_window,name:sale_exceptions.action_sale_test_tree
#: model:ir.ui.menu,name:sale_exceptions.menu_sale_test
msgid "Exception Rules"
msgstr "Ausnahmeregeln"
#. module: sale_exceptions
#: field:sale.order,exception_ids:0
msgid "Exceptions"
msgstr "Ausnahmen"
#. module: sale_exceptions
#: field:sale.exception.confirm,exception_ids:0
msgid "Exceptions to resolve"
msgstr "Zu behebende Ausnahmen"
#. module: sale_exceptions
#: help:sale.exception,sequence:0
msgid "Gives the sequence order when applying the test"
msgstr "Liefert die Reihenfolge beim Anwenden des Tests"
#. module: sale_exceptions
#: field:sale.exception,id:0 field:sale.exception.confirm,id:0
msgid "ID"
msgstr "ID"
#. module: sale_exceptions
#: field:sale.exception.confirm,ignore:0 field:sale.order,ignore_exceptions:0
msgid "Ignore Exceptions"
msgstr "Ausnahmen ignorieren"
#. module: sale_exceptions
#: field:sale.exception,write_uid:0 field:sale.exception.confirm,write_uid:0
msgid "Last Updated by"
msgstr "Zuletzt akualisiert durch"
#. module: sale_exceptions
#: field:sale.exception,write_date:0 field:sale.exception.confirm,write_date:0
msgid "Last Updated on"
msgstr "Zuletzt akualisiert am"
#. module: sale_exceptions
#: field:sale.order,main_exception_id:0
msgid "Main Exception"
msgstr "Haupt-Ausnahme"
#. module: sale_exceptions
#: model:sale.exception,name:sale_exceptions.excep_no_zip
msgid "No ZIP code on destination"
msgstr "Keine PLZ im Bestimmungsort"
#. module: sale_exceptions
#: model:sale.exception,name:sale_exceptions.excep_no_stock
msgid "Not Enough Virtual Stock"
msgstr "Unzureichender virtueller Bestand"
#. module: sale_exceptions
#: field:sale.exception,code:0
msgid "Python Code"
msgstr "Python Code"
#. module: sale_exceptions
#: help:sale.exception,code:0
msgid ""
"Python code executed to check if the exception apply or not. The code must "
"apply block = True to apply the exception."
msgstr "Python Code zum Prüfen, ob die Ausnahme eintritt oder nicht. Der Code muss block = True setzen zur Auslösung der Ausnahme."
#. module: sale_exceptions
#: field:sale.exception.confirm,sale_id:0
msgid "Sale"
msgstr "Verkauf"
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_tree
msgid "Sale Exception"
msgstr "Ausnahme im Verkauf"
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_form
msgid "Sale Exception Setup"
msgstr "Verkaufsausnahmen-Einstellungen"
#. module: sale_exceptions
#: model:ir.model,name:sale_exceptions.model_sale_exception
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
msgid "Sale Exceptions"
msgstr "Verkaufsausnahmen"
#. module: sale_exceptions
#: selection:sale.exception,model:0
msgid "Sale Order"
msgstr "Verkaufsauftrag"
#. module: sale_exceptions
#: selection:sale.exception,model:0
msgid "Sale Order Line"
msgstr "Auftragsposition"
#. module: sale_exceptions
#: field:sale.exception,sale_order_ids:0
msgid "Sale Orders"
msgstr "Verkaufsaufträge"
#. module: sale_exceptions
#: model:ir.model,name:sale_exceptions.model_sale_order
msgid "Sales Order"
msgstr "Verkaufsauftrag"
#. module: sale_exceptions
#: field:sale.exception,sequence:0
msgid "Sequence"
msgstr "Reihenfolge"
#. module: sale_exceptions
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
msgid "_Close"
msgstr "Schließen"

212
i18n/es.po

@ -0,0 +1,212 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_exceptions
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
msgid ""
msgstr ""
"Project-Id-Version: sale-workflow (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-09 12:27+0000\n"
"PO-Revision-Date: 2015-09-03 07:09+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: Spanish (http://www.transifex.com/oca/OCA-sale-workflow-8-0/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_exceptions
#: field:sale.exception,active:0
msgid "Active"
msgstr "Activo"
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_form
msgid "Affected Sales Orders"
msgstr "Pedidos de venta afectados"
#. module: sale_exceptions
#: field:sale.exception,model:0
msgid "Apply on"
msgstr "Aplicar en"
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_sales_order_filter
msgid "Blocked in draft"
msgstr ""
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:114
#: model:ir.actions.act_window,name:sale_exceptions.action_sale_exception_confirm
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
#, python-format
msgid "Blocked in draft due to exceptions"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,create_uid:0 field:sale.exception.confirm,create_uid:0
msgid "Created by"
msgstr "Creado por"
#. module: sale_exceptions
#: field:sale.exception,create_date:0
#: field:sale.exception.confirm,create_date:0
msgid "Created on"
msgstr "Creado en"
#. module: sale_exceptions
#: field:sale.exception,description:0
msgid "Description"
msgstr "Descripción"
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:192
#, python-format
msgid "Error"
msgstr ""
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:193
#, python-format
msgid ""
"Error when evaluating the sale exception rule:\n"
" %s \n"
"(%s)"
msgstr ""
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_order_form
msgid "Error:"
msgstr "Error:"
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_order_form
msgid "Exception"
msgstr "Excepción"
#. module: sale_exceptions
#: field:sale.exception,name:0
msgid "Exception Name"
msgstr "Nombre Excepción"
#. module: sale_exceptions
#: model:ir.actions.act_window,name:sale_exceptions.action_sale_test_tree
#: model:ir.ui.menu,name:sale_exceptions.menu_sale_test
msgid "Exception Rules"
msgstr "Reglas Excepción"
#. module: sale_exceptions
#: field:sale.order,exception_ids:0
msgid "Exceptions"
msgstr "Excepciones"
#. module: sale_exceptions
#: field:sale.exception.confirm,exception_ids:0
msgid "Exceptions to resolve"
msgstr "Excepciones a resolver"
#. module: sale_exceptions
#: help:sale.exception,sequence:0
msgid "Gives the sequence order when applying the test"
msgstr "Proporciona el orden de secuencia cuando el test es aplicado"
#. module: sale_exceptions
#: field:sale.exception,id:0 field:sale.exception.confirm,id:0
msgid "ID"
msgstr "ID"
#. module: sale_exceptions
#: field:sale.exception.confirm,ignore:0 field:sale.order,ignore_exceptions:0
msgid "Ignore Exceptions"
msgstr "Ignorar Excepciones"
#. module: sale_exceptions
#: field:sale.exception,write_uid:0 field:sale.exception.confirm,write_uid:0
msgid "Last Updated by"
msgstr "Última actualización de"
#. module: sale_exceptions
#: field:sale.exception,write_date:0 field:sale.exception.confirm,write_date:0
msgid "Last Updated on"
msgstr "Última actualización en"
#. module: sale_exceptions
#: field:sale.order,main_exception_id:0
msgid "Main Exception"
msgstr "Excepción Principal"
#. module: sale_exceptions
#: model:sale.exception,name:sale_exceptions.excep_no_zip
msgid "No ZIP code on destination"
msgstr "No existe código postal en dirección de destino"
#. module: sale_exceptions
#: model:sale.exception,name:sale_exceptions.excep_no_stock
msgid "Not Enough Virtual Stock"
msgstr "No existe suficiente stock virtual"
#. module: sale_exceptions
#: field:sale.exception,code:0
msgid "Python Code"
msgstr "Código Python"
#. module: sale_exceptions
#: help:sale.exception,code:0
msgid ""
"Python code executed to check if the exception apply or not. The code must "
"apply block = True to apply the exception."
msgstr "Código python ejecutado para comprobar si hay que aplicar o no la excepción. El código debe dar como resultado True para aplicar la excepción"
#. module: sale_exceptions
#: field:sale.exception.confirm,sale_id:0
msgid "Sale"
msgstr "Venta"
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_tree
msgid "Sale Exception"
msgstr "Excepción Venta"
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_form
msgid "Sale Exception Setup"
msgstr "Instalar Excepción Venta"
#. module: sale_exceptions
#: model:ir.model,name:sale_exceptions.model_sale_exception
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
msgid "Sale Exceptions"
msgstr "Excepciones Venta"
#. module: sale_exceptions
#: selection:sale.exception,model:0
msgid "Sale Order"
msgstr "Pedido de venta"
#. module: sale_exceptions
#: selection:sale.exception,model:0
msgid "Sale Order Line"
msgstr "Línea Pedido Venta"
#. module: sale_exceptions
#: field:sale.exception,sale_order_ids:0
msgid "Sale Orders"
msgstr "Pedidos de Venta"
#. module: sale_exceptions
#: model:ir.model,name:sale_exceptions.model_sale_order
msgid "Sales Order"
msgstr "Pedidos de venta"
#. module: sale_exceptions
#: field:sale.exception,sequence:0
msgid "Sequence"
msgstr "Secuencia"
#. module: sale_exceptions
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
msgid "_Close"
msgstr ""

211
i18n/fi.po

@ -0,0 +1,211 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_exceptions
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: sale-workflow (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-09 12:27+0000\n"
"PO-Revision-Date: 2015-09-03 07:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: Finnish (http://www.transifex.com/oca/OCA-sale-workflow-8-0/language/fi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fi\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_exceptions
#: field:sale.exception,active:0
msgid "Active"
msgstr ""
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_form
msgid "Affected Sales Orders"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,model:0
msgid "Apply on"
msgstr ""
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_sales_order_filter
msgid "Blocked in draft"
msgstr ""
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:114
#: model:ir.actions.act_window,name:sale_exceptions.action_sale_exception_confirm
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
#, python-format
msgid "Blocked in draft due to exceptions"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,create_uid:0 field:sale.exception.confirm,create_uid:0
msgid "Created by"
msgstr "Luonut"
#. module: sale_exceptions
#: field:sale.exception,create_date:0
#: field:sale.exception.confirm,create_date:0
msgid "Created on"
msgstr "Luotu"
#. module: sale_exceptions
#: field:sale.exception,description:0
msgid "Description"
msgstr ""
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:192
#, python-format
msgid "Error"
msgstr ""
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:193
#, python-format
msgid ""
"Error when evaluating the sale exception rule:\n"
" %s \n"
"(%s)"
msgstr ""
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_order_form
msgid "Error:"
msgstr ""
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_order_form
msgid "Exception"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,name:0
msgid "Exception Name"
msgstr ""
#. module: sale_exceptions
#: model:ir.actions.act_window,name:sale_exceptions.action_sale_test_tree
#: model:ir.ui.menu,name:sale_exceptions.menu_sale_test
msgid "Exception Rules"
msgstr ""
#. module: sale_exceptions
#: field:sale.order,exception_ids:0
msgid "Exceptions"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception.confirm,exception_ids:0
msgid "Exceptions to resolve"
msgstr ""
#. module: sale_exceptions
#: help:sale.exception,sequence:0
msgid "Gives the sequence order when applying the test"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,id:0 field:sale.exception.confirm,id:0
msgid "ID"
msgstr "ID"
#. module: sale_exceptions
#: field:sale.exception.confirm,ignore:0 field:sale.order,ignore_exceptions:0
msgid "Ignore Exceptions"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,write_uid:0 field:sale.exception.confirm,write_uid:0
msgid "Last Updated by"
msgstr "Viimeksi päivittänyt"
#. module: sale_exceptions
#: field:sale.exception,write_date:0 field:sale.exception.confirm,write_date:0
msgid "Last Updated on"
msgstr "Viimeksi päivitetty"
#. module: sale_exceptions
#: field:sale.order,main_exception_id:0
msgid "Main Exception"
msgstr ""
#. module: sale_exceptions
#: model:sale.exception,name:sale_exceptions.excep_no_zip
msgid "No ZIP code on destination"
msgstr ""
#. module: sale_exceptions
#: model:sale.exception,name:sale_exceptions.excep_no_stock
msgid "Not Enough Virtual Stock"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,code:0
msgid "Python Code"
msgstr ""
#. module: sale_exceptions
#: help:sale.exception,code:0
msgid ""
"Python code executed to check if the exception apply or not. The code must "
"apply block = True to apply the exception."
msgstr ""
#. module: sale_exceptions
#: field:sale.exception.confirm,sale_id:0
msgid "Sale"
msgstr ""
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_tree
msgid "Sale Exception"
msgstr ""
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_form
msgid "Sale Exception Setup"
msgstr ""
#. module: sale_exceptions
#: model:ir.model,name:sale_exceptions.model_sale_exception
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
msgid "Sale Exceptions"
msgstr ""
#. module: sale_exceptions
#: selection:sale.exception,model:0
msgid "Sale Order"
msgstr ""
#. module: sale_exceptions
#: selection:sale.exception,model:0
msgid "Sale Order Line"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,sale_order_ids:0
msgid "Sale Orders"
msgstr ""
#. module: sale_exceptions
#: model:ir.model,name:sale_exceptions.model_sale_order
msgid "Sales Order"
msgstr "Myyntitilaus"
#. module: sale_exceptions
#: field:sale.exception,sequence:0
msgid "Sequence"
msgstr ""
#. module: sale_exceptions
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
msgid "_Close"
msgstr ""

212
i18n/fr.po

@ -0,0 +1,212 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_exceptions
#
# Translators:
# Pierre Verkest <pverkest@anybox.fr>, 2015
msgid ""
msgstr ""
"Project-Id-Version: sale-workflow (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-02 17:59+0000\n"
"PO-Revision-Date: 2015-09-24 21:25+0000\n"
"Last-Translator: Pierre Verkest <pverkest@anybox.fr>\n"
"Language-Team: French (http://www.transifex.com/oca/OCA-sale-workflow-8-0/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: sale_exceptions
#: field:sale.exception,active:0
msgid "Active"
msgstr "Actif"
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_form
msgid "Affected Sales Orders"
msgstr "Bons de commande affectés"
#. module: sale_exceptions
#: field:sale.exception,model:0
msgid "Apply on"
msgstr "Appliquer sur"
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_sales_order_filter
msgid "Blocked in draft"
msgstr "Bloqué à l'état brouillon"
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:114
#: model:ir.actions.act_window,name:sale_exceptions.action_sale_exception_confirm
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
#, python-format
msgid "Blocked in draft due to exceptions"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,create_uid:0 field:sale.exception.confirm,create_uid:0
msgid "Created by"
msgstr "Créé par"
#. module: sale_exceptions
#: field:sale.exception,create_date:0
#: field:sale.exception.confirm,create_date:0
msgid "Created on"
msgstr "Créé le"
#. module: sale_exceptions
#: field:sale.exception,description:0
msgid "Description"
msgstr "Description"
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:192
#, python-format
msgid "Error"
msgstr "Erreur"
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:193
#, python-format
msgid ""
"Error when evaluating the sale exception rule:\n"
" %s \n"
"(%s)"
msgstr ""
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_order_form
msgid "Error:"
msgstr "Erreur :"
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_order_form
msgid "Exception"
msgstr "Restriction"
#. module: sale_exceptions
#: field:sale.exception,name:0
msgid "Exception Name"
msgstr "Nom de la restriction"
#. module: sale_exceptions
#: model:ir.actions.act_window,name:sale_exceptions.action_sale_test_tree
#: model:ir.ui.menu,name:sale_exceptions.menu_sale_test
msgid "Exception Rules"
msgstr "Règles de restriction"
#. module: sale_exceptions
#: field:sale.order,exception_ids:0
msgid "Exceptions"
msgstr "Restrictions"
#. module: sale_exceptions
#: field:sale.exception.confirm,exception_ids:0
msgid "Exceptions to resolve"
msgstr "Restrictions à résoudre"
#. module: sale_exceptions
#: help:sale.exception,sequence:0
msgid "Gives the sequence order when applying the test"
msgstr "Définit l'ordre d'application des contrôles"
#. module: sale_exceptions
#: field:sale.exception,id:0 field:sale.exception.confirm,id:0
msgid "ID"
msgstr "ID"
#. module: sale_exceptions
#: field:sale.exception.confirm,ignore:0 field:sale.order,ignore_exceptions:0
msgid "Ignore Exceptions"
msgstr "Ignorer la restriction"
#. module: sale_exceptions
#: field:sale.exception,write_uid:0 field:sale.exception.confirm,write_uid:0
msgid "Last Updated by"
msgstr "Modifié par"
#. module: sale_exceptions
#: field:sale.exception,write_date:0 field:sale.exception.confirm,write_date:0
msgid "Last Updated on"
msgstr "Modifié le"
#. module: sale_exceptions
#: field:sale.order,main_exception_id:0
msgid "Main Exception"
msgstr "Restriction principale"
#. module: sale_exceptions
#: model:sale.exception,name:sale_exceptions.excep_no_zip
msgid "No ZIP code on destination"
msgstr "Code postal manquant sur la destination"
#. module: sale_exceptions
#: model:sale.exception,name:sale_exceptions.excep_no_stock
msgid "Not Enough Virtual Stock"
msgstr "Pas assez de quantité de stock prévue"
#. module: sale_exceptions
#: field:sale.exception,code:0
msgid "Python Code"
msgstr "Code Python"
#. module: sale_exceptions
#: help:sale.exception,code:0
msgid ""
"Python code executed to check if the exception apply or not. The code must "
"apply block = True to apply the exception."
msgstr "Code Python exécuté pour déterminer si la restriction s'applique. The bloc de code doit retourner block = True pour appliquer la restriction."
#. module: sale_exceptions
#: field:sale.exception.confirm,sale_id:0
msgid "Sale"
msgstr "Commande"
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_tree
msgid "Sale Exception"
msgstr "Restriction de vente"
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_form
msgid "Sale Exception Setup"
msgstr "Configuration des restrictions de vente"
#. module: sale_exceptions
#: model:ir.model,name:sale_exceptions.model_sale_exception
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
msgid "Sale Exceptions"
msgstr "Restrictions de vente"
#. module: sale_exceptions
#: selection:sale.exception,model:0
msgid "Sale Order"
msgstr "Bon de commande"
#. module: sale_exceptions
#: selection:sale.exception,model:0
msgid "Sale Order Line"
msgstr "Ligne de commande"
#. module: sale_exceptions
#: field:sale.exception,sale_order_ids:0
msgid "Sale Orders"
msgstr "Bons de commande"
#. module: sale_exceptions
#: model:ir.model,name:sale_exceptions.model_sale_order
msgid "Sales Order"
msgstr "Bon de commande"
#. module: sale_exceptions
#: field:sale.exception,sequence:0
msgid "Sequence"
msgstr "Séquence"
#. module: sale_exceptions
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
msgid "_Close"
msgstr ""

212
i18n/it.po

@ -0,0 +1,212 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_exceptions
#
# Translators:
# Stefano <stefano.sforzi@agilebg.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: sale-workflow (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-02 17:59+0000\n"
"PO-Revision-Date: 2015-09-23 14:23+0000\n"
"Last-Translator: Stefano <stefano.sforzi@agilebg.com>\n"
"Language-Team: Italian (http://www.transifex.com/oca/OCA-sale-workflow-8-0/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_exceptions
#: field:sale.exception,active:0
msgid "Active"
msgstr "Attivo"
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_form
msgid "Affected Sales Orders"
msgstr "Ordine di vendita convolti"
#. module: sale_exceptions
#: field:sale.exception,model:0
msgid "Apply on"
msgstr "Applicato a"
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_sales_order_filter
msgid "Blocked in draft"
msgstr "Bloccato in stato bozza"
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:114
#: model:ir.actions.act_window,name:sale_exceptions.action_sale_exception_confirm
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
#, python-format
msgid "Blocked in draft due to exceptions"
msgstr "Bloccato in stato bozza dovuto alla eccezzioni"
#. module: sale_exceptions
#: field:sale.exception,create_uid:0 field:sale.exception.confirm,create_uid:0
msgid "Created by"
msgstr "Creato da"
#. module: sale_exceptions
#: field:sale.exception,create_date:0
#: field:sale.exception.confirm,create_date:0
msgid "Created on"
msgstr "Creato il"
#. module: sale_exceptions
#: field:sale.exception,description:0
msgid "Description"
msgstr "Descrizione"
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:192
#, python-format
msgid "Error"
msgstr "Errore"
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:193
#, python-format
msgid ""
"Error when evaluating the sale exception rule:\n"
" %s \n"
"(%s)"
msgstr "Errore per l'applicazione di una regola di vendita:\n%s\n(%s)"
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_order_form
msgid "Error:"
msgstr "Errore"
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_order_form
msgid "Exception"
msgstr "Eccezione"
#. module: sale_exceptions
#: field:sale.exception,name:0
msgid "Exception Name"
msgstr "Nome eccezione "
#. module: sale_exceptions
#: model:ir.actions.act_window,name:sale_exceptions.action_sale_test_tree
#: model:ir.ui.menu,name:sale_exceptions.menu_sale_test
msgid "Exception Rules"
msgstr "Regola eccezione"
#. module: sale_exceptions
#: field:sale.order,exception_ids:0
msgid "Exceptions"
msgstr "Eccezioni"
#. module: sale_exceptions
#: field:sale.exception.confirm,exception_ids:0
msgid "Exceptions to resolve"
msgstr "Eccezioni da risolvere"
#. module: sale_exceptions
#: help:sale.exception,sequence:0
msgid "Gives the sequence order when applying the test"
msgstr "Indicare una sequenza quando applichi il test"
#. module: sale_exceptions
#: field:sale.exception,id:0 field:sale.exception.confirm,id:0
msgid "ID"
msgstr "ID"
#. module: sale_exceptions
#: field:sale.exception.confirm,ignore:0 field:sale.order,ignore_exceptions:0
msgid "Ignore Exceptions"
msgstr "Ignora eccezioni"
#. module: sale_exceptions
#: field:sale.exception,write_uid:0 field:sale.exception.confirm,write_uid:0
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: sale_exceptions
#: field:sale.exception,write_date:0 field:sale.exception.confirm,write_date:0
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: sale_exceptions
#: field:sale.order,main_exception_id:0
msgid "Main Exception"
msgstr "Eccezione principale"
#. module: sale_exceptions
#: model:sale.exception,name:sale_exceptions.excep_no_zip
msgid "No ZIP code on destination"
msgstr "No ZIP sull'indirizzo di destinazione"
#. module: sale_exceptions
#: model:sale.exception,name:sale_exceptions.excep_no_stock
msgid "Not Enough Virtual Stock"
msgstr "Non abbastanza stock virtuale"
#. module: sale_exceptions
#: field:sale.exception,code:0
msgid "Python Code"
msgstr "Python Code"
#. module: sale_exceptions
#: help:sale.exception,code:0
msgid ""
"Python code executed to check if the exception apply or not. The code must "
"apply block = True to apply the exception."
msgstr "Python code executed to check if the exception apply or not. The code must apply block = True to apply the exception."
#. module: sale_exceptions
#: field:sale.exception.confirm,sale_id:0
msgid "Sale"
msgstr "Vendite"
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_tree
msgid "Sale Exception"
msgstr "Eccezione sulle vendite"
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_form
msgid "Sale Exception Setup"
msgstr "Setup eccezioni di vendita"
#. module: sale_exceptions
#: model:ir.model,name:sale_exceptions.model_sale_exception
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
msgid "Sale Exceptions"
msgstr "Eccezioni di vendita"
#. module: sale_exceptions
#: selection:sale.exception,model:0
msgid "Sale Order"
msgstr "Ordine di vendita"
#. module: sale_exceptions
#: selection:sale.exception,model:0
msgid "Sale Order Line"
msgstr "Riga ordine di vendita"
#. module: sale_exceptions
#: field:sale.exception,sale_order_ids:0
msgid "Sale Orders"
msgstr "Ordine vendita"
#. module: sale_exceptions
#: model:ir.model,name:sale_exceptions.model_sale_order
msgid "Sales Order"
msgstr "Ordini vendita"
#. module: sale_exceptions
#: field:sale.exception,sequence:0
msgid "Sequence"
msgstr "Sequenza"
#. module: sale_exceptions
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
msgid "_Close"
msgstr "_Chiuso"

177
i18n/sale_exceptions.pot

@ -0,0 +1,177 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_exceptions
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-05-02 06:57+0000\n"
"PO-Revision-Date: 2013-05-02 06:57+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: sale_exceptions
#: model:ir.model,name:sale_exceptions.model_sale_exception_confirm
msgid "sale.exception.confirm"
msgstr ""
#. module: sale_exceptions
#: selection:sale.exception,model:0
msgid "Sale Order Line"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,model:0
msgid "Apply on"
msgstr ""
#. module: sale_exceptions
#: model:sale.exception,name:sale_exceptions.excep_no_stock
msgid "Not Enough Virtual Stock"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,description:0
msgid "Description"
msgstr ""
#. module: sale_exceptions
#: help:sale.exception,sequence:0
msgid "Gives the sequence order when applying the test"
msgstr ""
#. module: sale_exceptions
#: view:sale.exception.confirm:0
msgid "Sale Exceptions On Sale Order"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception.confirm,exception_ids:0
msgid "Exceptions to resolve"
msgstr ""
#. module: sale_exceptions
#: view:sale.exception.confirm:0
msgid "_Ok"
msgstr ""
#. module: sale_exceptions
#: view:sale.exception:0
#: view:sale.exception.confirm:0
msgid "Sale Exception"
msgstr ""
#. module: sale_exceptions
#: view:sale.order:0
msgid "TO FIX"
msgstr ""
#. module: sale_exceptions
#: help:sale.exception,code:0
msgid "Python code executed to check if the exception apply or not. The code must apply block = True to apply the exception."
msgstr ""
#. module: sale_exceptions
#: view:sale.order:0
msgid "Exception"
msgstr ""
#. module: sale_exceptions
#: view:sale.order:0
msgid "Error:"
msgstr ""
#. module: sale_exceptions
#: selection:sale.exception,model:0
msgid "Sale Order"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception.confirm,sale_id:0
msgid "Sale"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,active:0
msgid "Active"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,name:0
msgid "Exception Name"
msgstr ""
#. module: sale_exceptions
#: field:sale.order,exception_ids:0
msgid "Exceptions"
msgstr ""
#. module: sale_exceptions
#: model:ir.actions.act_window,name:sale_exceptions.action_sale_exception_confirm
#: model:ir.model,name:sale_exceptions.model_sale_exception
#: view:sale.exception.confirm:0
msgid "Sale Exceptions"
msgstr ""
#. module: sale_exceptions
#: model:ir.actions.act_window,name:sale_exceptions.action_sale_test_tree
#: model:ir.ui.menu,name:sale_exceptions.menu_sale_test
msgid "Exception Rules"
msgstr ""
#. module: sale_exceptions
#: model:ir.model,name:sale_exceptions.model_sale_order
msgid "Sales Order"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,sequence:0
msgid "Sequence"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,code:0
msgid "Python Code"
msgstr ""
#. module: sale_exceptions
#: view:sale.order:0
msgid "Sales"
msgstr ""
#. module: sale_exceptions
#: model:sale.exception,name:sale_exceptions.excep_no_zip
msgid "No ZIP code on destination"
msgstr ""
#. module: sale_exceptions
#: view:sale.exception:0
msgid "Sale Exception Setup"
msgstr ""
#. module: sale_exceptions
#: view:sale.exception:0
msgid "Affected Sales Orders"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,sale_order_ids:0
msgid "Sale Orders"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception.confirm,ignore:0
#: field:sale.order,ignore_exceptions:0
msgid "Ignore Exceptions"
msgstr ""
#. module: sale_exceptions
#: field:sale.order,main_exception_id:0
msgid "Main Exception"
msgstr ""

212
i18n/sl.po

@ -0,0 +1,212 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_exceptions
#
# Translators:
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015
msgid ""
msgstr ""
"Project-Id-Version: sale-workflow (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-09 12:27+0000\n"
"PO-Revision-Date: 2015-09-07 14:31+0000\n"
"Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>\n"
"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-sale-workflow-8-0/language/sl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: sl\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
#. module: sale_exceptions
#: field:sale.exception,active:0
msgid "Active"
msgstr "Aktivno"
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_form
msgid "Affected Sales Orders"
msgstr "Prizadeti prodajni nalogi"
#. module: sale_exceptions
#: field:sale.exception,model:0
msgid "Apply on"
msgstr "Uporabi pri"
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_sales_order_filter
msgid "Blocked in draft"
msgstr "Blokirano v osnutku"
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:114
#: model:ir.actions.act_window,name:sale_exceptions.action_sale_exception_confirm
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
#, python-format
msgid "Blocked in draft due to exceptions"
msgstr "Blokirano v osnutku zaradi izjem"
#. module: sale_exceptions
#: field:sale.exception,create_uid:0 field:sale.exception.confirm,create_uid:0
msgid "Created by"
msgstr "Ustvaril"
#. module: sale_exceptions
#: field:sale.exception,create_date:0
#: field:sale.exception.confirm,create_date:0
msgid "Created on"
msgstr "Ustvarjeno"
#. module: sale_exceptions
#: field:sale.exception,description:0
msgid "Description"
msgstr "Opis"
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:192
#, python-format
msgid "Error"
msgstr "Napaka"
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:193
#, python-format
msgid ""
"Error when evaluating the sale exception rule:\n"
" %s \n"
"(%s)"
msgstr "Napaka ob vrednotenju pravila prodajnih izjem:\n %s \n(%s)"
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_order_form
msgid "Error:"
msgstr "Napaka:"
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_order_form
msgid "Exception"
msgstr "Izjema"
#. module: sale_exceptions
#: field:sale.exception,name:0
msgid "Exception Name"
msgstr "Naziv izjeme"
#. module: sale_exceptions
#: model:ir.actions.act_window,name:sale_exceptions.action_sale_test_tree
#: model:ir.ui.menu,name:sale_exceptions.menu_sale_test
msgid "Exception Rules"
msgstr "Pravila izjem"
#. module: sale_exceptions
#: field:sale.order,exception_ids:0
msgid "Exceptions"
msgstr "Izjeme"
#. module: sale_exceptions
#: field:sale.exception.confirm,exception_ids:0
msgid "Exceptions to resolve"
msgstr "Izjeme za razrešitev"
#. module: sale_exceptions
#: help:sale.exception,sequence:0
msgid "Gives the sequence order when applying the test"
msgstr "Določa zaporedje pri uveljavitvi testiranja"
#. module: sale_exceptions
#: field:sale.exception,id:0 field:sale.exception.confirm,id:0
msgid "ID"
msgstr "ID"
#. module: sale_exceptions
#: field:sale.exception.confirm,ignore:0 field:sale.order,ignore_exceptions:0
msgid "Ignore Exceptions"
msgstr "Prezri izjeme"
#. module: sale_exceptions
#: field:sale.exception,write_uid:0 field:sale.exception.confirm,write_uid:0
msgid "Last Updated by"
msgstr "Zadnji posodobil"
#. module: sale_exceptions
#: field:sale.exception,write_date:0 field:sale.exception.confirm,write_date:0
msgid "Last Updated on"
msgstr "Zadnjič posodobljeno"
#. module: sale_exceptions
#: field:sale.order,main_exception_id:0
msgid "Main Exception"
msgstr "Glavna izjema"
#. module: sale_exceptions
#: model:sale.exception,name:sale_exceptions.excep_no_zip
msgid "No ZIP code on destination"
msgstr "Destinacija nima poštne številke"
#. module: sale_exceptions
#: model:sale.exception,name:sale_exceptions.excep_no_stock
msgid "Not Enough Virtual Stock"
msgstr "Ni dovolj navidezne zaloge"
#. module: sale_exceptions
#: field:sale.exception,code:0
msgid "Python Code"
msgstr "Python koda"
#. module: sale_exceptions
#: help:sale.exception,code:0
msgid ""
"Python code executed to check if the exception apply or not. The code must "
"apply block = True to apply the exception."
msgstr "Python koda, ki se izvede, da preveri če je izjema ali ne. Koda mora uveljaviti blok = Pravilno za uveljavitev izjeme."
#. module: sale_exceptions
#: field:sale.exception.confirm,sale_id:0
msgid "Sale"
msgstr "Prodaja"
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_tree
msgid "Sale Exception"
msgstr "Prodajna izjema"
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_form
msgid "Sale Exception Setup"
msgstr "Nastavitev prodajne izjeme"
#. module: sale_exceptions
#: model:ir.model,name:sale_exceptions.model_sale_exception
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
msgid "Sale Exceptions"
msgstr "Prodajne izjeme"
#. module: sale_exceptions
#: selection:sale.exception,model:0
msgid "Sale Order"
msgstr "Prodajni nalog"
#. module: sale_exceptions
#: selection:sale.exception,model:0
msgid "Sale Order Line"
msgstr "Postavka nabavnega naloga"
#. module: sale_exceptions
#: field:sale.exception,sale_order_ids:0
msgid "Sale Orders"
msgstr "Prodajni nalogi"
#. module: sale_exceptions
#: model:ir.model,name:sale_exceptions.model_sale_order
msgid "Sales Order"
msgstr "Prodajni nalog"
#. module: sale_exceptions
#: field:sale.exception,sequence:0
msgid "Sequence"
msgstr "Zaporedje"
#. module: sale_exceptions
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
msgid "_Close"
msgstr "_Zaključi"

211
i18n/zh_CN.po

@ -0,0 +1,211 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_exceptions
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: sale-workflow (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-09 12:27+0000\n"
"PO-Revision-Date: 2015-09-03 07:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: Chinese (China) (http://www.transifex.com/oca/OCA-sale-workflow-8-0/language/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. module: sale_exceptions
#: field:sale.exception,active:0
msgid "Active"
msgstr ""
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_form
msgid "Affected Sales Orders"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,model:0
msgid "Apply on"
msgstr ""
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_sales_order_filter
msgid "Blocked in draft"
msgstr ""
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:114
#: model:ir.actions.act_window,name:sale_exceptions.action_sale_exception_confirm
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
#, python-format
msgid "Blocked in draft due to exceptions"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,create_uid:0 field:sale.exception.confirm,create_uid:0
msgid "Created by"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,create_date:0
#: field:sale.exception.confirm,create_date:0
msgid "Created on"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,description:0
msgid "Description"
msgstr ""
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:192
#, python-format
msgid "Error"
msgstr ""
#. module: sale_exceptions
#: code:addons/sale_exceptions/sale.py:193
#, python-format
msgid ""
"Error when evaluating the sale exception rule:\n"
" %s \n"
"(%s)"
msgstr ""
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_order_form
msgid "Error:"
msgstr ""
#. module: sale_exceptions
#: view:sale.order:sale_exceptions.view_order_form
msgid "Exception"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,name:0
msgid "Exception Name"
msgstr ""
#. module: sale_exceptions
#: model:ir.actions.act_window,name:sale_exceptions.action_sale_test_tree
#: model:ir.ui.menu,name:sale_exceptions.menu_sale_test
msgid "Exception Rules"
msgstr ""
#. module: sale_exceptions
#: field:sale.order,exception_ids:0
msgid "Exceptions"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception.confirm,exception_ids:0
msgid "Exceptions to resolve"
msgstr ""
#. module: sale_exceptions
#: help:sale.exception,sequence:0
msgid "Gives the sequence order when applying the test"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,id:0 field:sale.exception.confirm,id:0
msgid "ID"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception.confirm,ignore:0 field:sale.order,ignore_exceptions:0
msgid "Ignore Exceptions"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,write_uid:0 field:sale.exception.confirm,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,write_date:0 field:sale.exception.confirm,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: sale_exceptions
#: field:sale.order,main_exception_id:0
msgid "Main Exception"
msgstr ""
#. module: sale_exceptions
#: model:sale.exception,name:sale_exceptions.excep_no_zip
msgid "No ZIP code on destination"
msgstr ""
#. module: sale_exceptions
#: model:sale.exception,name:sale_exceptions.excep_no_stock
msgid "Not Enough Virtual Stock"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,code:0
msgid "Python Code"
msgstr ""
#. module: sale_exceptions
#: help:sale.exception,code:0
msgid ""
"Python code executed to check if the exception apply or not. The code must "
"apply block = True to apply the exception."
msgstr ""
#. module: sale_exceptions
#: field:sale.exception.confirm,sale_id:0
msgid "Sale"
msgstr ""
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_tree
msgid "Sale Exception"
msgstr ""
#. module: sale_exceptions
#: view:sale.exception:sale_exceptions.view_sale_exception_form
msgid "Sale Exception Setup"
msgstr ""
#. module: sale_exceptions
#: model:ir.model,name:sale_exceptions.model_sale_exception
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
msgid "Sale Exceptions"
msgstr ""
#. module: sale_exceptions
#: selection:sale.exception,model:0
msgid "Sale Order"
msgstr ""
#. module: sale_exceptions
#: selection:sale.exception,model:0
msgid "Sale Order Line"
msgstr ""
#. module: sale_exceptions
#: field:sale.exception,sale_order_ids:0
msgid "Sale Orders"
msgstr ""
#. module: sale_exceptions
#: model:ir.model,name:sale_exceptions.model_sale_order
msgid "Sales Order"
msgstr "销售订单"
#. module: sale_exceptions
#: field:sale.exception,sequence:0
msgid "Sequence"
msgstr ""
#. module: sale_exceptions
#: view:sale.exception.confirm:sale_exceptions.view_sale_exception_confirm
msgid "_Close"
msgstr ""

188
sale.py

@ -0,0 +1,188 @@
# -*- coding: utf-8 -*-
# © 2011 Raphaël Valyi, Renato Lima, Guewen Baconnier, Sodexis
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import time
from openerp import api, models, fields
from openerp.exceptions import Warning
from openerp.tools.safe_eval import safe_eval
from openerp.tools.translate import _
class SaleException(models.Model):
_name = 'sale.exception'
_description = "Sale Exceptions"
_order = 'active desc, sequence asc'
name = fields.Char('Exception Name', required=True, translate=True)
description = fields.Text('Description', translate=True)
sequence = fields.Integer(
string='Sequence',
help="Gives the sequence order when applying the test")
model = fields.Selection(
[('sale.order', 'Sale Order'),
('sale.order.line', 'Sale Order Line')],
string='Apply on', required=True)
active = fields.Boolean('Active')
code = fields.Text(
'Python Code',
help="Python code executed to check if the exception apply or "
"not. The code must apply block = True to apply the "
"exception.",
default="""
# Python code. Use failed = True to block the sale order.
# You can use the following variables :
# - self: ORM model of the record which is checked
# - order or line: browse_record of the sale order or sale order line
# - object: same as order or line, browse_record of the sale order or
# sale order line
# - pool: ORM model pool (i.e. self.pool)
# - time: Python time module
# - cr: database cursor
# - uid: current user id
# - context: current context
""")
sale_order_ids = fields.Many2many(
'sale.order',
'sale_order_exception_rel', 'exception_id', 'sale_order_id',
string='Sale Orders',
readonly=True)
class SaleOrder(models.Model):
_inherit = 'sale.order'
_order = 'main_exception_id asc, date_order desc, name desc'
main_exception_id = fields.Many2one(
'sale.exception',
compute='_get_main_error',
string='Main Exception',
store=True)
exception_ids = fields.Many2many(
'sale.exception',
'sale_order_exception_rel', 'sale_order_id', 'exception_id',
string='Exceptions')
ignore_exceptions = fields.Boolean('Ignore Exceptions', copy=False)
@api.one
@api.depends('state', 'exception_ids')
def _get_main_error(self):
if self.state == 'draft' and self.exception_ids:
self.main_exception_id = self.exception_ids[0]
else:
self.main_exception_id = False
@api.model
def test_all_draft_orders(self):
order_set = self.search([('state', '=', 'draft')])
order_set.test_exceptions()
return True
@api.multi
def _popup_exceptions(self):
action = self.env.ref('sale_exception.action_sale_exception_confirm')
action = action.read()[0]
action.update({
'context': {
'active_id': self.ids[0],
'active_ids': self.ids
}
})
return action
@api.multi
def action_confirm(self):
if self.detect_exceptions():
return self._popup_exceptions()
else:
return super(SaleOrder, self).action_confirm()
@api.multi
def action_cancel(self):
for order in self:
if order.ignore_exceptions:
order.ignore_exceptions = False
return super(SaleOrder, self).action_cancel()
@api.multi
def test_exceptions(self):
"""
Condition method for the workflow from draft to confirm
"""
if self.detect_exceptions():
return False
return True
@api.multi
def detect_exceptions(self):
"""returns the list of exception_ids for all the considered sale orders
as a side effect, the sale order's exception_ids column is updated with
the list of exceptions related to the SO
"""
exception_obj = self.env['sale.exception']
order_exceptions = exception_obj.search(
[('model', '=', 'sale.order')])
line_exceptions = exception_obj.search(
[('model', '=', 'sale.order.line')])
all_exception_ids = []
for order in self:
if order.ignore_exceptions:
continue
exception_ids = order._detect_exceptions(order_exceptions,
line_exceptions)
order.exception_ids = [(6, 0, exception_ids)]
all_exception_ids += exception_ids
return all_exception_ids
@api.model
def _exception_rule_eval_context(self, obj_name, rec):
user = self.env['res.users'].browse(self._uid)
return {obj_name: rec,
'self': self.pool.get(rec._name),
'object': rec,
'obj': rec,
'pool': self.pool,
'cr': self._cr,
'uid': self._uid,
'user': user,
'time': time,
# copy context to prevent side-effects of eval
'context': self._context.copy()}
@api.model
def _rule_eval(self, rule, obj_name, rec):
expr = rule.code
space = self._exception_rule_eval_context(obj_name, rec)
try:
safe_eval(expr,
space,
mode='exec',
nocopy=True) # nocopy allows to return 'result'
except Exception, e:
raise Warning(
_('Error when evaluating the sale exception '
'rule:\n %s \n(%s)') % (rule.name, e))
return space.get('failed', False)
@api.multi
def _detect_exceptions(self, order_exceptions,
line_exceptions):
self.ensure_one()
exception_ids = []
for rule in order_exceptions:
if self._rule_eval(rule, 'order', self):
exception_ids.append(rule.id)
for order_line in self.order_line:
for rule in line_exceptions:
if rule.id in exception_ids:
# we do not matter if the exception as already been
# found for an order line of this order
continue
if self._rule_eval(rule, 'line', order_line):
exception_ids.append(rule.id)
return exception_ids

19
sale_exception_data.xml

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<record forcecreate="True" id="ir_cron_test_orders" model="ir.cron">
<field name="name">Test Draft Orders</field>
<field eval="False" name="active"/>
<field name="user_id" ref="base.user_root"/>
<field name="interval_number">20</field>
<field name="interval_type">minutes</field>
<field name="numbercall">-1</field>
<field eval="False" name="doall"/>
<field eval="'sale.order'" name="model"/>
<field eval="'test_all_draft_orders'" name="function"/>
<field eval="'()'" name="args"/>
</record>
</data>
</openerp>

114
sale_view.xml

@ -0,0 +1,114 @@
<?xml version="1.0" ?>
<openerp>
<data>
<record id="view_sale_exception_tree" model="ir.ui.view">
<field name="name">sale.exception.tree</field>
<field name="model">sale.exception</field>
<field name="arch" type="xml">
<tree string="Sale Exception">
<field name="active"/>
<field name="name"/>
<field name="description"/>
<field name="model"/>
<field name="sequence"/>
</tree>
</field>
</record>
<record id="view_sale_exception_form" model="ir.ui.view">
<field name="name">sale.exception.form</field>
<field name="model">sale.exception</field>
<field name="arch" type="xml">
<form string="Sale Exception Setup" name="sale_exception">
<group colspan="4" col="2">
<field name="name"/>
<field name="description"/>
</group>
<group colspan="4" groups="base.group_sale_manager">
<field name="active"/>
<field name="sequence"/>
</group>
<group colspan="4" col="2" groups="base.group_system">
<field name="model"/>
<field name="code"/>
</group>
<group colspan="4" col="2">
<separator string="Affected Sales Orders"/>
<newline/>
<field name="sale_order_ids" nolabel="1" domain="[('state', '=', 'draft')]"/>
</group>
</form>
</field>
</record>
<record id="action_sale_test_tree" model="ir.actions.act_window">
<field name="name">Exception Rules</field>
<field name="res_model">sale.exception</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_sale_exception_tree"/>
<field name="context">{'active_test': False}</field>
</record>
<menuitem action="action_sale_test_tree" id="menu_sale_test" parent="base.menu_sale_config_sales" />
<record id="view_order_form" model="ir.ui.view">
<field name="name">sale_exception.view_order_form</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<field name="name" position="after">
<group>
<field name="main_exception_id" options='{"no_open": True}'
class="oe_inline" string="Error:"
attrs="{'invisible':[('main_exception_id','=', False)]}"/>
</group>
</field>
<xpath expr="//group[@name='sales_person']/.."
position="inside">
<newline />
<group name="exception" colspan="2" col="2">
<separator string="Exception" colspan="2"/>
<field name="exception_ids" colspan="2" nolabel="1"/>
</group>
</xpath>
</field>
</record>
<record id="view_order_tree" model="ir.ui.view">
<field name="name">sale_exception.view_order_tree</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_tree"/>
<field name="arch" type="xml">
<field name="state" position="after">
<field name="main_exception_id"/>
</field>
</field>
</record>
<record id="view_quotation_tree" model="ir.ui.view">
<field name="name">sale_exception.view_order_tree</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_quotation_tree"/>
<field name="arch" type="xml">
<field name="state" position="after">
<field name="main_exception_id"/>
</field>
</field>
</record>
<record id="view_sales_order_filter" model="ir.ui.view">
<field name="name">sale_exception.view_sales_order_filter</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_sales_order_filter" />
<field name="arch" type="xml">
<filter name="sales" position="after">
<separator orientation="vertical"/>
<filter icon="terp-emblem-important" name="tofix" string="Blocked in draft" domain="[('main_exception_id','!=',False)]"/>
</filter>
</field>
</record>
</data>
</openerp>

3
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_sale_exception","sale.exception","model_sale_exception","base.group_user",1,0,0,0
"access_sale_exception_manager","sale.exception","model_sale_exception","base.group_sale_manager",1,1,1,1

5
settings/sale.exception.csv

@ -0,0 +1,5 @@
"id","name","description","sequence","model","code","active"
"excep_no_zip","No ZIP code on destination",,50,"sale.order","if not order.partner_shipping_id.zip:
failed=True",False
"excep_no_stock","Not Enough Virtual Stock",,50,"sale.order.line","if line.product_id and line.product_id.type == 'product' and line.product_id.virtual_available < line.product_uom_qty:
failed=True",False

BIN
static/description/icon.png

After

Width: 128  |  Height: 128  |  Size: 9.2 KiB

5
wizard/__init__.py

@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# © 2011 Raphaël Valyi, Renato Lima, Guewen Baconnier, Sodexis
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import sale_exception_confirm

35
wizard/sale_exception_confirm.py

@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
# © 2011 Raphaël Valyi, Renato Lima, Guewen Baconnier, Sodexis
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openerp import models, fields, api
class SaleExceptionConfirm(models.TransientModel):
_name = 'sale.exception.confirm'
sale_id = fields.Many2one('sale.order', 'Sale')
exception_ids = fields.Many2many('sale.exception',
string='Exceptions to resolve',
readonly=True)
ignore = fields.Boolean('Ignore Exceptions')
@api.model
def default_get(self, field_list):
res = super(SaleExceptionConfirm, self).default_get(field_list)
order_obj = self.env['sale.order']
sale_id = self._context.get('active_ids')
assert len(sale_id) == 1, "Only 1 ID accepted, got %r" % sale_id
sale_id = sale_id[0]
sale = order_obj.browse(sale_id)
exception_ids = [e.id for e in sale.exception_ids]
res.update({'exception_ids': [(6, 0, exception_ids)]})
res.update({'sale_id': sale_id})
return res
@api.one
def action_confirm(self):
if self.ignore:
self.sale_id.ignore_exceptions = True
return {'type': 'ir.actions.act_window_close'}

39
wizard/sale_exception_confirm_view.xml

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_sale_exception_confirm" model="ir.ui.view">
<field name="name">Sale Exceptions</field>
<field name="model">sale.exception.confirm</field>
<field name="arch" type="xml">
<form string="Blocked in draft due to exceptions" version="7.0">
<group>
<field name="exception_ids" nolabel="1" colspan="4">
<tree string="Sale Exceptions">
<field name="name"/>
<field name="description"/>
</tree>
</field>
<newline/>
<field name="ignore" groups='base.group_sale_manager'/>
</group>
<footer>
<button name="action_confirm" string="_Close"
colspan="1" type="object" icon="gtk-ok" />
</footer>
</form>
</field>
</record>
<record id="action_sale_exception_confirm" model="ir.actions.act_window">
<field name="name">Blocked in draft due to exceptions</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sale.exception.confirm</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="view_sale_exception_confirm"/>
<field name="target">new</field>
</record>
</data>
</openerp>
Loading…
Cancel
Save