Browse Source

[MIG][12.0] pos_picking_load (from 10.0)

[MIG][12.0] pos_picking_load_partner_name (from 8.0)
[FIX] remove obsolete commented code
[FIX] chrome / chromium patch. courtesy @kirca
[FIX] reimplement search picking feature
[FIX] replace min_date by scheduled_date
[UPD] translation
pull/365/head
Sylvain LE GAL 5 years ago
parent
commit
bb21d973eb
  1. 1
      pos_picking_load/__init__.py
  2. 11
      pos_picking_load/__manifest__.py
  3. 4
      pos_picking_load/demo/product_template.xml
  4. 6
      pos_picking_load/demo/res_groups.xml
  5. 10
      pos_picking_load/demo/res_partner.xml
  6. 4
      pos_picking_load/demo/sale_order.xml
  7. 4
      pos_picking_load/demo/stock_picking_type.xml
  8. 118
      pos_picking_load/i18n/fr.po
  9. 136
      pos_picking_load/i18n/pos_picking_load.pot
  10. 1
      pos_picking_load/models/__init__.py
  11. 1
      pos_picking_load/models/pos_config.py
  12. 21
      pos_picking_load/models/pos_order.py
  13. 1
      pos_picking_load/models/sale_order.py
  14. 8
      pos_picking_load/models/stock_picking.py
  15. 1
      pos_picking_load/models/stock_picking_type.py
  16. BIN
      pos_picking_load/static/description/pos_config_form.png
  17. BIN
      pos_picking_load/static/description/stock_picking_type_form.png
  18. 47
      pos_picking_load/static/src/js/widget.js
  19. 9
      pos_picking_load/static/src/xml/pos_picking_load.xml
  20. 18
      pos_picking_load/tests/test_pos_picking_load.py
  21. 4
      pos_picking_load/views/pos_picking_load.xml
  22. 27
      pos_picking_load/views/view_pos_config.xml
  23. 64
      pos_picking_load_partner_name/README.rst
  24. 3
      pos_picking_load_partner_name/__init__.py
  25. 19
      pos_picking_load_partner_name/__manifest__.py
  26. 26
      pos_picking_load_partner_name/hooks.py
  27. 27
      pos_picking_load_partner_name/i18n/fr.po
  28. 27
      pos_picking_load_partner_name/i18n/pos_picking_load_partner_name.pot
  29. 1
      pos_picking_load_partner_name/models/__init__.py
  30. 24
      pos_picking_load_partner_name/models/stock_picking.py
  31. 1
      pos_picking_load_partner_name/readme/CONTRIBUTORS.rst
  32. 5
      pos_picking_load_partner_name/readme/DESCRIPTION.rst

1
pos_picking_load/__init__.py

@ -1,2 +1 @@
# coding: utf-8
from . import models

11
pos_picking_load/__manifest__.py

@ -1,22 +1,20 @@
# coding: utf-8
# Copyright (C) 2017 - Today: GRAP (http://www.grap.coop)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
'name': 'Point Of Sale - Picking Load',
'summary': "Load and confirm stock pickings via Point Of Sale",
'version': '10.0.1.0.0',
'author': 'GRAP,Odoo Community Association (OCA)',
'version': '12.0.1.0.0',
'category': 'Point Of Sale',
'author': 'GRAP,Odoo Community Association (OCA)',
'website': 'https://www.github.com/OCA/pos',
'license': 'AGPL-3',
'maintainers': ['legalsylvain'],
'development_status': 'Beta',
'depends': [
'sale',
'sale_stock',
'point_of_sale',
],
'website': 'https://odoo-community.org/',
'data': [
'views/view_pos_config.xml',
'views/view_sale_order.xml',
@ -26,6 +24,7 @@
],
'demo': [
'demo/res_groups.xml',
'demo/res_partner.xml',
'demo/product_template.xml',
'demo/sale_order.xml',
'demo/stock_picking_type.xml',

4
pos_picking_load/demo/product_template.xml

@ -1,4 +1,4 @@
<openerp><data>
<odoo>
<!-- for demo pickings created by this module -->
@ -28,4 +28,4 @@
<field name="available_in_pos" eval="True"/>
</record>
</data></openerp>
</odoo>

6
pos_picking_load/demo/res_groups.xml

@ -1,7 +1,7 @@
<openerp><data>
<odoo>
<record id="sale.group_discount_per_so_line" model="res.groups">
<field name="users" eval="[(4, ref('base.user_root'))]"/>
<field name="users" eval="[(4, ref('base.user_admin'))]"/>
</record>
</data></openerp>
</odoo>

10
pos_picking_load/demo/res_partner.xml

@ -0,0 +1,10 @@
<odoo>
<!-- Fix Odoo Demo data:
Picking WH/OUT/0008 is associated to a customer 'Wood Corner'
that is not flagged as a customer -->
<record id="base.res_partner_1" model="res.partner">
<field name="customer" eval="True"/>
</record>
</odoo>

4
pos_picking_load/demo/sale_order.xml

@ -1,4 +1,4 @@
<openerp><data>
<odoo>
<!-- Sale Order 1-->
<record id="sale_order_1" model="sale.order">
@ -50,4 +50,4 @@
<function model="sale.order" name="action_confirm" eval="[[ref('sale_order_2')]]"/>
</data></openerp>
</odoo>

4
pos_picking_load/demo/stock_picking_type.xml

@ -1,7 +1,7 @@
<openerp><data>
<odoo>
<record id="stock.picking_type_out" model="stock.picking.type">
<field name="available_in_pos" eval="True" />
</record>
</data></openerp>
</odoo>

118
pos_picking_load/i18n/fr.po

@ -4,10 +4,10 @@
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-01-06 18:33+0000\n"
"PO-Revision-Date: 2019-01-06 18:33+0000\n"
"POT-Creation-Date: 2019-07-11 09:49+0000\n"
"PO-Revision-Date: 2019-07-11 09:49+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@ -17,109 +17,129 @@ msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/widget.js:242
#: code:addons/pos_picking_load/static/src/js/widget.js:274
#, python-format
msgid "A picking is still loaded. You can not load another picking. Please create a new order."
msgstr "Un BL est déjà chargé. Vous ne pouvez pas en charger un autre. Veuillez créer une nouvelle commande."
#. module: pos_picking_load
#: model:ir.model.fields,field_description:pos_picking_load.field_stock_picking_type_available_in_pos
#: model:ir.model.fields,field_description:pos_picking_load.field_stock_picking_type__available_in_pos
msgid "Available in Point Of Sale"
msgstr "Disponible dans le point de vente"
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/widget.js:211
#: code:addons/pos_picking_load/static/src/js/widget.js:243
#, python-format
msgid "Can not execute this action because the POS is currently offline"
msgstr ""
"Impossible de réaliser cette action car le point de vente est actuellement "
"hors ligne"
msgstr "Impossible de réaliser cette action car le point de vente est actuellement hors ligne"
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:27
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:25
#, python-format
msgid "Cancel"
msgstr "Annuler"
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/widget.js:210
#: code:addons/pos_picking_load/static/src/js/widget.js:242
#, python-format
msgid "Connection error"
msgstr "Erreur de connexion"
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:53
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:51
#, python-format
msgid "Customer"
msgstr "Client"
#. module: pos_picking_load
#: model:ir.model.fields,field_description:pos_picking_load.field_sale_order_final_pos_order_id
#: model:ir.model.fields,field_description:pos_picking_load.field_stock_picking_final_pos_order_id
#: model_terms:ir.ui.view,arch_db:pos_picking_load.view_pos_config_form
msgid "Enable the possibility to load pickings in the Point of Sale"
msgstr "Activer la possibilité de charger des bons de livraison dans le point de vente"
#. module: pos_picking_load
#: model:ir.model.fields,field_description:pos_picking_load.field_sale_order__final_pos_order_id
#: model:ir.model.fields,field_description:pos_picking_load.field_stock_picking__final_pos_order_id
msgid "Final PoS Order"
msgstr "Commande Finale"
#. module: pos_picking_load
#: model:ir.model.fields,help:pos_picking_load.field_stock_picking_type_available_in_pos
#: model:ir.model.fields,help:pos_picking_load.field_stock_picking_type__available_in_pos
msgid "If checked, associated pickings will be available in the point of sale, to be changed and paid in it"
msgstr "Si la case est cochée, toutes les bons de livraisons associés seront disponible dans le point de vente, pour ere changé et payé au sein de celui-ci"
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/widget.js:253
#: code:addons/pos_picking_load/static/src/js/widget.js:285
#, python-format
msgid "Load Picking"
msgstr "Charger un bon de livraison"
#. module: pos_picking_load
#: model:ir.model.fields,field_description:pos_picking_load.field_pos_config_iface_load_picking
#: model:ir.model.fields,field_description:pos_picking_load.field_pos_config__iface_load_picking
#: model_terms:ir.ui.view,arch_db:pos_picking_load.view_pos_config_form
msgid "Load Pickings"
msgstr "Charger des bons de livraison"
#. module: pos_picking_load
#: model:ir.model.fields,field_description:pos_picking_load.field_pos_config_iface_load_picking_max_qty
#: model:ir.model.fields,field_description:pos_picking_load.field_pos_config__iface_load_picking_max_qty
#: model_terms:ir.ui.view,arch_db:pos_picking_load.view_pos_config_form
msgid "Max Picking Quantity To Load"
msgstr "Quantité maximum de BL à charger"
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:52
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:50
#, python-format
msgid "Name"
msgstr "Nom"
#. module: pos_picking_load
#: model:ir.model.fields,field_description:pos_picking_load.field_pos_order_origin_picking_id
#: model:ir.model.fields,field_description:pos_picking_load.field_pos_order__origin_picking_id
msgid "Origin Picking"
msgstr "Livraison d'origine"
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:74
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:82
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:72
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:80
#, python-format
msgid "Origin Picking:"
msgstr "BL d'origine:"
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/widget.js:241
#: code:addons/pos_picking_load/static/src/js/widget.js:273
#, python-format
msgid "Pending Picking"
msgstr "BL en cours
msgstr "BL en cours"
#. module: pos_picking_load
#: model_terms:ir.ui.view,arch_db:pos_picking_load.view_pos_config_form
msgid "Picking Load"
msgstr "Chargement de bon de livraison"
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/widget.js:131
#: code:addons/pos_picking_load/static/src/js/widget.js:147
#: code:addons/pos_picking_load/static/src/js/widget.js:150
#: code:addons/pos_picking_load/static/src/js/widget.js:166
#, python-format
msgid "Picking Still Loaded"
msgstr "Bon de livraison déjà chargé"
#. module: pos_picking_load
#: model:ir.model,name:pos_picking_load.model_stock_picking_type
msgid "Picking Type"
msgstr "Type de préparation"
#. module: pos_picking_load
#: model:ir.model,name:pos_picking_load.model_pos_config
msgid "Point of Sale Configuration"
msgstr "Paramétrage du point de vente"
#. module: pos_picking_load
#: model:ir.model,name:pos_picking_load.model_pos_order
msgid "Point of Sale Orders"
@ -127,63 +147,58 @@ msgstr "Commandes du point de vente"
#. module: pos_picking_load
#: model:ir.model,name:pos_picking_load.model_sale_order
msgid "Sales Order"
msgid "Sale Order"
msgstr "Bon de commande"
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:54
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:52
#, python-format
msgid "Scheduled Date"
msgstr "Date prévue"
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:35
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:33
#, python-format
msgid "Search Picking"
msgstr "Chercher un bon de livraison"
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:31
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:29
#, python-format
msgid "Select"
msgstr "Sélectionner"
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/widget.js:203
#: code:addons/pos_picking_load/static/src/js/widget.js:235
#, python-format
msgid "Server Error"
msgstr "Erreur serveur"
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:55
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:53
#, python-format
msgid "Source Document"
msgstr "Document d'origine"
#. module: pos_picking_load
#: model:ir.model,name:pos_picking_load.model_stock_picking_type
msgid "The picking type determines the picking view"
msgstr "Le type de préparation détermine la vue de préparation"
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/widget.js:204
#: code:addons/pos_picking_load/static/src/js/widget.js:236
#, python-format
msgid "The server encountered an error while receiving your order."
msgstr "Le serveur a rencontré une erreur lors de la réception de votre commande."
#. module: pos_picking_load
#: model:ir.model.fields,help:pos_picking_load.field_sale_order_final_pos_order_id
#: model:ir.model.fields,help:pos_picking_load.field_sale_order__final_pos_order_id
msgid "This Sale Order has beend replaced by this PoS Order"
msgstr "Ce bon de commande a été remplacé par cette commande via le point de vente"
#. module: pos_picking_load
#: model:ir.model.fields,help:pos_picking_load.field_stock_picking_final_pos_order_id
#: model:ir.model.fields,help:pos_picking_load.field_stock_picking__final_pos_order_id
msgid "This picking has been canceled, because it has been replaced by this PoS Order"
msgstr "Ce bon de livraison a été annulé, car il a été remplacé par cette commande via le point de vente"
@ -194,15 +209,14 @@ msgstr "Transfert"
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/widget.js:100
#: code:addons/pos_picking_load/static/src/js/widget.js:119
#, python-format
msgid "Unable to load some picking lines because the products are not available in the POS cache.\n"
"\n"
"Please check that lines :\n"
"\n"
" * "
msgstr "Impossible de charger certaines lignes du bon de livraison car certains "
"produits ne sont pas disponibles dans le point de vente.\n"
msgstr "Impossible de charger certaines lignes du bon de livraison car certains produits ne sont pas disponibles dans le point de vente.\n"
"\n"
"Merci de vérifier les lignes suivantes :\n"
"\n"
@ -210,7 +224,7 @@ msgstr "Impossible de charger certaines lignes du bon de livraison car certains
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/widget.js:148
#: code:addons/pos_picking_load/static/src/js/widget.js:167
#, python-format
msgid "Unable to load this picking because it has been loaded in another confirmed PoS Order :\n"
"\n"
@ -221,7 +235,7 @@ msgstr "Impossible de charger ce bon de livraison car il a déjà été chargé
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/widget.js:132
#: code:addons/pos_picking_load/static/src/js/widget.js:151
#, python-format
msgid "Unable to load this picking because it has been loaded in another draft PoS Order :\n"
"\n"
@ -232,28 +246,22 @@ msgstr "Impossible de charger ce bon de livraison car il a déjà été chargé
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/widget.js:118
#: code:addons/pos_picking_load/static/src/js/widget.js:137
#, python-format
msgid "Unable to load this picking because the partner is not known in the Point Of Sale as a customer"
msgstr "Impossible de charger ce bon de livraison car ce partenaire n'est pas "
"reconnu dans le point de vente comme un client"
msgstr "Impossible de charger ce bon de livraison car ce partenaire n'est pas reconnu dans le point de vente comme un client"
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/widget.js:117
#: code:addons/pos_picking_load/static/src/js/widget.js:136
#, python-format
msgid "Unknown Partner"
msgstr "Partenaire inconnu"
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/widget.js:99
#: code:addons/pos_picking_load/static/src/js/widget.js:118
#, python-format
msgid "Unknown Products"
msgstr "Produits inconnus"
#. module: pos_picking_load
#: model:ir.model,name:pos_picking_load.model_pos_config
msgid "pos.config"
msgstr "pos.config"

136
pos_picking_load/i18n/pos_picking_load.pot

@ -4,8 +4,10 @@
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-11 09:48+0000\n"
"PO-Revision-Date: 2019-07-11 09:48+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@ -15,155 +17,199 @@ msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:70
#: code:addons/pos_picking_load/static/src/js/widget.js:274
#, python-format
msgid "--------------------------------"
msgid "A picking is still loaded. You can not load another picking. Please create a new order."
msgstr ""
#. module: pos_picking_load
#: field:stock.picking.type,available_in_pos:0
#: model:ir.model.fields,field_description:pos_picking_load.field_stock_picking_type__available_in_pos
msgid "Available in Point Of Sale"
msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/pos_picking_load.js:264
#: code:addons/pos_picking_load/static/src/js/pos_picking_load.js:290
#: code:addons/pos_picking_load/static/src/js/widget.js:243
#, python-format
msgid "Can not execute this action because the POS is currently offline"
msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:22
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:25
#, python-format
msgid "Cancel"
msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/pos_picking_load.js:263
#: code:addons/pos_picking_load/static/src/js/pos_picking_load.js:289
#: code:addons/pos_picking_load/static/src/js/widget.js:242
#, python-format
msgid "Connection error"
msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:50
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:51
#, python-format
msgid "Customer"
msgstr ""
#. module: pos_picking_load
#: field:sale.order,final_pos_order_id:0
#: field:stock.picking,final_pos_order_id:0
#: model_terms:ir.ui.view,arch_db:pos_picking_load.view_pos_config_form
msgid "Enable the possibility to load pickings in the Point of Sale"
msgstr ""
#. module: pos_picking_load
#: model:ir.model.fields,field_description:pos_picking_load.field_sale_order__final_pos_order_id
#: model:ir.model.fields,field_description:pos_picking_load.field_stock_picking__final_pos_order_id
msgid "Final PoS Order"
msgstr ""
#. module: pos_picking_load
#: help:stock.picking.type,available_in_pos:0
#: model:ir.model.fields,help:pos_picking_load.field_stock_picking_type__available_in_pos
msgid "If checked, associated pickings will be available in the point of sale, to be changed and paid in it"
msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:5
#: code:addons/pos_picking_load/static/src/js/widget.js:285
#, python-format
msgid "Load Picking"
msgstr ""
#. module: pos_picking_load
#: field:pos.config,iface_load_picking:0
#: model:ir.model.fields,field_description:pos_picking_load.field_pos_config__iface_load_picking
#: model_terms:ir.ui.view,arch_db:pos_picking_load.view_pos_config_form
msgid "Load Pickings"
msgstr ""
#. module: pos_picking_load
#: field:pos.config,iface_load_picking_max_qty:0
#: model:ir.model.fields,field_description:pos_picking_load.field_pos_config__iface_load_picking_max_qty
#: model_terms:ir.ui.view,arch_db:pos_picking_load.view_pos_config_form
msgid "Max Picking Quantity To Load"
msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:49
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:50
#, python-format
msgid "Name"
msgstr ""
#. module: pos_picking_load
#: field:pos.order,origin_picking_id:0
#: model:ir.model.fields,field_description:pos_picking_load.field_pos_order__origin_picking_id
msgid "Origin Picking"
msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:71
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:79
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:72
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:80
#, python-format
msgid "Origin Picking:"
msgstr ""
#. module: pos_picking_load
#: model:ir.model,name:pos_picking_load.model_stock_picking
msgid "Picking List"
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/widget.js:273
#, python-format
msgid "Pending Picking"
msgstr ""
#. module: pos_picking_load
#: model_terms:ir.ui.view,arch_db:pos_picking_load.view_pos_config_form
msgid "Picking Load"
msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/widget.js:150
#: code:addons/pos_picking_load/static/src/js/widget.js:166
#, python-format
msgid "Picking Still Loaded"
msgstr ""
#. module: pos_picking_load
#: model:ir.model,name:pos_picking_load.model_stock_picking_type
msgid "Picking Type"
msgstr ""
#. module: pos_picking_load
#: model:ir.model,name:pos_picking_load.model_pos_config
msgid "Point of Sale Configuration"
msgstr ""
#. module: pos_picking_load
#: model:ir.model,name:pos_picking_load.model_pos_order
msgid "Point of Sale"
msgid "Point of Sale Orders"
msgstr ""
#. module: pos_picking_load
#: model:ir.model,name:pos_picking_load.model_sale_order
msgid "Sales Order"
msgid "Sale Order"
msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:51
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:52
#, python-format
msgid "Scheduled Date"
msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:30
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:33
#, python-format
msgid "Search Picking"
msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:26
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:29
#, python-format
msgid "Select"
msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:52
#: code:addons/pos_picking_load/static/src/js/widget.js:235
#, python-format
msgid "Server Error"
msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/xml/pos_picking_load.xml:53
#, python-format
msgid "Source Document"
msgstr ""
#. module: pos_picking_load
#: model:ir.model,name:pos_picking_load.model_stock_picking_type
msgid "The picking type determines the picking view"
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/widget.js:236
#, python-format
msgid "The server encountered an error while receiving your order."
msgstr ""
#. module: pos_picking_load
#: help:sale.order,final_pos_order_id:0
#: model:ir.model.fields,help:pos_picking_load.field_sale_order__final_pos_order_id
msgid "This Sale Order has beend replaced by this PoS Order"
msgstr ""
#. module: pos_picking_load
#: help:stock.picking,final_pos_order_id:0
#: model:ir.model.fields,help:pos_picking_load.field_stock_picking__final_pos_order_id
msgid "This picking has been canceled, because it has been replaced by this PoS Order"
msgstr ""
#. module: pos_picking_load
#: model:ir.model,name:pos_picking_load.model_stock_picking
msgid "Transfer"
msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/pos_picking_load.js:228
#: code:addons/pos_picking_load/static/src/js/widget.js:119
#, python-format
msgid "Unable to load some picking lines because the products are not available in the POS cache.\n"
"\n"
@ -174,21 +220,39 @@ msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/pos_picking_load.js:239
#: code:addons/pos_picking_load/static/src/js/widget.js:167
#, python-format
msgid "Unable to load this picking because it has been loaded in another confirmed PoS Order :\n"
"\n"
""
msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/widget.js:151
#, python-format
msgid "Unable to load this picking because it has been loaded in another draft PoS Order :\n"
"\n"
""
msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/widget.js:137
#, python-format
msgid "Unable to load this picking because the partner is not known in the Point Of Sale as a customer"
msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/pos_picking_load.js:238
#: code:addons/pos_picking_load/static/src/js/widget.js:136
#, python-format
msgid "Unknown Partner"
msgstr ""
#. module: pos_picking_load
#. openerp-web
#: code:addons/pos_picking_load/static/src/js/pos_picking_load.js:227
#: code:addons/pos_picking_load/static/src/js/widget.js:118
#, python-format
msgid "Unknown Products"
msgstr ""

1
pos_picking_load/models/__init__.py

@ -1,4 +1,3 @@
# coding: utf-8
from . import sale_order
from . import stock_picking
from . import stock_picking_type

1
pos_picking_load/models/pos_config.py

@ -1,4 +1,3 @@
# coding: utf-8
# Copyright (C) 2017 - Today: GRAP (http://www.grap.coop)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

21
pos_picking_load/models/pos_order.py

@ -1,4 +1,3 @@
# coding: utf-8
# Copyright (C) 2017 - Today: GRAP (http://www.grap.coop)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
@ -17,27 +16,25 @@ class PosOrder(models.Model):
# Overloadable Section
@api.multi
def _handle_orders_with_original_picking(self):
"""By default, the module cancel original stock picking and sale
order. Overload / Overwrite this function if you want another
"""By default, the module cancel the original stock picking and
set the original sale order as invoiced.
Overload / Overwrite this function if you want another
behaviour"""
sale_order_obj = self.env['sale.order']
for order in self:
# Cancel Picking
order.origin_picking_id.action_cancel()
order.origin_picking_id.write({'final_pos_order_id': order.id})
# Ignore Delivery exception of the Sale Order
sale_orders = sale_order_obj.search([
('procurement_group_id', '=',
order.origin_picking_id.group_id.id)])
sale_orders.signal_workflow('ship_corrected')
sale_orders.write({'final_pos_order_id': order.id})
# Set Sale Order as fully invoiced
order.origin_picking_id.mapped('group_id.sale_id').write({
'invoice_status': 'invoiced',
})
# Overload Section
@api.model
def create_from_ui(self, orders):
"""Cancel the original picking, when the pos order is done"""
res = super(PosOrder, self).create_from_ui(orders)
res = super().create_from_ui(orders)
orders_with_original_picking = self.search([
('id', 'in', res), ('origin_picking_id', '!=', False),
('state', '!=', 'draft')])
@ -48,7 +45,7 @@ class PosOrder(models.Model):
@api.model
def _order_fields(self, ui_order):
res = super(PosOrder, self)._order_fields(ui_order)
res = super()._order_fields(ui_order)
if 'origin_picking_id' in ui_order:
res['origin_picking_id'] = ui_order['origin_picking_id']
return res

1
pos_picking_load/models/sale_order.py

@ -1,4 +1,3 @@
# coding: utf-8
# Copyright (C) 2017 - Today: GRAP (http://www.grap.coop)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

8
pos_picking_load/models/stock_picking.py

@ -1,4 +1,3 @@
# coding: utf-8
# Copyright (C) 2017 - Today: GRAP (http://www.grap.coop)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
@ -37,7 +36,7 @@ class StockPicking(models.Model):
@api.model
def _prepare_fields_for_pos_list(self):
return ['name', 'partner_id', 'min_date', 'origin']
return ['name', 'partner_id', 'scheduled_date', 'origin']
@api.model
def search_pickings_for_pos(self, query, pos_session_id):
@ -57,8 +56,7 @@ class StockPicking(models.Model):
'product_id': move.product_id.id,
'quantity': move.product_uom_qty,
}
sale_order_line =\
move.procurement_id and move.procurement_id.sale_line_id
sale_order_line = move.sale_line_id
if sale_order_line:
# Get price and discount of the order if available
picking_line_data['price_unit'] = sale_order_line.price_unit
@ -90,4 +88,4 @@ class StockPicking(models.Model):
if self.env.context.get('origin_picking_id'):
self.update_from_origin_picking(
self.browse(self.env.context['origin_picking_id']))
return super(StockPicking, self).action_confirm()
return super().action_confirm()

1
pos_picking_load/models/stock_picking_type.py

@ -1,4 +1,3 @@
# coding: utf-8
# Copyright (C) 2017 - Today: GRAP (http://www.grap.coop)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

BIN
pos_picking_load/static/description/pos_config_form.png

Before

Width: 634  |  Height: 178  |  Size: 17 KiB

After

Width: 716  |  Height: 347  |  Size: 22 KiB

BIN
pos_picking_load/static/description/stock_picking_type_form.png

Before

Width: 785  |  Height: 251  |  Size: 31 KiB

After

Width: 1129  |  Height: 422  |  Size: 37 KiB

47
pos_picking_load/static/src/js/widget.js

@ -9,7 +9,7 @@ odoo.define('pos_picking_load.widget', function (require) {
var core = require('web.core');
var framework = require('web.framework');
var Model = require('web.DataModel');
var rpc = require('web.rpc');
var gui = require('point_of_sale.gui');
var screens = require('point_of_sale.screens');
@ -52,6 +52,20 @@ odoo.define('pos_picking_load.widget', function (require) {
self.select_picking(event);
});
// Handle search
var search_timeout = null;
this.$('.searchbox input').on('keyup', function () {
clearTimeout(search_timeout);
var query = this.value;
search_timeout = setTimeout(function () {
self.perform_search(query);
}, 70);
});
this.$('.searchbox .search-clear').click(function () {
self.clear_search();
});
},
select_picking: function (event) {
@ -63,8 +77,12 @@ odoo.define('pos_picking_load.widget', function (require) {
this.$('.picking-list .highlight').removeClass('highlight');
framework.blockUI();
new Model('stock.picking').call(
'load_picking_for_pos', [origin_picking_id])
var params = {
model: 'stock.picking',
method: 'load_picking_for_pos',
args: [origin_picking_id],
};
rpc.query(params)
.then(function (picking_data) {
framework.unblockUI();
if (self.check_picking(picking_data)) {
@ -72,9 +90,9 @@ odoo.define('pos_picking_load.widget', function (require) {
$(event.target.parentNode).addClass('highlight');
self.$('span.button.validate').show();
}
}).fail(function (error, event) {
}).fail(function (error, fail_event) {
framework.unblockUI();
self.handle_errors(error, event);
self.handle_errors(error, fail_event);
});
},
@ -158,11 +176,24 @@ odoo.define('pos_picking_load.widget', function (require) {
return picking_selectable;
},
perform_search: function (query) {
this.search_pickings(query);
},
clear_search: function () {
this.search_pickings();
this.$('.searchbox input')[0].value = '';
this.$('.searchbox input').focus();
},
search_pickings: function (query) {
var self = this;
return new Model('stock.picking').call(
'search_pickings_for_pos',
[query || '', this.pos.pos_session.id])
var params = {
model: 'stock.picking',
method: 'search_pickings_for_pos',
args: [query || '', this.pos.pos_session.id],
};
rpc.query(params)
.then(function (result) {
self.render_list(result);
}).fail(function (error, event) {

9
pos_picking_load/static/src/xml/pos_picking_load.xml

@ -8,13 +8,11 @@
</span>
</t>
<!-- t-att-style= -->
<t t-name="LoadPickingLine">
<tr class="picking-line" t-att-data-picking-id="picking.id">
<td><t t-esc="picking.name"/></td>
<td><t t-esc="picking.partner_id[1] || ''"/></td>
<td><t t-esc="picking.min_date || ''"/></td>
<td><t t-esc="picking.scheduled_date || ''"/></td>
<td><t t-esc="picking.origin || ''"/></td>
</tr>
</t>
@ -38,7 +36,7 @@
<section class="full-content">
<div class="window">
<section class="subwindow collapsed">
<div class="subwindow-container">
<div class="subwindow-container collapsed">
<div class="subwindow-container-fix">
</div>
</div>
@ -77,12 +75,11 @@
</t>
<t t-extend="PosTicket">
<t t-jquery="[t-esc='widget.pos.shop.name']" t-operation="after">
<t t-jquery="[t-esc='widget.pos.get_cashier().name']" t-operation="after">
<t t-if="order.get('origin_picking_name')">
<br /><br />Origin Picking: <t t-esc="order.get('origin_picking_name')"/>
</t>
</t>
</t>
</template>

18
pos_picking_load/tests/test_pos_picking_load.py

@ -1,4 +1,3 @@
# coding: utf-8
# Copyright (C) 2017: Opener B.V. (https://opener.amsterdam)
# @author: Stefan Rijnhart <stefan@opener.am>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
@ -7,8 +6,10 @@ from odoo.tests.common import TransactionCase
class TestPosPickingLoad(TransactionCase):
def test_pos_picking_load(self):
product = self.env.ref('product.product_product_24')
pricelist = self.env.ref('product.list0')
# Create a Sale order and confirm it to generate a picking to load
sale_order = self.env['sale.order'].create({
'partner_id': self.env.ref('base.res_partner_1').id,
@ -16,10 +17,10 @@ class TestPosPickingLoad(TransactionCase):
'product_id': product.id,
'price_unit': 6,
'product_uom_qty': 2,
'qty_delivered_method': 'stock_move',
})],
})
sale_order.action_confirm()
self.assertTrue(sale_order.picking_ids)
sale_order.picking_ids.picking_type_id.write({
'available_in_pos': True})
@ -29,16 +30,16 @@ class TestPosPickingLoad(TransactionCase):
'picking_type_id': sale_order.picking_ids.picking_type_id.id})
# Open a new session
session = self.env['pos.session'].create({
'user_id': self.env.user.id,
'config_id': config.id})
session.signal_workflow('open')
config.open_session_cb()
session = self.env['pos.session'].search([
('config_id', '=', config.id)])[0]
date_now = fields.Datetime.now()
# Create a pos order
self.env['pos.order'].create_from_ui([{
'to_invoice': False,
'data': {
'pricelist_id': pricelist.id,
'user_id': self.env.user.id,
'creation_date': date_now,
'fiscal_position_id': False,
@ -52,6 +53,8 @@ class TestPosPickingLoad(TransactionCase):
'name': product.name,
'discount': 0,
'qty': 2,
'price_subtotal': 12,
'price_subtotal_incl': 12,
'tax_ids': [[6, False, []]],
}]],
'statement_ids': [[0, 0, {
@ -75,7 +78,8 @@ class TestPosPickingLoad(TransactionCase):
[('origin_picking_id', 'in', sale_order.picking_ids.ids)])
self.assertTrue(pos_order)
self.assertEqual(pos_order.origin_picking_id.state, 'cancel')
self.assertIn(pos_order.picking_id, sale_order.picking_ids)
self.assertEqual(
pos_order.picking_id.group_id,
pos_order.origin_picking_id.group_id)
self.assertEqual(
sale_order.invoice_status, 'invoiced')

4
pos_picking_load/views/pos_picking_load.xml

@ -2,14 +2,14 @@
<odoo>
<template id="assets" name="pos_picking_load assets" inherit_id="point_of_sale.assets">
<template id="assets" inherit_id="point_of_sale.assets">
<xpath expr="." position="inside">
<script type="text/javascript" src="/pos_picking_load/static/src/js/widget.js"></script>
<script type="text/javascript" src="/pos_picking_load/static/src/js/model.js"></script>
</xpath>
</template>
<template id="index_pos_picking_load" name="POS Index Picking Load" inherit_id="point_of_sale.index">
<template id="index" inherit_id="point_of_sale.index">
<xpath expr="//head" position="inside">
<link rel="stylesheet" href="/pos_picking_load/static/src/css/pos_picking_load.css"/>
</xpath>

27
pos_picking_load/views/view_pos_config.xml

@ -4,12 +4,31 @@
<record id="view_pos_config_form" model="ir.ui.view">
<field name="model">pos.config</field>
<field name="inherit_id" ref="point_of_sale.view_pos_config_form"/>
<field name="inherit_id" ref="point_of_sale.pos_config_view_form"/>
<field name="arch" type="xml">
<field name="iface_invoicing" position="after">
<xpath expr="//h2[@name='order']" position="before">
<h2 name="order">Picking Load</h2>
<div class="row mt16 o_settings_container">
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="iface_load_picking"/>
<field name="iface_load_picking_max_qty" attrs="{'invisible': [('iface_load_picking', '=', False)]}" />
</field>
</div>
<div class="o_setting_right_pane">
<label for="iface_load_picking" string="Load Pickings"/>
<div class="text-muted">
Enable the possibility to load pickings in the Point of Sale
</div>
<div class="content-group mt16" attrs="{'invisible': [('iface_load_picking', '=', False)]}">
<div class="row mt16">
<label string="Max Picking Quantity To Load" for="iface_load_picking_max_qty" class="col-lg-3 o_light_label"/>
<field name="iface_load_picking_max_qty"/>
</div>
</div>
</div>
</div>
</div>
</xpath>
</field>
</record>

64
pos_picking_load_partner_name/README.rst

@ -0,0 +1,64 @@
=======================================================
Point of Sale - Load Picking by Partner Name improvment
=======================================================
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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-grap%2Fgrap--odoo--incubator-lightgray.png?logo=github
:target: https://github.com/grap/grap-odoo-incubator/tree/8.0/pos_picking_load_partner_name
:alt: grap/grap-odoo-incubator
|badge1| |badge2| |badge3|
This module extends the functionality of PoS Picking Load module to improve
the loading time during the picking load.
for that purpose, its store partner name on each picking and search on that
new field, instead of making a search on partner_id field.
**Table of contents**
.. contents::
:local:
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/grap/grap-odoo-incubator/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/grap/grap-odoo-incubator/issues/new?body=module:%20pos_picking_load_partner_name%0Aversion:%208.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
~~~~~~~
* GRAP
Contributors
~~~~~~~~~~~~
* Sylvain LE GAL <https://twitter.com/legalsylvain>
Maintainers
~~~~~~~~~~~
This module is part of the `grap/grap-odoo-incubator <https://github.com/grap/grap-odoo-incubator/tree/8.0/pos_picking_load_partner_name>`_ project on GitHub.
You are welcome to contribute.

3
pos_picking_load_partner_name/__init__.py

@ -0,0 +1,3 @@
from . import models
from .hooks import pre_init_hook

19
pos_picking_load_partner_name/__manifest__.py

@ -0,0 +1,19 @@
# Copyright (C) 2018 - Today: GRAP (http://www.grap.coop)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
'name': 'Point of Sale - Load Picking by Partner Name improvment',
'summary': "Improve load of picking in PoS by partner name",
'version': '12.0.1.0.0',
'category': 'Point of Sale',
'author': 'GRAP,Odoo Community Association (OCA)',
'website': 'http://www.github.com/OCA/pos',
'license': 'AGPL-3',
'maintainers': ['legalsylvain'],
'development_status': 'Beta',
'depends': [
'pos_picking_load',
],
'pre_init_hook': 'pre_init_hook',
'installable': True,
}

26
pos_picking_load_partner_name/hooks.py

@ -0,0 +1,26 @@
# Copyright (C) 2018 - Today: GRAP (http://www.grap.coop)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import logging
_logger = logging.getLogger(__name__)
def _create_column(cr, table_name, column_name, column_type):
# pylint: disable=sql-injection
req = "ALTER TABLE %s ADD COLUMN %s %s" % (
table_name, column_name, column_type)
cr.execute(req)
def pre_init_hook(cr):
_logger.info(
"Compute stock_picking.partner_name for existing pickings")
_create_column(cr, 'stock_picking', 'partner_name', 'VARCHAR')
cr.execute("""
UPDATE stock_picking sp
SET partner_name = rp.name
FROM res_partner rp
WHERE sp.partner_id = rp.id;
""")

27
pos_picking_load_partner_name/i18n/fr.po

@ -0,0 +1,27 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_picking_load_partner_name
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-11 09:51+0000\n"
"PO-Revision-Date: 2019-07-11 09:51+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: pos_picking_load_partner_name
#: model:ir.model.fields,field_description:pos_picking_load_partner_name.field_stock_picking__partner_name
msgid "Name"
msgstr "Nom"
#. module: pos_picking_load_partner_name
#: model:ir.model,name:pos_picking_load_partner_name.model_stock_picking
msgid "Transfer"
msgstr "Transfert"

27
pos_picking_load_partner_name/i18n/pos_picking_load_partner_name.pot

@ -0,0 +1,27 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * pos_picking_load_partner_name
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-11 09:50+0000\n"
"PO-Revision-Date: 2019-07-11 09:50+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: pos_picking_load_partner_name
#: model:ir.model.fields,field_description:pos_picking_load_partner_name.field_stock_picking__partner_name
msgid "Name"
msgstr ""
#. module: pos_picking_load_partner_name
#: model:ir.model,name:pos_picking_load_partner_name.model_stock_picking
msgid "Transfer"
msgstr ""

1
pos_picking_load_partner_name/models/__init__.py

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

24
pos_picking_load_partner_name/models/stock_picking.py

@ -0,0 +1,24 @@
# Copyright (C) 2018 - Today: GRAP (http://www.grap.coop)
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
class StockPicking(models.Model):
_inherit = 'stock.picking'
# Columns section
partner_name = fields.Char(
related='partner_id.name', store=True)
@api.model
def _prepare_filter_query_for_pos(self, pos_session_id, query):
# Overwrite original function, replacing
# partner_id field by partner_name
return [
'|', '|',
('name', 'ilike', query),
('origin', 'ilike', query),
('partner_name', 'ilike', query),
]

1
pos_picking_load_partner_name/readme/CONTRIBUTORS.rst

@ -0,0 +1 @@
* Sylvain LE GAL <https://twitter.com/legalsylvain>

5
pos_picking_load_partner_name/readme/DESCRIPTION.rst

@ -0,0 +1,5 @@
This module extends the functionality of PoS Picking Load module to improve
the loading time during the picking load.
For that purpose, its store partner name on each picking and search on that
new field, instead of making a search on partner_id field.
Loading…
Cancel
Save