[tryton-debian-vcs] tryton-modules-stock branch debian updated. debian/3.2.3-1-2-g865d4d8

Mathias Behrle tryton-debian-vcs at alioth.debian.org
Thu Oct 23 12:18:26 UTC 2014


The following commit has been merged in the debian branch:
https://alioth.debian.org/plugins/scmgit/cgi-bin/gitweb.cgi/?p=tryton/tryton-modules-stock.git;a=commitdiff;h=debian/3.2.3-1-2-g865d4d8

commit 865d4d8f98d45f9b4d229552bd7d7f9ef35ed4d5
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Thu Oct 23 13:32:08 2014 +0200

    Releasing debian version 3.4.0-1.
    
    Signed-off-by: Mathias Behrle <mathiasb at m9s.biz>

diff --git a/debian/changelog b/debian/changelog
index 041e5ec..654ae4b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-modules-stock (3.4.0-1) unstable; urgency=medium
+
+  * Merging upstream version 3.4.0.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Tue, 21 Oct 2014 20:24:29 +0200
+
 tryton-modules-stock (3.2.3-1) unstable; urgency=medium
 
   * Adding actual upstream signing key.
commit d108960903cfd7538abcf0de37420531b6274d4b
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Oct 21 11:29:22 2014 +0200

    Merging upstream version 3.4.0.

diff --git a/CHANGELOG b/CHANGELOG
index 88cf09b..71227fc 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,11 +1,7 @@
-Version 3.2.3 - 2014-09-29
-* Bug fixes (see mercurial logs for details)
-
-Version 3.2.2 - 2014-08-03
-* Bug fixes (see mercurial logs for details)
-
-Version 3.2.1 - 2014-07-02
+Version 3.4.0 - 2014-10-20
 * Bug fixes (see mercurial logs for details)
+* Always succeed assignation from lost and found on internal shipments
+* Remove return shipment out wizard
 
 Version 3.2.0 - 2014-04-21
 * Bug fixes (see mercurial logs for details)
diff --git a/PKG-INFO b/PKG-INFO
index 98ada6b..72cdd89 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond_stock
-Version: 3.2.3
+Version: 3.4.0
 Summary: Tryton module for stock and inventory
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: issue_tracker at tryton.org
 License: GPL-3
-Download-URL: http://downloads.tryton.org/3.2/
+Download-URL: http://downloads.tryton.org/3.4/
 Description: trytond_stock
         =============
         
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..617e1d9
--- /dev/null
+++ b/TODO
@@ -0,0 +1,3 @@
+- Add an indexed period on move with automatic creation and default duration
+  defined on company
+
diff --git a/__init__.py b/__init__.py
index 538a76a..53d577c 100644
--- a/__init__.py
+++ b/__init__.py
@@ -42,7 +42,6 @@ def register():
         AssignShipmentOut,
         AssignShipmentInternal,
         AssignShipmentInReturn,
-        CreateShipmentOutReturn,
         ProductByLocation,
         OpenProductQuantitiesByWarehouse,
         module='stock', type_='wizard')
diff --git a/inventory.py b/inventory.py
index 3c515b3..d7526d3 100644
--- a/inventory.py
+++ b/inventory.py
@@ -216,6 +216,8 @@ class Inventory(Workflow, ModelSQL, ModelView):
                         or product2consumable[product_id]):
                     continue
                 quantity, uom_id = product_qty[product_id]
+                if not quantity:
+                    continue
                 values = Line.create_values4complete(product_id, inventory,
                     quantity, uom_id)
                 to_create.append(values)
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
index c63aaef..7b832b8 100644
--- a/locale/bg_BG.po
+++ b/locale/bg_BG.po
@@ -116,14 +116,6 @@ msgctxt "error:stock.shipment.internal:"
 msgid "Internal Shipment \"%s\" must be cancelled before deletion."
 msgstr ""
 
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "The shipment with code \"%s\" is not yet sent."
-msgstr ""
-
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "You can not create return shipment"
-msgstr "Не може да създадете връщане на пратка"
-
 msgctxt "error:stock.shipment.out.return:"
 msgid "Customer Return Shipment \"%s\" must be cancelled before deletion."
 msgstr ""
@@ -1084,6 +1076,10 @@ msgstr ""
 "* Празна дата е неизвестна дата в бъдещето.\n"
 "* Дата от минал период показва исторически данни."
 
+msgctxt "model:ir.action,name:"
+msgid "Create Return Shipment"
+msgstr "Създаване на върната пратка"
+
 msgctxt "model:ir.action,name:act_inventory_form"
 msgid "Inventories"
 msgstr "Инвентаризации"
@@ -1150,10 +1146,6 @@ msgctxt "model:ir.action,name:act_stock_configuration_form"
 msgid "Stock Configuration"
 msgstr "Конфигуриране на наличност"
 
-msgctxt "model:ir.action,name:create_shipment_out_return"
-msgid "Create Return Shipment"
-msgstr "Създаване на върната пратка"
-
 msgctxt "model:ir.action,name:report_shipment_in_restocking_list"
 msgid "Restocking List"
 msgstr "Списък за увеличаване наличност на продукт"
diff --git a/locale/ca_ES.po b/locale/ca_ES.po
index 7d47685..53ca3ed 100644
--- a/locale/ca_ES.po
+++ b/locale/ca_ES.po
@@ -136,14 +136,6 @@ msgctxt "error:stock.shipment.internal:"
 msgid "Internal Shipment \"%s\" must be cancelled before deletion."
 msgstr "Heu de cancel·lar l'albarà intern \"%s\" abans de ser eliminat."
 
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "The shipment with code \"%s\" is not yet sent."
-msgstr "L'albarà amb codi \"%s\" encara no s'ha enviat."
-
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "You can not create return shipment"
-msgstr "No podeu crear un albarà de devolució."
-
 msgctxt "error:stock.shipment.out.return:"
 msgid "Customer Return Shipment \"%s\" must be cancelled before deletion."
 msgstr ""
@@ -1092,6 +1084,10 @@ msgstr ""
 "* Un valor buit és un data infinita en el futur.\n"
 "* Una data en el passat proporcionarà valors històrics."
 
+msgctxt "model:ir.action,name:"
+msgid "Create Return Shipment"
+msgstr "Crea albarà de devolució"
+
 msgctxt "model:ir.action,name:act_inventory_form"
 msgid "Inventories"
 msgstr "Inventaris"
@@ -1156,10 +1152,6 @@ msgctxt "model:ir.action,name:act_stock_configuration_form"
 msgid "Stock Configuration"
 msgstr "Configuració d'estoc"
 
-msgctxt "model:ir.action,name:create_shipment_out_return"
-msgid "Create Return Shipment"
-msgstr "Crea albarà de devolució"
-
 msgctxt "model:ir.action,name:report_shipment_in_restocking_list"
 msgid "Restocking List"
 msgstr "Llista de proveïment"
@@ -1589,7 +1581,7 @@ msgstr "A la ubicació"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "VAT Number:"
-msgstr "Magatzem:"
+msgstr "CIF/NIF:"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "Warehouse:"
@@ -1649,7 +1641,7 @@ msgstr "A la ubicació:"
 
 msgctxt "odt:stock.shipment.internal.report:"
 msgid "VAT Number:"
-msgstr "Nombre CIF/NIF:"
+msgstr "CIF/NIF:"
 
 msgctxt "odt:stock.shipment.out.delivery_note:"
 msgid "/"
@@ -1693,7 +1685,7 @@ msgstr "Número d'albarà:"
 
 msgctxt "odt:stock.shipment.out.delivery_note:"
 msgid "VAT Number:"
-msgstr "Nombre CIF/NIF:"
+msgstr "CIF/NIF:"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "/"
@@ -1745,7 +1737,7 @@ msgstr "A la ubicació"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "VAT Number:"
-msgstr "Magatzem:"
+msgstr "CIF/NIF:"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "Warehouse:"
@@ -1805,7 +1797,7 @@ msgstr "A la ubicació"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "VAT Number:"
-msgstr "Magatzem:"
+msgstr "CIF/NIF:"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "Warehouse:"
diff --git a/locale/cs_CZ.po b/locale/cs_CZ.po
index 67511c8..08de1ed 100644
--- a/locale/cs_CZ.po
+++ b/locale/cs_CZ.po
@@ -114,14 +114,6 @@ msgctxt "error:stock.shipment.internal:"
 msgid "Internal Shipment \"%s\" must be cancelled before deletion."
 msgstr ""
 
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "The shipment with code \"%s\" is not yet sent."
-msgstr ""
-
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "You can not create return shipment"
-msgstr ""
-
 msgctxt "error:stock.shipment.out.return:"
 msgid "Customer Return Shipment \"%s\" must be cancelled before deletion."
 msgstr ""
@@ -1060,6 +1052,10 @@ msgid ""
 "* A date in the past will provide historical values."
 msgstr ""
 
+msgctxt "model:ir.action,name:"
+msgid "Create Return Shipment"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_inventory_form"
 msgid "Inventories"
 msgstr ""
@@ -1124,10 +1120,6 @@ msgctxt "model:ir.action,name:act_stock_configuration_form"
 msgid "Stock Configuration"
 msgstr ""
 
-msgctxt "model:ir.action,name:create_shipment_out_return"
-msgid "Create Return Shipment"
-msgstr ""
-
 msgctxt "model:ir.action,name:report_shipment_in_restocking_list"
 msgid "Restocking List"
 msgstr ""
diff --git a/locale/de_DE.po b/locale/de_DE.po
index 8618ca7..9edfb02 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -146,14 +146,6 @@ msgstr ""
 "Der Interne Lieferposten \"%s\" muss annulliert werden, bevor er gelöscht "
 "werden kann."
 
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "The shipment with code \"%s\" is not yet sent."
-msgstr "Der Lieferposten mit Code \"%s\" ist noch nicht versendet."
-
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "You can not create return shipment"
-msgstr "Erstellung einer Warenrücknahme nicht möglich."
-
 msgctxt "error:stock.shipment.out.return:"
 msgid "Customer Return Shipment \"%s\" must be cancelled before deletion."
 msgstr ""
@@ -1102,6 +1094,10 @@ msgstr ""
 "* ein leerer Wert ist ein unbegrenztes Datum in der Zukunft\n"
 "* ein Datum in der Vergangenheit berechnet historische Werte\n"
 
+msgctxt "model:ir.action,name:"
+msgid "Create Return Shipment"
+msgstr "Lieferpostenrückgabe erstellen"
+
 msgctxt "model:ir.action,name:act_inventory_form"
 msgid "Inventories"
 msgstr "Bestandskorrekturen"
@@ -1166,10 +1162,6 @@ msgctxt "model:ir.action,name:act_stock_configuration_form"
 msgid "Stock Configuration"
 msgstr "Lager"
 
-msgctxt "model:ir.action,name:create_shipment_out_return"
-msgid "Create Return Shipment"
-msgstr "Lieferpostenrückgabe erstellen"
-
 msgctxt "model:ir.action,name:report_shipment_in_restocking_list"
 msgid "Restocking List"
 msgstr "Einlagerungsliste"
diff --git a/locale/es_AR.po b/locale/es_AR.po
index 63029e0..7e6ac4b 100644
--- a/locale/es_AR.po
+++ b/locale/es_AR.po
@@ -136,14 +136,6 @@ msgctxt "error:stock.shipment.internal:"
 msgid "Internal Shipment \"%s\" must be cancelled before deletion."
 msgstr "Debe cancelar el Remito interno «%s» antes de eliminar."
 
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "The shipment with code \"%s\" is not yet sent."
-msgstr "El remito con código «%s» todavía no se ha enviado."
-
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "You can not create return shipment"
-msgstr "No puede crear remito de devolución"
-
 msgctxt "error:stock.shipment.out.return:"
 msgid "Customer Return Shipment \"%s\" must be cancelled before deletion."
 msgstr ""
@@ -1092,6 +1084,10 @@ msgstr ""
 "* Un valor vacío es una fecha infinita en el futuro.\n"
 "* Una fecha del pasado proporcionará valores históricos."
 
+msgctxt "model:ir.action,name:"
+msgid "Create Return Shipment"
+msgstr "Crear Remito de devolución"
+
 msgctxt "model:ir.action,name:act_inventory_form"
 msgid "Inventories"
 msgstr "Inventarios"
@@ -1156,10 +1152,6 @@ msgctxt "model:ir.action,name:act_stock_configuration_form"
 msgid "Stock Configuration"
 msgstr "Configuración de stock"
 
-msgctxt "model:ir.action,name:create_shipment_out_return"
-msgid "Create Return Shipment"
-msgstr "Crear Remito de devolución"
-
 msgctxt "model:ir.action,name:report_shipment_in_restocking_list"
 msgid "Restocking List"
 msgstr "Lista reabastecimiento"
diff --git a/locale/es_CO.po b/locale/es_CO.po
index 42a21e9..616c189 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -137,14 +137,6 @@ msgctxt "error:stock.shipment.internal:"
 msgid "Internal Shipment \"%s\" must be cancelled before deletion."
 msgstr "El envío interno \"%s\" debe ser cancelado antes de ser eliminado."
 
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "The shipment with code \"%s\" is not yet sent."
-msgstr "El envío con código \"%s\" no se ha enviado todavía."
-
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "You can not create return shipment"
-msgstr "No puede crear devoluciones"
-
 msgctxt "error:stock.shipment.out.return:"
 msgid "Customer Return Shipment \"%s\" must be cancelled before deletion."
 msgstr ""
@@ -1092,6 +1084,10 @@ msgstr ""
 "* Un valor vacío es una fecha infinita en el futuro.\n"
 "* Una fecha del pasado proporcionará valores históricos."
 
+msgctxt "model:ir.action,name:"
+msgid "Create Return Shipment"
+msgstr "Crear Devolución"
+
 msgctxt "model:ir.action,name:act_inventory_form"
 msgid "Inventories"
 msgstr "Inventarios"
@@ -1156,10 +1152,6 @@ msgctxt "model:ir.action,name:act_stock_configuration_form"
 msgid "Stock Configuration"
 msgstr "Configuración Inventarios"
 
-msgctxt "model:ir.action,name:create_shipment_out_return"
-msgid "Create Return Shipment"
-msgstr "Crear Devolución"
-
 msgctxt "model:ir.action,name:report_shipment_in_restocking_list"
 msgid "Restocking List"
 msgstr "Lista de Renovación de Inventario"
diff --git a/locale/es_CO.po b/locale/es_EC.po
similarity index 92%
copy from locale/es_CO.po
copy to locale/es_EC.po
index 42a21e9..38dc91f 100644
--- a/locale/es_CO.po
+++ b/locale/es_EC.po
@@ -14,8 +14,8 @@ msgctxt "error:product.template:"
 msgid ""
 "You cannot change the type for a product which is associated to stock moves."
 msgstr ""
-"No puede cambiar el tipo de un producto el cual esta asociado a movimientos "
-"de inventarios."
+"No puede cambiar el tipo de un producto el cual está asociado a movimientos "
+"de existencias."
 
 msgctxt "error:stock.inventory.line:"
 msgid "Line quantity must be positive."
@@ -32,7 +32,7 @@ msgstr "La línea \"%s\" no es única en el Inventario \"%s\"."
 msgctxt "error:stock.location:"
 msgid "Location \"%(location)s\" must be a child of warehouse \"%(warehouse)s\"."
 msgstr ""
-"La(s) bodega(s) \"%(location)s\" deben ser hijas del almacén  "
+"La(s) bodega(s) \"%(location)s\" debe(n) ser hija(s) del almacén  "
 "\"%(warehouse)s\"."
 
 msgctxt "error:stock.location:"
@@ -40,8 +40,8 @@ msgid ""
 "Location \"%s\" with existing moves cannot be changed to a type that does "
 "not support moves."
 msgstr ""
-"Bodega \"%s\" tiene movimientos y no pueden ser cambiada a un tipo que no "
-"soporta movimientos. "
+"La bodega \"%s\" tiene movimientos y no puede ser cambiada a un tipo que no "
+"soporta movimientos."
 
 msgctxt "error:stock.move:"
 msgid "Internal move quantity must be positive"
@@ -57,26 +57,26 @@ msgstr "Las bodegas origen y destino deben ser distintas"
 
 msgctxt "error:stock.move:"
 msgid "The stock move \"%s\" has no origin."
-msgstr "El movimiento de invetario \"%s\" no tiene origen."
+msgstr "El movimiento de inventario \"%s\" no tiene origen."
 
 msgctxt "error:stock.move:"
 msgid ""
 "You can not delete stock move \"%s\" because it is not in draft or cancelled"
 " state."
 msgstr ""
-"No puede borrar los movimientos de inventarios \"%s\" porque no estan en "
-"borrador o anulados."
+"No puede eliminar el movimiento de stock \"%s\" porque no está en estado "
+"borrador o cancelado."
 
 msgctxt "error:stock.move:"
 msgid "You can not modify move \"%(move)s\" because period \"%(period)s\" is closed."
 msgstr ""
-"No puede modificar movimientos \"%(move)s\" porque el periodo \"%(period)s\""
-" esta cerrado."
+"No puede modificar el movimiento \"%(move)s\" porque el período "
+"\"%(period)s\" está cerrado."
 
 msgctxt "error:stock.move:"
 msgid "You can not modify stock move \"%s\" because it is in \"Assigned\" state."
 msgstr ""
-"No puede modificar el movimiento de inventario \"%s\" porque esta en estado "
+"No puede modificar el movimiento de stock \"%s\" porque está en estado "
 "\"Asignado\"."
 
 msgctxt "error:stock.move:"
@@ -84,50 +84,49 @@ msgid ""
 "You can not modify stock move \"%s\" because it is in \"Done\" or \"Cancel\""
 " state."
 msgstr ""
-"No puede modificar el movimiento de inventario \"%s\" porque esta en estado "
-"\"Hecho\" o \"Cancelado\"."
+"No puede modificar el movimiento de stock \"%s\" porque está en estado "
+"\"Realizado\" o \"Cancelado\"."
 
 msgctxt "error:stock.move:"
 msgid "You can not set stock move \"%s\" to assigned state."
-msgstr "No puede devolver el movimiento de inventarios \"%s\" como asignado."
+msgstr "No puede establecer el movimiento de stock \"%s\" a estado asignado."
 
 msgctxt "error:stock.move:"
 msgid "You can not set stock move \"%s\" to done state."
-msgstr "No puede establecer el movimiento de inventarios \"%s\" como hecho."
+msgstr "No puede establecer el movimiento de stock \"%s\" a estado realizado."
 
 msgctxt "error:stock.move:"
 msgid "You can not set stock move \"%s\" to draft state."
-msgstr "No puede establecer el movimiento de inventarios \"%s\" como borrador."
+msgstr "No puede establecer el movimiento de stock \"%s\" a estado borrador."
 
 msgctxt "error:stock.period:"
 msgid "You can not close a period in the future or today."
-msgstr "No se puede cerrar un período de hoy o del futuro."
+msgstr "No puede cerrar un período de hoy o del futuro."
 
 msgctxt "error:stock.period:"
 msgid "You can not close a period when there still are assigned moves."
-msgstr ""
-"No se puede cerrar un período cuando todavía hay movimientos asignados."
+msgstr "No puede cerrar un período cuando todavía hay movimientos asignados."
 
 msgctxt "error:stock.shipment.in.return:"
 msgid "Supplier Return Shipment \"%s\" must be cancelled before deletion."
 msgstr ""
 "El envío de devolución a proveedor \"%s\" debe ser cancelado antes de ser "
-"eliminado!"
+"eliminado."
 
 msgctxt "error:stock.shipment.in:"
 msgid ""
 "Incoming Moves must have the warehouse input location as destination "
 "location."
 msgstr ""
-"¡Los movimientos de entrada deben tener el almacén de entrada como bodega "
+"Los movimientos de entrada deben tener el almacén de entrada como bodega "
 "destino."
 
 msgctxt "error:stock.shipment.in:"
 msgid ""
 "Inventory Moves must have the warehouse input location as source location."
 msgstr ""
-"¡Los movimientos de inventario deben tener el almacén de entrada como bodega"
-" de origen."
+"Los movimientos de inventario deben tener el almacén de entrada como bodega "
+"de origen."
 
 msgctxt "error:stock.shipment.in:"
 msgid "Supplier Shipment \"%s\" must be cancelled before deletion."
@@ -137,23 +136,15 @@ msgctxt "error:stock.shipment.internal:"
 msgid "Internal Shipment \"%s\" must be cancelled before deletion."
 msgstr "El envío interno \"%s\" debe ser cancelado antes de ser eliminado."
 
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "The shipment with code \"%s\" is not yet sent."
-msgstr "El envío con código \"%s\" no se ha enviado todavía."
-
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "You can not create return shipment"
-msgstr "No puede crear devoluciones"
-
 msgctxt "error:stock.shipment.out.return:"
 msgid "Customer Return Shipment \"%s\" must be cancelled before deletion."
 msgstr ""
-"¡El envío de devolución de cliente \"%s\" debe ser cancelado antes de "
-"eliminarse!"
+"El envío de devolución de cliente \"%s\" debe ser cancelado antes de "
+"eliminarse."
 
 msgctxt "error:stock.shipment.out:"
 msgid "Customer Shipment \"%s\" must be cancelled before deletion."
-msgstr "¡El envío de cliente \"%s\" debe ser cancelado antes de eliminarse!"
+msgstr "El envío de cliente \"%s\" debe ser cancelado antes de eliminarse."
 
 msgctxt "field:party.address,delivery:"
 msgid "Delivery"
@@ -177,7 +168,7 @@ msgstr "ID"
 
 msgctxt "field:product.product,cost_value:"
 msgid "Cost Value"
-msgstr "Costo"
+msgstr "Valor de Costo"
 
 msgctxt "field:product.product,forecast_quantity:"
 msgid "Forecast Quantity"
@@ -189,11 +180,11 @@ msgstr "Cantidad"
 
 msgctxt "field:product.template,cost_value:"
 msgid "Cost Value"
-msgstr "Costo"
+msgstr "Valor de Costo"
 
 msgctxt "field:product.template,forecast_quantity:"
 msgid "Forecast Quantity"
-msgstr "Cantidad Proyectada"
+msgstr "Cantidad Prevista"
 
 msgctxt "field:product.template,quantity:"
 msgid "Quantity"
@@ -217,23 +208,23 @@ msgstr "Nombre"
 
 msgctxt "field:stock.configuration,shipment_in_return_sequence:"
 msgid "Supplier Return Shipment Sequence"
-msgstr "Secuencia Envío de Devolución a Proveedor"
+msgstr "Secuencia de Envío de Devolución a Proveedor"
 
 msgctxt "field:stock.configuration,shipment_in_sequence:"
 msgid "Supplier Shipment Sequence"
-msgstr "Secuencia Envío de Proveedor"
+msgstr "Secuencia de Envío de Proveedor"
 
 msgctxt "field:stock.configuration,shipment_internal_sequence:"
 msgid "Internal Shipment Sequence"
-msgstr "Secuencia Envío Interno"
+msgstr "Secuencia de Envío Interno"
 
 msgctxt "field:stock.configuration,shipment_out_return_sequence:"
 msgid "Customer Return Shipment Sequence"
-msgstr "Secuencia Devolución de Cliente"
+msgstr "Secuencia de Devolución de Cliente"
 
 msgctxt "field:stock.configuration,shipment_out_sequence:"
 msgid "Customer Shipment Sequence"
-msgstr "Secuencia Envío a Cliente"
+msgstr "Secuencia de Envío a Cliente"
 
 msgctxt "field:stock.configuration,write_date:"
 msgid "Write Date"
@@ -245,7 +236,7 @@ msgstr "Modificado por Usuario"
 
 msgctxt "field:stock.inventory,company:"
 msgid "Company"
-msgstr "Compañia"
+msgstr "Empresa"
 
 msgctxt "field:stock.inventory,create_date:"
 msgid "Create Date"
@@ -333,7 +324,7 @@ msgstr "Decimales de Unidad"
 
 msgctxt "field:stock.inventory.line,uom:"
 msgid "UOM"
-msgstr "UDM"
+msgstr "UdM"
 
 msgctxt "field:stock.inventory.line,write_date:"
 msgid "Write Date"
@@ -361,7 +352,7 @@ msgstr "Código"
 
 msgctxt "field:stock.location,cost_value:"
 msgid "Cost Value"
-msgstr "Costo"
+msgstr "Valor de Costo"
 
 msgctxt "field:stock.location,create_date:"
 msgid "Create Date"
@@ -373,7 +364,7 @@ msgstr "Creado por Usuario"
 
 msgctxt "field:stock.location,forecast_quantity:"
 msgid "Forecast Quantity"
-msgstr "Cantidad Proyectada"
+msgstr "Cantidad Prevista"
 
 msgctxt "field:stock.location,id:"
 msgid "ID"
@@ -429,7 +420,7 @@ msgstr "Modificado por Usuario"
 
 msgctxt "field:stock.move,company:"
 msgid "Company"
-msgstr "Compañia"
+msgstr "Empresa"
 
 msgctxt "field:stock.move,cost_price:"
 msgid "Cost Price"
@@ -469,7 +460,7 @@ msgstr "Origen"
 
 msgctxt "field:stock.move,planned_date:"
 msgid "Planned Date"
-msgstr "Fecha Planeada"
+msgstr "Fecha Planificada"
 
 msgctxt "field:stock.move,product:"
 msgid "Product"
@@ -509,7 +500,7 @@ msgstr "Precio Unitario"
 
 msgctxt "field:stock.move,unit_price_required:"
 msgid "Unit Price Required"
-msgstr "Requiere Precio Unitario"
+msgstr "Precio Unitario Requerido"
 
 msgctxt "field:stock.move,uom:"
 msgid "Uom"
@@ -529,7 +520,7 @@ msgstr "Cachés"
 
 msgctxt "field:stock.period,company:"
 msgid "Company"
-msgstr "Compañia"
+msgstr "Empresa"
 
 msgctxt "field:stock.period,create_date:"
 msgid "Create Date"
@@ -657,7 +648,7 @@ msgstr "Código"
 
 msgctxt "field:stock.shipment.in,company:"
 msgid "Company"
-msgstr "Compañia"
+msgstr "Empresa"
 
 msgctxt "field:stock.shipment.in,contact_address:"
 msgid "Contact Address"
@@ -697,7 +688,7 @@ msgstr "Orígenes"
 
 msgctxt "field:stock.shipment.in,planned_date:"
 msgid "Planned Date"
-msgstr "Fecha Planeada"
+msgstr "Fecha Planificada"
 
 msgctxt "field:stock.shipment.in,rec_name:"
 msgid "Name"
@@ -745,7 +736,7 @@ msgstr "Código"
 
 msgctxt "field:stock.shipment.in.return,company:"
 msgid "Company"
-msgstr "Compañia"
+msgstr "Empresa"
 
 msgctxt "field:stock.shipment.in.return,create_date:"
 msgid "Create Date"
@@ -777,7 +768,7 @@ msgstr "Orígenes"
 
 msgctxt "field:stock.shipment.in.return,planned_date:"
 msgid "Planned Date"
-msgstr "Fecha Planeada"
+msgstr "Fecha Planificada"
 
 msgctxt "field:stock.shipment.in.return,rec_name:"
 msgid "Name"
@@ -817,7 +808,7 @@ msgstr "Código"
 
 msgctxt "field:stock.shipment.internal,company:"
 msgid "Company"
-msgstr "Compañia"
+msgstr "Empresa"
 
 msgctxt "field:stock.shipment.internal,create_date:"
 msgid "Create Date"
@@ -845,7 +836,7 @@ msgstr "Movimientos"
 
 msgctxt "field:stock.shipment.internal,planned_date:"
 msgid "Planned Date"
-msgstr "Fecha Planeada"
+msgstr "Fecha Planificada"
 
 msgctxt "field:stock.shipment.internal,rec_name:"
 msgid "Name"
@@ -885,7 +876,7 @@ msgstr "Código"
 
 msgctxt "field:stock.shipment.out,company:"
 msgid "Company"
-msgstr "Compañia"
+msgstr "Empresa"
 
 msgctxt "field:stock.shipment.out,create_date:"
 msgid "Create Date"
@@ -933,7 +924,7 @@ msgstr "Movimientos de Salida"
 
 msgctxt "field:stock.shipment.out,planned_date:"
 msgid "Planned Date"
-msgstr "Fecha Planeada"
+msgstr "Fecha Planificada"
 
 msgctxt "field:stock.shipment.out,rec_name:"
 msgid "Name"
@@ -981,7 +972,7 @@ msgstr "Código"
 
 msgctxt "field:stock.shipment.out.return,company:"
 msgid "Company"
-msgstr "Compañia"
+msgstr "Empresa"
 
 msgctxt "field:stock.shipment.out.return,create_date:"
 msgid "Create Date"
@@ -1029,7 +1020,7 @@ msgstr "Orígenes"
 
 msgctxt "field:stock.shipment.out.return,planned_date:"
 msgid "Planned Date"
-msgstr "Fecha Planeada"
+msgstr "Fecha Planificada"
 
 msgctxt "field:stock.shipment.out.return,rec_name:"
 msgid "Name"
@@ -1065,7 +1056,8 @@ msgstr "Modificado por Usuario"
 
 msgctxt "help:party.party,customer_location:"
 msgid "The default destination location when sending products to the party."
-msgstr "La bodega destino por defecto cuando se envian productos al tercero."
+msgstr ""
+"La bodega de destino por defecto cuando se envían productos al tercero."
 
 msgctxt "help:party.party,supplier_location:"
 msgid "The default source location when receiving products from the party."
@@ -1078,7 +1070,7 @@ msgid ""
 "* An empty value is an infinite date in the future.\n"
 "* A date in the past will provide historical values."
 msgstr ""
-"Permite calcular las cantidades previstas en stock para esta fecha.\n"
+"Permite calcular las cantidades  de stock previstas para esta fecha.\n"
 "* Un valor vacío es una fecha infinita en el futuro.\n"
 "* Una fecha del pasado proporcionará valores históricos."
 
@@ -1088,10 +1080,14 @@ msgid ""
 "* An empty value is an infinite date in the future.\n"
 "* A date in the past will provide historical values."
 msgstr ""
-"Permite calcular las cantidades previstas en stock para esta fecha.\n"
+"Permite calcular las cantidades  de stock previstas para esta fecha.\n"
 "* Un valor vacío es una fecha infinita en el futuro.\n"
 "* Una fecha del pasado proporcionará valores históricos."
 
+msgctxt "model:ir.action,name:"
+msgid "Create Return Shipment"
+msgstr "Crear Devolución"
+
 msgctxt "model:ir.action,name:act_inventory_form"
 msgid "Inventories"
 msgstr "Inventarios"
@@ -1156,13 +1152,9 @@ msgctxt "model:ir.action,name:act_stock_configuration_form"
 msgid "Stock Configuration"
 msgstr "Configuración Inventarios"
 
-msgctxt "model:ir.action,name:create_shipment_out_return"
-msgid "Create Return Shipment"
-msgstr "Crear Devolución"
-
 msgctxt "model:ir.action,name:report_shipment_in_restocking_list"
 msgid "Restocking List"
-msgstr "Lista de Renovación de Inventario"
+msgstr "Lista de Reabastecimiento"
 
 msgctxt "model:ir.action,name:report_shipment_internal"
 msgid "Internal Shipment"
@@ -1178,7 +1170,7 @@ msgstr "Lista de Selección"
 
 msgctxt "model:ir.action,name:report_shipment_out_return_restocking_list"
 msgid "Restocking List"
-msgstr "Lista de renovación de inventario"
+msgstr "Lista de Reabastecimiento"
 
 msgctxt "model:ir.action,name:wizard_product_by_location"
 msgid "Product by Locations"
@@ -1202,7 +1194,7 @@ msgstr "Asignar Envío Interno"
 
 msgctxt "model:ir.action,name:wizard_shipment_out_assign"
 msgid "Assign Shipment Out"
-msgstr "Asignación de Salida de Envío"
+msgstr "Asignar Salida de Envío"
 
 msgctxt "model:ir.action.act_window.domain,name:act_inventory_form_domain_all"
 msgid "All"
@@ -1417,7 +1409,7 @@ msgstr "Devoluciones de Clientes"
 
 msgctxt "model:ir.ui.menu,name:menu_stock"
 msgid "Inventory & Stock"
-msgstr "Gestión de Inventarios"
+msgstr "Logística"
 
 msgctxt "model:ir.ui.menu,name:menu_stock_configuration"
 msgid "Stock Configuration"
@@ -1449,11 +1441,11 @@ msgstr "Inventario de Existencias"
 
 msgctxt "model:stock.inventory.line,name:"
 msgid "Stock Inventory Line"
-msgstr "Línea de Existencia en Inventario "
+msgstr "Línea de Inventario de Existencias"
 
 msgctxt "model:stock.location,name:"
 msgid "Stock Location"
-msgstr "Bodega de Existencia"
+msgstr "Bodega de Existencias"
 
 msgctxt "model:stock.location,name:location_customer"
 msgid "Customer"
@@ -1481,7 +1473,7 @@ msgstr "Proveedor"
 
 msgctxt "model:stock.location,name:location_warehouse"
 msgid "Warehouse"
-msgstr "Deposito Principal"
+msgstr "Depósito Principal"
 
 msgctxt "model:stock.move,name:"
 msgid "Stock Move"
@@ -1489,11 +1481,11 @@ msgstr "Movimiento de Existencias"
 
 msgctxt "model:stock.period,name:"
 msgid "Stock Period"
-msgstr "Período de Stock"
+msgstr "Período de Existencias"
 
 msgctxt "model:stock.period.cache,name:"
 msgid "Stock Period Cache"
-msgstr "Caché de período de Inventarios"
+msgstr "Caché de Período de Existencias"
 
 msgctxt "model:stock.product_quantities_warehouse,name:"
 msgid "Product Quantities By Warehouse"
@@ -1517,7 +1509,7 @@ msgstr "Envío de Devolución a Proveedor"
 
 msgctxt "model:stock.shipment.in.return.assign.failed,name:"
 msgid "Assign Supplier Return Shipment"
-msgstr "Asignar Envio de Devolución de Proveedor"
+msgstr "Asignar Envío de Devolución de Proveedor"
 
 msgctxt "model:stock.shipment.internal,name:"
 msgid "Internal Shipment"
@@ -1561,7 +1553,7 @@ msgstr "Teléfono:"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "Planned Date:"
-msgstr "Fecha Planeada:"
+msgstr "Fecha Planificada:"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "Product"
@@ -1577,7 +1569,7 @@ msgstr "Referencia:"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "Restocking List"
-msgstr "Lista de renovación de existencias"
+msgstr "Lista de reabastecimiento"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "Supplier:"
@@ -1589,7 +1581,7 @@ msgstr "A Bodega"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "VAT Number:"
-msgstr "Número Identificación:"
+msgstr "Número de RUC:"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "Warehouse:"
@@ -1625,7 +1617,7 @@ msgstr "Teléfono:"
 
 msgctxt "odt:stock.shipment.internal.report:"
 msgid "Planned Date:"
-msgstr "Fecha Planeada:"
+msgstr "Fecha Planificada:"
 
 msgctxt "odt:stock.shipment.internal.report:"
 msgid "Product"
@@ -1649,7 +1641,7 @@ msgstr "A Bodega:"
 
 msgctxt "odt:stock.shipment.internal.report:"
 msgid "VAT Number:"
-msgstr "Número Identificación:"
+msgstr "RUC:"
 
 msgctxt "odt:stock.shipment.out.delivery_note:"
 msgid "/"
@@ -1693,7 +1685,7 @@ msgstr "Número de Envío:"
 
 msgctxt "odt:stock.shipment.out.delivery_note:"
 msgid "VAT Number:"
-msgstr "Número Identificación:"
+msgstr "Número de RUC:"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "/"
@@ -1721,11 +1713,11 @@ msgstr "Teléfono:"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "Picking List"
-msgstr "Lista de selección"
+msgstr "Lista de Selección"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "Planned Date:"
-msgstr "Fecha Planeada:"
+msgstr "Fecha Planificada:"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "Product"
@@ -1745,7 +1737,7 @@ msgstr "A Bodega"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "VAT Number:"
-msgstr "Número Identificación:"
+msgstr "Número de RUC:"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "Warehouse:"
@@ -1781,7 +1773,7 @@ msgstr "Teléfono:"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "Planned Date:"
-msgstr "Fecha Planeada:"
+msgstr "Fecha Planificada:"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "Product"
@@ -1797,7 +1789,7 @@ msgstr "Referencia:"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "Restocking List"
-msgstr "Lista de renovación de existencias"
+msgstr "Lista de Reabastecimiento"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "To Location"
@@ -1805,7 +1797,7 @@ msgstr "A Bodega"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "VAT Number:"
-msgstr "Número Identificación:"
+msgstr "RUC:"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "Warehouse:"
@@ -1813,11 +1805,11 @@ msgstr "Depósito:"
 
 msgctxt "selection:stock.inventory,state:"
 msgid "Canceled"
-msgstr "Anulado"
+msgstr "Cancelado"
 
 msgctxt "selection:stock.inventory,state:"
 msgid "Done"
-msgstr "Hecho"
+msgstr "Realizado"
 
 msgctxt "selection:stock.inventory,state:"
 msgid "Draft"
@@ -1857,11 +1849,11 @@ msgstr "Asignado"
 
 msgctxt "selection:stock.move,state:"
 msgid "Canceled"
-msgstr "Anulado"
+msgstr "Cancelado"
 
 msgctxt "selection:stock.move,state:"
 msgid "Done"
-msgstr "Hecho"
+msgstr "Realizado"
 
 msgctxt "selection:stock.move,state:"
 msgid "Draft"
@@ -1877,11 +1869,11 @@ msgstr "Borrador"
 
 msgctxt "selection:stock.shipment.in,state:"
 msgid "Canceled"
-msgstr "Anulado"
+msgstr "Cancelado"
 
 msgctxt "selection:stock.shipment.in,state:"
 msgid "Done"
-msgstr "Hecho"
+msgstr "Realizado"
 
 msgctxt "selection:stock.shipment.in,state:"
 msgid "Draft"
@@ -1897,11 +1889,11 @@ msgstr "Asignado"
 
 msgctxt "selection:stock.shipment.in.return,state:"
 msgid "Canceled"
-msgstr "Anulado"
+msgstr "Cancelado"
 
 msgctxt "selection:stock.shipment.in.return,state:"
 msgid "Done"
-msgstr "Hecho"
+msgstr "Realizado"
 
 msgctxt "selection:stock.shipment.in.return,state:"
 msgid "Draft"
@@ -1917,11 +1909,11 @@ msgstr "Asignado"
 
 msgctxt "selection:stock.shipment.internal,state:"
 msgid "Canceled"
-msgstr "Anulado"
+msgstr "Cancelado"
 
 msgctxt "selection:stock.shipment.internal,state:"
 msgid "Done"
-msgstr "Hecho"
+msgstr "Realizado"
 
 msgctxt "selection:stock.shipment.internal,state:"
 msgid "Draft"
@@ -1937,11 +1929,11 @@ msgstr "Asignado"
 
 msgctxt "selection:stock.shipment.out,state:"
 msgid "Canceled"
-msgstr "Anulado"
+msgstr "Cancelado"
 
 msgctxt "selection:stock.shipment.out,state:"
 msgid "Done"
-msgstr "Hecho"
+msgstr "Realizado"
 
 msgctxt "selection:stock.shipment.out,state:"
 msgid "Draft"
@@ -1957,11 +1949,11 @@ msgstr "En Espera"
 
 msgctxt "selection:stock.shipment.out.return,state:"
 msgid "Canceled"
-msgstr "Anulado"
+msgstr "Cancelado"
 
 msgctxt "selection:stock.shipment.out.return,state:"
 msgid "Done"
-msgstr "Hecho"
+msgstr "Realizado"
 
 msgctxt "selection:stock.shipment.out.return,state:"
 msgid "Draft"
@@ -1981,7 +1973,7 @@ msgstr "Producto por Bodega"
 
 msgctxt "view:product.product:"
 msgid "Cost Value"
-msgstr "Costo"
+msgstr "Valor de Costo"
 
 msgctxt "view:product.product:"
 msgid "Products"
@@ -1989,7 +1981,7 @@ msgstr "Productos"
 
 msgctxt "view:stock.configuration:"
 msgid "Stock Configuration"
-msgstr "Configuración de Inventarios"
+msgstr "Configuración de Stock"
 
 msgctxt "view:stock.inventory.line:"
 msgid "Inventory Line"
@@ -2097,7 +2089,7 @@ msgstr "Cancelar"
 
 msgctxt "view:stock.shipment.in.return:"
 msgid "Done"
-msgstr "Hecho"
+msgstr "Realizado"
 
 msgctxt "view:stock.shipment.in.return:"
 msgid "Draft"
@@ -2105,11 +2097,11 @@ msgstr "Borrador"
 
 msgctxt "view:stock.shipment.in.return:"
 msgid "Supplier Return Shipment"
-msgstr "Devolución a Proveedor"
+msgstr "Envío de Devolución a Proveedor"
 
 msgctxt "view:stock.shipment.in.return:"
 msgid "Supplier Return Shipments"
-msgstr "Devoluciones a Proveedores"
+msgstr "Envío de Devoluciones a Proveedores"
 
 msgctxt "view:stock.shipment.in.return:"
 msgid "Wait"
@@ -2121,7 +2113,7 @@ msgstr "Cancelar"
 
 msgctxt "view:stock.shipment.in:"
 msgid "Done"
-msgstr "Hecho"
+msgstr "Realizado"
 
 msgctxt "view:stock.shipment.in:"
 msgid "Incoming Moves"
@@ -2153,7 +2145,7 @@ msgstr "No se puede Asignar"
 
 msgctxt "view:stock.shipment.internal.assign.failed:"
 msgid "Unable to assign those products:"
-msgstr "No se puede asignar estos productos:"
+msgstr "No se pueden asignar estos productos:"
 
 msgctxt "view:stock.shipment.internal:"
 msgid "Assign"
@@ -2165,7 +2157,7 @@ msgstr "Cancelar"
 
 msgctxt "view:stock.shipment.internal:"
 msgid "Done"
-msgstr "Hecho"
+msgstr "Realizado"
 
 msgctxt "view:stock.shipment.internal:"
 msgid "Draft"
@@ -2185,11 +2177,11 @@ msgstr "Espera"
 
 msgctxt "view:stock.shipment.out.assign.failed:"
 msgid "Unable to Assign"
-msgstr "No se puede asignar"
+msgstr "No se puede Asignar"
 
 msgctxt "view:stock.shipment.out.assign.failed:"
 msgid "Unable to assign those products:"
-msgstr "No se puede asignar estos productos:"
+msgstr "No se pueden asignar estos productos:"
 
 msgctxt "view:stock.shipment.out.return:"
 msgid "Cancel"
@@ -2205,7 +2197,7 @@ msgstr "Devoluciones de Clientes"
 
 msgctxt "view:stock.shipment.out.return:"
 msgid "Done"
-msgstr "Hecho"
+msgstr "Realizado"
 
 msgctxt "view:stock.shipment.out.return:"
 msgid "Draft"
@@ -2241,7 +2233,7 @@ msgstr "Envíos al Cliente"
 
 msgctxt "view:stock.shipment.out:"
 msgid "Done"
-msgstr "Hecho"
+msgstr "Realizado"
 
 msgctxt "view:stock.shipment.out:"
 msgid "Draft"
@@ -2253,7 +2245,7 @@ msgstr "Movimientos de Inventario"
 
 msgctxt "view:stock.shipment.out:"
 msgid "Make shipment"
-msgstr "Hacer Envio"
+msgstr "Realizar envío"
 
 msgctxt "view:stock.shipment.out:"
 msgid "Outgoing Moves"
diff --git a/locale/es_ES.po b/locale/es_ES.po
index 560d191..274f174 100644
--- a/locale/es_ES.po
+++ b/locale/es_ES.po
@@ -131,14 +131,6 @@ msgctxt "error:stock.shipment.internal:"
 msgid "Internal Shipment \"%s\" must be cancelled before deletion."
 msgstr "Debe cancelar el albarán interno \"%s\" antes de borrarlo."
 
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "The shipment with code \"%s\" is not yet sent."
-msgstr "El albarán con código \"%s\" todavía no se ha enviado."
-
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "You can not create return shipment"
-msgstr "No puede crear albarán de devolución."
-
 msgctxt "error:stock.shipment.out.return:"
 msgid "Customer Return Shipment \"%s\" must be cancelled before deletion."
 msgstr "Debe cancelar el albarán devolución de cliente \"%s\" antes de borrarlo."
@@ -1085,6 +1077,10 @@ msgstr ""
 "* Un valor vacío es un fecha infinita en el futuro.\n"
 "* Una fecha en el pasado proporcionará valores históricos."
 
+msgctxt "model:ir.action,name:"
+msgid "Create Return Shipment"
+msgstr "Crear albarán de devolución"
+
 msgctxt "model:ir.action,name:act_inventory_form"
 msgid "Inventories"
 msgstr "Inventarios"
@@ -1149,10 +1145,6 @@ msgctxt "model:ir.action,name:act_stock_configuration_form"
 msgid "Stock Configuration"
 msgstr "Configuración stock"
 
-msgctxt "model:ir.action,name:create_shipment_out_return"
-msgid "Create Return Shipment"
-msgstr "Crear albarán de devolución"
-
 msgctxt "model:ir.action,name:report_shipment_in_restocking_list"
 msgid "Restocking List"
 msgstr "Lista de reabastecimiento"
@@ -1582,7 +1574,7 @@ msgstr "A ubicación"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "VAT Number:"
-msgstr "Número CIF/NIF:"
+msgstr "CIF/NIF:"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "Warehouse:"
@@ -1642,7 +1634,7 @@ msgstr "A ubicación:"
 
 msgctxt "odt:stock.shipment.internal.report:"
 msgid "VAT Number:"
-msgstr "Número CIF/NIF:"
+msgstr "CIF/NIF:"
 
 msgctxt "odt:stock.shipment.out.delivery_note:"
 msgid "/"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
index 249d529..434d5d5 100644
--- a/locale/fr_FR.po
+++ b/locale/fr_FR.po
@@ -23,25 +23,25 @@ msgstr "La quantité de la ligne doit être positive."
 
 msgctxt "error:stock.inventory:"
 msgid "Inventory \"%s\" must be cancelled before deletion."
-msgstr "L'inventaire \"%s\" doit être annulé avant suppression"
+msgstr "L'inventaire « %s » doit être annulé avant suppression."
 
 msgctxt "error:stock.inventory:"
 msgid "Line \"%s\" is not unique on Inventory \"%s\"."
-msgstr "La ligne \"%s\" n'est pas unique pour l'inventaire \"%s\"."
+msgstr "La ligne « %s » n'est pas unique pour l'inventaire « %s »."
 
 msgctxt "error:stock.location:"
 msgid "Location \"%(location)s\" must be a child of warehouse \"%(warehouse)s\"."
 msgstr ""
-"La location \"%(location)s\" doit être une sous-location de l'entrepôt "
-"\"%(warehouse)s\"."
+"L'emplacement « %(location)s » doit être un sous-emplacement de l'entrepôt «"
+" %(warehouse)s »."
 
 msgctxt "error:stock.location:"
 msgid ""
 "Location \"%s\" with existing moves cannot be changed to a type that does "
 "not support moves."
 msgstr ""
-"La location \"%s\" est liée à des mouvements. Son type ne peut être un type "
-"qui ne supporte pas les mouvements."
+"L'emplacement « %s » est liée à des mouvements. Son type ne peut être un "
+"type qui ne supporte pas les mouvements."
 
 msgctxt "error:stock.move:"
 msgid "Internal move quantity must be positive"
@@ -57,63 +57,66 @@ msgstr "Les emplacements d'origine et de destination doivent être distincts"
 
 msgctxt "error:stock.move:"
 msgid "The stock move \"%s\" has no origin."
-msgstr "Le mouvement de stock \"%s\" n'a pas d'origine."
+msgstr "Le mouvement de stock « %s » n'a pas d'origine."
 
 msgctxt "error:stock.move:"
 msgid ""
 "You can not delete stock move \"%s\" because it is not in draft or cancelled"
 " state."
 msgstr ""
-"Vous ne pouvez supprimer le mouvement de stock \"%s\" car il n'est pas dans "
+"Vous ne pouvez supprimer le mouvement de stock « %s » car il n'est pas dans "
 "l'état brouillon ou annulé."
 
 msgctxt "error:stock.move:"
 msgid "You can not modify move \"%(move)s\" because period \"%(period)s\" is closed."
 msgstr ""
-"Vous ne pouvez modifier le mouvement \"%(move)s\" car la période "
-"\"%(period)s\" est fermée."
+"Vous ne pouvez modifier le mouvement « %(move)s » car la période « "
+"%(period)s » est clôturée."
 
 msgctxt "error:stock.move:"
 msgid "You can not modify stock move \"%s\" because it is in \"Assigned\" state."
 msgstr ""
-"Vous ne pouvez pas modifier le mouvement de stock \"%s\" parce qu'il est "
-"dans l'état \"Assigné\"."
+"Vous ne pouvez pas modifier le mouvement de stock « %s » parce qu'il est "
+"dans l'état « Assigné »."
 
 msgctxt "error:stock.move:"
 msgid ""
 "You can not modify stock move \"%s\" because it is in \"Done\" or \"Cancel\""
 " state."
 msgstr ""
-"Vous ne pouvez pas modifier le mouvement de stock \"%s\" parce qu'il est "
-"dans l'état \"Fait\" ou \"Annulé\"."
+"Vous ne pouvez pas modifier le mouvement de stock « %s » parce qu'il est "
+"dans l'état « Fait » ou « Annulé »."
 
 msgctxt "error:stock.move:"
 msgid "You can not set stock move \"%s\" to assigned state."
-msgstr "Vous ne pouvez passer dans l'état assigné le mouvement de stock \"%s\"."
+msgstr ""
+"Vous ne pouvez passer dans l'état assigné le mouvement de stock « %s »."
 
 msgctxt "error:stock.move:"
 msgid "You can not set stock move \"%s\" to done state."
-msgstr "Vous ne pouvez passer dans l'état \"Fait\" le mouvement de stock \"%s\"."
+msgstr ""
+"Vous ne pouvez passer dans l'état « Fait » le mouvement de stock « %s »."
 
 msgctxt "error:stock.move:"
 msgid "You can not set stock move \"%s\" to draft state."
-msgstr "Vous ne pouvez remettre en brouilon le mouvement de stock \"%s\"."
+msgstr "Vous ne pouvez remettre en brouillon le mouvement de stock « %s »."
 
 msgctxt "error:stock.period:"
 msgid "You can not close a period in the future or today."
 msgstr ""
-"Vous ne pouvez fermer une période dans le futur ou à la date d'aujourd'hui."
+"Vous ne pouvez clôturer une période dans le futur ou à la date "
+"d'aujourd'hui."
 
 msgctxt "error:stock.period:"
 msgid "You can not close a period when there still are assigned moves."
 msgstr ""
-"Vous ne pouvez pas fermer une période quand il y a encore des mouvement "
+"Vous ne pouvez pas clôturer une période quand il y a encore des mouvement "
 "assignés."
 
 msgctxt "error:stock.shipment.in.return:"
 msgid "Supplier Return Shipment \"%s\" must be cancelled before deletion."
 msgstr ""
-"Le retour d'expédition fournisseur \"%s\" doit être annulé avant "
+"Le retour d'expédition fournisseur « %s » doit être annulé avant "
 "suppression."
 
 msgctxt "error:stock.shipment.in:"
@@ -121,39 +124,32 @@ msgid ""
 "Incoming Moves must have the warehouse input location as destination "
 "location."
 msgstr ""
-"Les mouvement entrants doivent avoir comme destination la location d'entrée "
-"de l'entrepôt."
+"Les mouvement entrants doivent avoir comme destination l'emplacement "
+"d'entrée de l'entrepôt."
 
 msgctxt "error:stock.shipment.in:"
 msgid ""
 "Inventory Moves must have the warehouse input location as source location."
 msgstr ""
-"Les mouvements d'inventaire doivent avoir la location d'entrée de l'entrepôt"
-" comme source."
+"Les mouvements d'inventaire doivent avoir l'emplacement d'entrée de "
+"l'entrepôt comme source."
 
 msgctxt "error:stock.shipment.in:"
 msgid "Supplier Shipment \"%s\" must be cancelled before deletion."
-msgstr "L'expédition fournisseur \"%s\" doit être annulée avant suppression."
+msgstr "L'expédition fournisseur « %s » doit être annulée avant suppression."
 
 msgctxt "error:stock.shipment.internal:"
 msgid "Internal Shipment \"%s\" must be cancelled before deletion."
-msgstr "L'expédition interne \"%s\" doit être annulée avant suppression."
-
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "The shipment with code \"%s\" is not yet sent."
-msgstr "L'expédition \"%s\" n'est pas encore envoyée."
-
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "You can not create return shipment"
-msgstr "Vous ne pouvez pas créer d'expédition retour"
+msgstr "L'expédition interne « %s » doit être annulée avant suppression."
 
 msgctxt "error:stock.shipment.out.return:"
 msgid "Customer Return Shipment \"%s\" must be cancelled before deletion."
-msgstr "Le retour d'expédition client \"%s\" doit être annulé avant suppression."
+msgstr ""
+"Le retour d'expédition client « %s » doit être annulé avant suppression."
 
 msgctxt "error:stock.shipment.out:"
 msgid "Customer Shipment \"%s\" must be cancelled before deletion."
-msgstr "L'expédition cliente \"%s\" doit être annulées avant suppression."
+msgstr "L'expédition cliente « %s » doit être annulées avant suppression."
 
 msgctxt "field:party.address,delivery:"
 msgid "Delivery"
@@ -1089,6 +1085,10 @@ msgid ""
 "* A date in the past will provide historical values."
 msgstr "Prévoir le calcul du stock prévisionel pour cette date"
 
+msgctxt "model:ir.action,name:"
+msgid "Create Return Shipment"
+msgstr "Créer l'expédition de retour"
+
 msgctxt "model:ir.action,name:act_inventory_form"
 msgid "Inventories"
 msgstr "Inventaires"
@@ -1153,10 +1153,6 @@ msgctxt "model:ir.action,name:act_stock_configuration_form"
 msgid "Stock Configuration"
 msgstr "Configuration des stocks"
 
-msgctxt "model:ir.action,name:create_shipment_out_return"
-msgid "Create Return Shipment"
-msgstr "Créer l'expédition de retour"
-
 msgctxt "model:ir.action,name:report_shipment_in_restocking_list"
 msgid "Restocking List"
 msgstr "Liste de restockage"
@@ -1542,11 +1538,11 @@ msgstr "/"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "Code:"
-msgstr "Code :"
+msgstr "Code :"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "E-Mail:"
-msgstr "E-Mail :"
+msgstr "Email :"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "From Location"
@@ -1554,11 +1550,11 @@ msgstr "Emplacement d'origine"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "Phone:"
-msgstr "Téléphone :"
+msgstr "Téléphone :"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "Planned Date:"
-msgstr "Date planifiée :"
+msgstr "Date planifiée :"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "Product"
@@ -1570,7 +1566,7 @@ msgstr "Quantité"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "Reference:"
-msgstr "Référence :"
+msgstr "Référence :"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "Restocking List"
@@ -1578,7 +1574,7 @@ msgstr "Liste de restockage"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "Supplier:"
-msgstr "Fournisseur :"
+msgstr "Fournisseur :"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "To Location"
@@ -1586,11 +1582,11 @@ msgstr "Emplacement de destination"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "VAT Number:"
-msgstr "Numéro TVA :"
+msgstr "Numéro TVA :"
 
 msgctxt "odt:stock.shipment.in.restocking_list:"
 msgid "Warehouse:"
-msgstr "Entrepôt :"
+msgstr "Entrepôt :"
 
 msgctxt "odt:stock.shipment.internal.report:"
 msgid "/"
@@ -1598,11 +1594,11 @@ msgstr "/"
 
 msgctxt "odt:stock.shipment.internal.report:"
 msgid "Code:"
-msgstr "Code :"
+msgstr "Code :"
 
 msgctxt "odt:stock.shipment.internal.report:"
 msgid "E-Mail:"
-msgstr "E-Mail :"
+msgstr "Email :"
 
 msgctxt "odt:stock.shipment.internal.report:"
 msgid "From Location"
@@ -1610,7 +1606,7 @@ msgstr "Emplacement d'origine"
 
 msgctxt "odt:stock.shipment.internal.report:"
 msgid "From Location:"
-msgstr "Emplacement d'origine :"
+msgstr "Emplacement d'origine :"
 
 msgctxt "odt:stock.shipment.internal.report:"
 msgid "Internal Shipment"
@@ -1618,11 +1614,11 @@ msgstr "Expédition interne"
 
 msgctxt "odt:stock.shipment.internal.report:"
 msgid "Phone:"
-msgstr "Téléphone :"
+msgstr "Téléphone :"
 
 msgctxt "odt:stock.shipment.internal.report:"
 msgid "Planned Date:"
-msgstr "Date planifiée :"
+msgstr "Date planifiée :"
 
 msgctxt "odt:stock.shipment.internal.report:"
 msgid "Product"
@@ -1634,7 +1630,7 @@ msgstr "Quantité"
 
 msgctxt "odt:stock.shipment.internal.report:"
 msgid "Reference:"
-msgstr "Référence :"
+msgstr "Référence :"
 
 msgctxt "odt:stock.shipment.internal.report:"
 msgid "To Location"
@@ -1642,11 +1638,11 @@ msgstr "Emplacement de destination"
 
 msgctxt "odt:stock.shipment.internal.report:"
 msgid "To Location:"
-msgstr "Emplacement de destination :"
+msgstr "Emplacement de destination :"
 
 msgctxt "odt:stock.shipment.internal.report:"
 msgid "VAT Number:"
-msgstr "Numéro TVA :"
+msgstr "Numéro TVA :"
 
 msgctxt "odt:stock.shipment.out.delivery_note:"
 msgid "/"
@@ -1654,11 +1650,11 @@ msgstr "/"
 
 msgctxt "odt:stock.shipment.out.delivery_note:"
 msgid "Customer Code:"
-msgstr "Code client :"
+msgstr "Code client :"
 
 msgctxt "odt:stock.shipment.out.delivery_note:"
 msgid "Date:"
-msgstr "Date :"
+msgstr "Date :"
 
 msgctxt "odt:stock.shipment.out.delivery_note:"
 msgid "Delivery Note"
@@ -1666,11 +1662,11 @@ msgstr "Bon de livraison"
 
 msgctxt "odt:stock.shipment.out.delivery_note:"
 msgid "E-Mail:"
-msgstr "E-Mail :"
+msgstr "Email :"
 
 msgctxt "odt:stock.shipment.out.delivery_note:"
 msgid "Phone:"
-msgstr "Téléphone :"
+msgstr "Téléphone :"
 
 msgctxt "odt:stock.shipment.out.delivery_note:"
 msgid "Product"
@@ -1682,15 +1678,15 @@ msgstr "Quantité"
 
 msgctxt "odt:stock.shipment.out.delivery_note:"
 msgid "Reference:"
-msgstr "Référence :"
+msgstr "Référence :"
 
 msgctxt "odt:stock.shipment.out.delivery_note:"
 msgid "Shipment Number:"
-msgstr "Numéro d'expédition :"
+msgstr "Numéro d'expédition :"
 
 msgctxt "odt:stock.shipment.out.delivery_note:"
 msgid "VAT Number:"
-msgstr "Numéro TVA :"
+msgstr "Numéro TVA :"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "/"
@@ -1698,11 +1694,11 @@ msgstr "/"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "Code:"
-msgstr "Code :"
+msgstr "Code :"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "Customer:"
-msgstr "Client :"
+msgstr "Client :"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "E-Mail:"
@@ -1714,7 +1710,7 @@ msgstr "Emplacement d'origine"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "Phone:"
-msgstr "Téléphone :"
+msgstr "Téléphone :"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "Picking List"
@@ -1722,7 +1718,7 @@ msgstr "Liste de prélèvement"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "Planned Date:"
-msgstr "Date planifiée :"
+msgstr "Date planifiée :"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "Product"
@@ -1734,7 +1730,7 @@ msgstr "Quantité"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "Reference:"
-msgstr "Référence :"
+msgstr "Référence :"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "To Location"
@@ -1742,11 +1738,11 @@ msgstr "Emplacement de destination"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "VAT Number:"
-msgstr "Numéro TVA :"
+msgstr "Numéro TVA :"
 
 msgctxt "odt:stock.shipment.out.picking_list:"
 msgid "Warehouse:"
-msgstr "Entrepôt :"
+msgstr "Entrepôt :"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "/"
@@ -1758,7 +1754,7 @@ msgstr ":"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "Code:"
-msgstr "Code :"
+msgstr "Code :"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "Customer"
@@ -1766,7 +1762,7 @@ msgstr "Client"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "E-Mail:"
-msgstr "E-Mail :"
+msgstr "Email :"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "From Location"
@@ -1774,11 +1770,11 @@ msgstr "Emplacement d'origine"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "Phone:"
-msgstr "Téléphone :"
+msgstr "Téléphone :"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "Planned Date:"
-msgstr "Date planifiée :"
+msgstr "Date planifiée :"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "Product"
@@ -1790,7 +1786,7 @@ msgstr "Quantité"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "Reference:"
-msgstr "Référence :"
+msgstr "Référence :"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "Restocking List"
@@ -1802,11 +1798,11 @@ msgstr "Emplacement de destination"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "VAT Number:"
-msgstr "Numéro TVA :"
+msgstr "Numéro TVA :"
 
 msgctxt "odt:stock.shipment.out.return.restocking_list:"
 msgid "Warehouse:"
-msgstr "Entrepôt :"
+msgstr "Entrepôt :"
 
 msgctxt "selection:stock.inventory,state:"
 msgid "Canceled"
@@ -1866,7 +1862,7 @@ msgstr "Brouillon"
 
 msgctxt "selection:stock.period,state:"
 msgid "Closed"
-msgstr "Fermé"
+msgstr "Clôturée"
 
 msgctxt "selection:stock.period,state:"
 msgid "Draft"
@@ -2026,7 +2022,7 @@ msgstr "Emplacement"
 
 msgctxt "view:stock.location:"
 msgid "Location Quantity"
-msgstr "Quantité de la location"
+msgstr "Quantité de l'emplacement"
 
 msgctxt "view:stock.location:"
 msgid "Locations"
@@ -2050,7 +2046,7 @@ msgstr "Caches des périodes"
 
 msgctxt "view:stock.period:"
 msgid "Close"
-msgstr "Fermer"
+msgstr "Clôturer"
 
 msgctxt "view:stock.period:"
 msgid "Draft"
@@ -2082,7 +2078,7 @@ msgstr "Impossible d'assigner"
 
 msgctxt "view:stock.shipment.in.return.assign.failed:"
 msgid "Unable to assign those products:"
-msgstr "Impossible d'assigner ces produits :"
+msgstr "Impossible d'assigner ces produits :"
 
 msgctxt "view:stock.shipment.in.return:"
 msgid "Assign"
@@ -2150,7 +2146,7 @@ msgstr "Impossible d'assigner"
 
 msgctxt "view:stock.shipment.internal.assign.failed:"
 msgid "Unable to assign those products:"
-msgstr "Impossible d'assigner ces produits :"
+msgstr "Impossible d'assigner ces produits :"
 
 msgctxt "view:stock.shipment.internal:"
 msgid "Assign"
@@ -2186,7 +2182,7 @@ msgstr "Impossible d'assigner"
 
 msgctxt "view:stock.shipment.out.assign.failed:"
 msgid "Unable to assign those products:"
-msgstr "Impossible d'assigner ces produits :"
+msgstr "Impossible d'assigner ces produits :"
 
 msgctxt "view:stock.shipment.out.return:"
 msgid "Cancel"
diff --git a/locale/nl_NL.po b/locale/nl_NL.po
index 344d323..f49f041 100644
--- a/locale/nl_NL.po
+++ b/locale/nl_NL.po
@@ -114,14 +114,6 @@ msgctxt "error:stock.shipment.internal:"
 msgid "Internal Shipment \"%s\" must be cancelled before deletion."
 msgstr ""
 
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "The shipment with code \"%s\" is not yet sent."
-msgstr ""
-
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "You can not create return shipment"
-msgstr ""
-
 msgctxt "error:stock.shipment.out.return:"
 msgid "Customer Return Shipment \"%s\" must be cancelled before deletion."
 msgstr ""
@@ -1147,6 +1139,10 @@ msgid ""
 "* A date in the past will provide historical values."
 msgstr ""
 
+msgctxt "model:ir.action,name:"
+msgid "Create Return Shipment"
+msgstr ""
+
 msgctxt "model:ir.action,name:act_inventory_form"
 msgid "Inventories"
 msgstr ""
@@ -1214,10 +1210,6 @@ msgctxt "model:ir.action,name:act_stock_configuration_form"
 msgid "Stock Configuration"
 msgstr ""
 
-msgctxt "model:ir.action,name:create_shipment_out_return"
-msgid "Create Return Shipment"
-msgstr ""
-
 msgctxt "model:ir.action,name:report_shipment_in_restocking_list"
 msgid "Restocking List"
 msgstr ""
diff --git a/locale/ru_RU.po b/locale/ru_RU.po
index f4e0981..098b37e 100644
--- a/locale/ru_RU.po
+++ b/locale/ru_RU.po
@@ -128,14 +128,6 @@ msgctxt "error:stock.shipment.internal:"
 msgid "Internal Shipment \"%s\" must be cancelled before deletion."
 msgstr "Внутренее перемещение \"%s\" должно быть отменено перед удалением."
 
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "The shipment with code \"%s\" is not yet sent."
-msgstr "Доставка с кодом \"%s\" ещё не отправлена."
-
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "You can not create return shipment"
-msgstr "Вы не можете создать возврат"
-
 msgctxt "error:stock.shipment.out.return:"
 msgid "Customer Return Shipment \"%s\" must be cancelled before deletion."
 msgstr "Возврат от заказчика \"%s\" должен быть отменен перед удалением."
@@ -1082,6 +1074,10 @@ msgstr ""
 "* Пустое значение - бесконечная дата в будущем\n"
 "* Дата в прошлом - бывшие значения"
 
+msgctxt "model:ir.action,name:"
+msgid "Create Return Shipment"
+msgstr "Создать обратную отправку"
+
 msgctxt "model:ir.action,name:act_inventory_form"
 msgid "Inventories"
 msgstr "Инвентаризация"
@@ -1146,10 +1142,6 @@ msgctxt "model:ir.action,name:act_stock_configuration_form"
 msgid "Stock Configuration"
 msgstr "Конфигурация склада"
 
-msgctxt "model:ir.action,name:create_shipment_out_return"
-msgid "Create Return Shipment"
-msgstr "Создать обратную отправку"
-
 msgctxt "model:ir.action,name:report_shipment_in_restocking_list"
 msgid "Restocking List"
 msgstr "Список пополнения"
diff --git a/locale/sl_SI.po b/locale/sl_SI.po
index 890ee6a..740477a 100644
--- a/locale/sl_SI.po
+++ b/locale/sl_SI.po
@@ -129,14 +129,6 @@ msgctxt "error:stock.shipment.internal:"
 msgid "Internal Shipment \"%s\" must be cancelled before deletion."
 msgstr "Notranja odpremnica \"%s\" mora biti pred brisanjem preklicana."
 
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "The shipment with code \"%s\" is not yet sent."
-msgstr "Pošiljka s šifro \"%s\" še ni odposlana."
-
-msgctxt "error:stock.shipment.out.return.create:"
-msgid "You can not create return shipment"
-msgstr "Vrnjene pošiljke ni možno izdelati."
-
 msgctxt "error:stock.shipment.out.return:"
 msgid "Customer Return Shipment \"%s\" must be cancelled before deletion."
 msgstr "Vrnjena odpremnica \"%s\" mora biti pred brisanjem preklicana."
@@ -191,11 +183,11 @@ msgstr "Količina"
 
 msgctxt "field:stock.configuration,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:stock.configuration,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:stock.configuration,id:"
 msgid "ID"
@@ -239,11 +231,11 @@ msgstr "Družba"
 
 msgctxt "field:stock.inventory,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:stock.inventory,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:stock.inventory,date:"
 msgid "Date"
@@ -283,11 +275,11 @@ msgstr "Zapisal"
 
 msgctxt "field:stock.inventory.line,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:stock.inventory.line,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:stock.inventory.line,expected_quantity:"
 msgid "Expected Quantity"
@@ -355,11 +347,11 @@ msgstr "Nabavna vrednost"
 
 msgctxt "field:stock.location,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:stock.location,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:stock.location,forecast_quantity:"
 msgid "Forecast Quantity"
@@ -427,11 +419,11 @@ msgstr "Nabavna cena"
 
 msgctxt "field:stock.move,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:stock.move,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:stock.move,currency:"
 msgid "Currency"
@@ -523,11 +515,11 @@ msgstr "Družba"
 
 msgctxt "field:stock.period,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:stock.period,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:stock.period,date:"
 msgid "Date"
@@ -555,11 +547,11 @@ msgstr "Zapisal"
 
 msgctxt "field:stock.period.cache,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:stock.period.cache,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:stock.period.cache,id:"
 msgid "ID"
@@ -595,11 +587,11 @@ msgstr "Zapisal"
 
 msgctxt "field:stock.product_quantities_warehouse,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:stock.product_quantities_warehouse,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:stock.product_quantities_warehouse,date:"
 msgid "Date"
@@ -655,11 +647,11 @@ msgstr "Kontakt"
 
 msgctxt "field:stock.shipment.in,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:stock.shipment.in,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:stock.shipment.in,effective_date:"
 msgid "Effective Date"
@@ -739,11 +731,11 @@ msgstr "Družba"
 
 msgctxt "field:stock.shipment.in.return,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:stock.shipment.in.return,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:stock.shipment.in.return,effective_date:"
 msgid "Effective Date"
@@ -811,11 +803,11 @@ msgstr "Družba"
 
 msgctxt "field:stock.shipment.internal,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:stock.shipment.internal,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:stock.shipment.internal,effective_date:"
 msgid "Effective Date"
@@ -879,11 +871,11 @@ msgstr "Družba"
 
 msgctxt "field:stock.shipment.out,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:stock.shipment.out,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:stock.shipment.out,customer:"
 msgid "Customer"
@@ -975,11 +967,11 @@ msgstr "Družba"
 
 msgctxt "field:stock.shipment.out.return,create_date:"
 msgid "Create Date"
-msgstr "Ustvarjeno"
+msgstr "Izdelano"
 
 msgctxt "field:stock.shipment.out.return,create_uid:"
 msgid "Create User"
-msgstr "Ustvaril"
+msgstr "Izdelal"
 
 msgctxt "field:stock.shipment.out.return,customer:"
 msgid "Customer"
@@ -1145,10 +1137,6 @@ msgctxt "model:ir.action,name:act_stock_configuration_form"
 msgid "Stock Configuration"
 msgstr "Konfiguracija zaloge"
 
-msgctxt "model:ir.action,name:create_shipment_out_return"
-msgid "Create Return Shipment"
-msgstr "Izdelava vrnjene pošiljke"
-
 msgctxt "model:ir.action,name:report_shipment_in_restocking_list"
 msgid "Restocking List"
 msgstr "Obnova zaloge"
diff --git a/location.py b/location.py
index 4613081..e4df3ba 100644
--- a/location.py
+++ b/location.py
@@ -8,6 +8,7 @@ from trytond import backend
 from trytond.pyson import Not, Bool, Eval, Equal, PYSONEncoder, Date
 from trytond.transaction import Transaction
 from trytond.pool import Pool, PoolMeta
+from trytond.tools import grouped_slice
 
 __all__ = ['Location', 'Party', 'ProductsByLocationsStart',
     'ProductsByLocations']
@@ -187,14 +188,17 @@ class Location(ModelSQL, ModelView):
             if not Transaction().context.get('stock_date_end'):
                 context['stock_date_end'] = datetime.date.max
 
-        location_ids = [l.id for l in locations]
         product_id = Transaction().context['product']
-        with Transaction().set_context(context):
-            pbl = Product.products_by_location(location_ids=location_ids,
-                product_ids=[product_id], with_childs=True)
-
-        return dict((loc, pbl.get((loc, product_id), 0))
-            for loc in location_ids)
+        pbl = {}
+        for sub_locations in grouped_slice(locations):
+            location_ids = [l.id for l in sub_locations]
+            with Transaction().set_context(context):
+                pbl.update(Product.products_by_location(
+                        location_ids=location_ids, product_ids=[product_id],
+                        with_childs=True))
+
+        return dict((loc.id, pbl.get((loc.id, product_id), 0))
+            for loc in locations)
 
     @classmethod
     def get_cost_value(cls, locations, name):
diff --git a/move.py b/move.py
index a86ae91..ee7a483 100644
--- a/move.py
+++ b/move.py
@@ -571,10 +571,9 @@ class Move(Workflow, ModelSQL, ModelView):
         new_cost_price = new_cost_price.quantize(
             Decimal(str(10.0 ** -digits[1])))
 
-        with Transaction().set_user(0, set_context=True):
-            write({
-                    'cost_price': new_cost_price,
-                    })
+        write({
+                'cost_price': new_cost_price,
+                })
 
     @staticmethod
     def _get_internal_quantity(quantity, uom, product):
@@ -616,18 +615,22 @@ class Move(Workflow, ModelSQL, ModelView):
         cls.check_origin(moves)
         for move in moves:
             move.set_effective_date()
-            if (move.from_location.type in ('supplier', 'production')
-                    and move.to_location.type == 'storage'
-                    and move.product.cost_price_method == 'average'):
-                move._update_product_cost_price('in')
-            elif (move.to_location.type == 'supplier'
-                    and move.from_location.type == 'storage'
-                    and move.product.cost_price_method == 'average'):
-                move._update_product_cost_price('out')
-            if not move.cost_price:
-                move.cost_price = move.product.cost_price
+            move._do()
+            move.state = 'done'
             move.save()
 
+    def _do(self):
+        if (self.from_location.type in ('supplier', 'production')
+                and self.to_location.type == 'storage'
+                and self.product.cost_price_method == 'average'):
+            self._update_product_cost_price('in')
+        elif (self.to_location.type == 'supplier'
+                and self.from_location.type == 'storage'
+                and self.product.cost_price_method == 'average'):
+            self._update_product_cost_price('out')
+        if not self.cost_price:
+            self.cost_price = self.product.cost_price
+
     @classmethod
     @ModelView.button
     @Workflow.transition('cancel')
@@ -993,11 +996,10 @@ class Move(Workflow, ModelSQL, ModelView):
                         )
                     )
         elif PeriodCache:
-            with Transaction().set_user(0, set_context=True):
-                periods = Period.search([
-                        ('date', '<', context['stock_date_end']),
-                        ('state', '=', 'closed'),
-                        ], order=[('date', 'DESC')], limit=1)
+            periods = Period.search([
+                    ('date', '<', context['stock_date_end']),
+                    ('state', '=', 'closed'),
+                    ], order=[('date', 'DESC')], limit=1)
             if periods:
                 period, = periods
                 state_date_clause &= (
diff --git a/period.py b/period.py
index fb29f87..e478e65 100644
--- a/period.py
+++ b/period.py
@@ -5,6 +5,7 @@ from trytond.model import Workflow, ModelView, ModelSQL, fields
 from trytond.pyson import Equal, Eval, If, In, Get
 from trytond.transaction import Transaction
 from trytond.pool import Pool
+from trytond.tools import grouped_slice
 
 __all__ = ['Period', 'Cache']
 
@@ -69,14 +70,13 @@ class Period(Workflow, ModelSQL, ModelView):
     @ModelView.button
     @Workflow.transition('draft')
     def draft(cls, periods):
-        in_max = Transaction().cursor.IN_MAX
         for grouping in cls.groupings():
             Cache = cls.get_cache(grouping)
             caches = []
-            for i in xrange(0, len(periods), in_max):
+            for sub_periods in grouped_slice(periods):
                 caches.append(Cache.search([
                             ('period', 'in',
-                                [p.id for p in periods[i:i + in_max]]),
+                                [p.id for p in sub_periods]),
                             ], order=[]))
             Cache.delete(list(chain(*caches)))
 
diff --git a/product.py b/product.py
index dd8352f..f0e8fdf 100644
--- a/product.py
+++ b/product.py
@@ -12,6 +12,7 @@ from trytond.wizard import Wizard, StateView, StateAction, Button
 from trytond.pyson import PYSONEncoder, Eval, Or
 from trytond.transaction import Transaction
 from trytond.pool import Pool, PoolMeta
+from trytond.tools import grouped_slice
 
 from .move import StockMixin
 
@@ -59,11 +60,9 @@ class Template:
     @classmethod
     def check_no_move(cls, templates, error):
         Move = Pool().get('stock.move')
-        cursor = Transaction().cursor
-        for i in range(0, len(templates), cursor.IN_MAX):
-            sub_ids = [t.id for t in templates[i:i + cursor.IN_MAX]]
+        for sub_templates in grouped_slice(templates):
             moves = Move.search([
-                    ('product.template', 'in', sub_ids),
+                    ('product.template', 'in', [t.id for t in sub_templates]),
                     ],
                 limit=1, order=[])
             if moves:
@@ -71,7 +70,8 @@ class Template:
 
     @classmethod
     def write(cls, *args):
-        if Transaction().user != 0:
+        if (Transaction().user != 0
+                and Transaction().context.get('_check_access')):
             actions = iter(args)
             for templates, values in zip(actions, actions):
                 for field, error in cls._modify_no_move:
@@ -299,7 +299,8 @@ class ProductQuantitiesByWarehouse(ModelSQL, ModelView):
 class ProductQuantitiesByWarehouseStart(ModelView):
     'Product Quantities By Warehouse'
     __name__ = 'stock.product_quantities_warehouse.start'
-    warehouse = fields.Many2One('stock.location', 'Warehouse', domain=[
+    warehouse = fields.Many2One('stock.location', 'Warehouse', required=True,
+        domain=[
             ('type', '=', 'warehouse'),
             ])
 
diff --git a/shipment.py b/shipment.py
index 7cf7c33..1b839f2 100644
--- a/shipment.py
+++ b/shipment.py
@@ -10,13 +10,12 @@ from sql.operators import Concat
 
 from trytond.model import Workflow, ModelView, ModelSQL, fields
 from trytond.modules.company import CompanyReport
-from trytond.wizard import Wizard, StateTransition, StateView, StateAction, \
-    Button
+from trytond.wizard import Wizard, StateTransition, StateView, Button
 from trytond import backend
 from trytond.pyson import Eval, Not, Equal, If, Or, And, Bool, In, Get, Id
 from trytond.transaction import Transaction
 from trytond.pool import Pool, PoolMeta
-from trytond.tools import reduce_ids
+from trytond.tools import reduce_ids, grouped_slice
 
 __all__ = ['ShipmentIn', 'ShipmentInReturn',
     'ShipmentOut', 'ShipmentOutReturn',
@@ -25,7 +24,6 @@ __all__ = ['ShipmentIn', 'ShipmentInReturn',
     'Address',
     'AssignShipmentInternalAssignFailed', 'AssignShipmentInternal',
     'AssignShipmentInReturnAssignFailed', 'AssignShipmentInReturn',
-    'CreateShipmentOutReturn',
     'DeliveryNote', 'PickingList',
     'SupplierRestockingList', 'CustomerReturnRestockingList',
     'InteralShipmentReport']
@@ -235,8 +233,7 @@ class ShipmentIn(Workflow, ModelSQL, ModelView):
             for company_id, values in itertools.groupby(cursor.fetchall(),
                     operator.itemgetter(1)):
                 shipment_ids = [x[0] for x in values]
-                for i in range(0, len(shipment_ids), cursor.IN_MAX):
-                    sub_ids = shipment_ids[i:i + cursor.IN_MAX]
+                for sub_ids in grouped_slice(shipment_ids):
                     red_sql = reduce_ids(sql_table.id, sub_ids)
                     cursor.execute(*sql_table.update(
                             columns=[sql_table.company],
@@ -359,14 +356,9 @@ class ShipmentIn(Workflow, ModelSQL, ModelView):
                     'planned_date': inventory_date,
                     })
 
-    @classmethod
-    def get_origins(cls, shipments, name):
-        origins = {}
-        with Transaction().set_user(0, set_context=True):
-            for shipment in cls.browse(shipments):
-                origins[shipment.id] = ', '.join(set(itertools.ifilter(None,
-                            (m.origin_name for m in shipment.moves))))
-        return origins
+    def get_origins(self, name):
+        return ', '.join(set(itertools.ifilter(None,
+                    (m.origin_name for m in self.moves))))
 
     @classmethod
     def create(cls, vlist):
@@ -618,8 +610,7 @@ class ShipmentInReturn(Workflow, ModelSQL, ModelView):
             for company_id, values in itertools.groupby(cursor.fetchall(),
                     operator.itemgetter(1)):
                 shipment_ids = [x[0] for x in values]
-                for i in range(0, len(shipment_ids), cursor.IN_MAX):
-                    sub_ids = shipment_ids[i:i + cursor.IN_MAX]
+                for sub_ids in grouped_slice(shipment_ids):
                     red_sql = reduce_ids(sql_table.id, sub_ids)
                     cursor.execute(*sql_table.update(
                             columns=[sql_table.company],
@@ -659,14 +650,9 @@ class ShipmentInReturn(Workflow, ModelSQL, ModelView):
                     'planned_date': shipment._move_planned_date,
                     })
 
-    @classmethod
-    def get_origins(cls, shipments, name):
-        origins = {}
-        with Transaction().set_user(0, set_context=True):
-            for shipment in cls.browse(shipments):
-                origins[shipment.id] = ', '.join(set(itertools.ifilter(None,
-                            (m.origin_name for m in shipment.moves))))
-        return origins
+    def get_origins(self, name):
+        return ', '.join(set(itertools.ifilter(None,
+                    (m.origin_name for m in self.moves))))
 
     @classmethod
     def create(cls, vlist):
@@ -948,8 +934,7 @@ class ShipmentOut(Workflow, ModelSQL, ModelView):
             for company_id, values in itertools.groupby(cursor.fetchall(),
                     operator.itemgetter(1)):
                 shipment_ids = [x[0] for x in values]
-                for i in range(0, len(shipment_ids), cursor.IN_MAX):
-                    sub_ids = shipment_ids[i:i + cursor.IN_MAX]
+                for sub_ids in grouped_slice(shipment_ids):
                     red_sql = reduce_ids(sql_table.id, sub_ids)
                     cursor.execute(*sql_table.update(
                             columns=[sql_table.company],
@@ -1043,15 +1028,9 @@ class ShipmentOut(Workflow, ModelSQL, ModelView):
                 'moves': value,
                 })
 
-    @classmethod
-    def get_origins(cls, shipments, name):
-        origins = {}
-        with Transaction().set_user(0, set_context=True):
-            for shipment in cls.browse(shipments):
-                origins[shipment.id] = ', '.join(set(itertools.ifilter(None,
-                            (m.origin_name for m in shipment.moves))))
-        return origins
-
+    def get_origins(self, name):
+        return ', '.join(set(itertools.ifilter(None,
+                    (m.origin_name for m in self.moves))))
     @classmethod
     @ModelView.button
     @Workflow.transition('draft')
@@ -1474,8 +1453,7 @@ class ShipmentOutReturn(Workflow, ModelSQL, ModelView):
             for company_id, values in itertools.groupby(cursor.fetchall(),
                     operator.itemgetter(1)):
                 shipment_ids = [x[0] for x in values]
-                for i in range(0, len(shipment_ids), cursor.IN_MAX):
-                    sub_ids = shipment_ids[i:i + cursor.IN_MAX]
+                for sub_ids in grouped_slice(shipment_ids):
                     red_sql = reduce_ids(sql_table.id, sub_ids)
                     cursor.execute(*sql_table.update(
                             columns=[sql_table.company],
@@ -1594,14 +1572,9 @@ class ShipmentOutReturn(Workflow, ModelSQL, ModelView):
                     'planned_date': inventory_date,
                     })
 
-    @classmethod
-    def get_origins(cls, shipments, name):
-        origins = {}
-        with Transaction().set_user(0, set_context=True):
-            for shipment in cls.browse(shipments):
-                origins[shipment.id] = ', '.join(set(itertools.ifilter(None,
-                            (m.origin_name for m in shipment.moves))))
-        return origins
+    def get_origins(self, name):
+        return ', '.join(set(itertools.ifilter(None,
+                    (m.origin_name for m in self.moves))))
 
     @classmethod
     def create(cls, vlist):
@@ -1911,8 +1884,7 @@ class ShipmentInternal(Workflow, ModelSQL, ModelView):
             for company_id, values in itertools.groupby(cursor.fetchall(),
                     operator.itemgetter(1)):
                 shipment_ids = [x[0] for x in values]
-                for i in range(0, len(shipment_ids), cursor.IN_MAX):
-                    sub_ids = shipment_ids[i:i + cursor.IN_MAX]
+                for sub_ids in grouped_slice(shipment_ids):
                     red_sql = reduce_ids(sql_table.id, sub_ids)
                     cursor.execute(*sql_table.update(
                             columns=[sql_table.company],
@@ -2011,8 +1983,9 @@ class ShipmentInternal(Workflow, ModelSQL, ModelView):
     @ModelView.button
     def assign_try(cls, shipments):
         Move = Pool().get('stock.move')
-        if Move.assign_try([m for s in shipments
-                    for m in s.moves]):
+        to_assign = [m for s in shipments for m in s.moves
+            if m.from_location.type != 'lost_found']
+        if not to_assign or Move.assign_try(to_assign):
             cls.assign(shipments)
             return True
         else:
@@ -2127,66 +2100,6 @@ class AssignShipmentInReturn(Wizard):
         return 'end'
 
 
-class CreateShipmentOutReturn(Wizard):
-    'Create Customer Return Shipment'
-    __name__ = 'stock.shipment.out.return.create'
-    start = StateAction('stock.act_shipment_out_return_form')
-
-    @classmethod
-    def __setup__(cls):
-        super(CreateShipmentOutReturn, cls).__setup__()
-        cls._error_messages.update({
-                'shipment_done_title': 'You can not create return shipment',
-                'shipment_done_msg': ('The shipment with code "%s" is not yet '
-                    'sent.'),
-                })
-
-    def do_start(self, action):
-        pool = Pool()
-        ShipmentOut = pool.get('stock.shipment.out')
-        ShipmentOutReturn = pool.get('stock.shipment.out.return')
-
-        shipment_ids = Transaction().context['active_ids']
-        shipment_outs = ShipmentOut.browse(shipment_ids)
-
-        to_create = []
-        for shipment_out in shipment_outs:
-            if shipment_out.state != 'done':
-                self.raise_user_error('shipment_done_title',
-                        error_description='shipment_done_msg',
-                        error_description_args=shipment_out.code)
-
-            incoming_moves = []
-            moves_to_create = []
-            for move in shipment_out.outgoing_moves:
-                moves_to_create.append({
-                        'product': move.product.id,
-                        'quantity': move.quantity,
-                        'uom': move.uom.id,
-                        'from_location': move.to_location.id,
-                        'to_location': (
-                            shipment_out.warehouse.input_location.id),
-                        'company': move.company.id,
-                        })
-            if moves_to_create:
-                incoming_moves.append(('create', moves_to_create))
-            to_create.append({
-                    'customer': shipment_out.customer.id,
-                    'delivery_address': shipment_out.delivery_address.id,
-                    'warehouse': shipment_out.warehouse.id,
-                    'incoming_moves': incoming_moves,
-                    })
-        shipment_out_returns = ShipmentOutReturn.create(to_create)
-
-        data = {'res_id': [x.id for x in shipment_out_returns]}
-        if len(shipment_out_returns) == 1:
-            action['views'].reverse()
-        return action, data
-
-    def transition_start(self):
-        return 'end'
-
-
 class DeliveryNote(CompanyReport):
     'Delivery Note'
     __name__ = 'stock.shipment.out.delivery_note'
diff --git a/shipment.xml b/shipment.xml
index b3be7a9..b2268c1 100644
--- a/shipment.xml
+++ b/shipment.xml
@@ -140,17 +140,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">shipment_out_tree</field>
         </record>
 
-        <record model="ir.action.wizard" id="create_shipment_out_return">
-            <field name="name">Create Return Shipment</field>
-            <field name="wiz_name">stock.shipment.out.return.create</field>
-            <field name="model">stock.shipment.out</field>
-        </record>
-        <record model="ir.action.keyword" id="create_shipment_out_return_keyword">
-            <field name="keyword">form_action</field>
-            <field name="model">stock.shipment.out,-1</field>
-            <field name="action" ref="create_shipment_out_return"/>
-        </record>
-
         <record model="ir.action.act_window" id="act_shipment_out_form">
             <field name="name">Customer Shipments</field>
             <field name="res_model">stock.shipment.out</field>
diff --git a/tests/scenario_stock_average_cost_price.rst b/tests/scenario_stock_average_cost_price.rst
index 3423ecb..27eb5ed 100644
--- a/tests/scenario_stock_average_cost_price.rst
+++ b/tests/scenario_stock_average_cost_price.rst
@@ -125,3 +125,42 @@ Check Cost Price Average is 150::
     >>> product.reload()
     >>> product.template.cost_price
     Decimal('150.0000')
+
+Add twice 1 more unit @ 200::
+
+    >>> incoming_moves = []
+    >>> incoming_move = StockMove()
+    >>> incoming_move.product = product
+    >>> incoming_move.uom = unit
+    >>> incoming_move.quantity = 1
+    >>> incoming_move.from_location = supplier_loc
+    >>> incoming_move.to_location = storage_loc
+    >>> incoming_move.planned_date = today
+    >>> incoming_move.effective_date = today
+    >>> incoming_move.company = company
+    >>> incoming_move.unit_price = Decimal('200')
+    >>> incoming_move.currency = currency
+    >>> incoming_move.save()
+    >>> incoming_moves.append(incoming_move)
+
+    >>> incoming_move = StockMove()
+    >>> incoming_move.product = product
+    >>> incoming_move.uom = unit
+    >>> incoming_move.quantity = 1
+    >>> incoming_move.from_location = supplier_loc
+    >>> incoming_move.to_location = storage_loc
+    >>> incoming_move.planned_date = today
+    >>> incoming_move.effective_date = today
+    >>> incoming_move.company = company
+    >>> incoming_move.unit_price = Decimal('200')
+    >>> incoming_move.currency = currency
+    >>> incoming_move.save()
+    >>> incoming_moves.append(incoming_move)
+
+    >>> StockMove.do([m.id for m in incoming_moves], config.context)
+
+Check Cost Price Average is 125::
+
+    >>> product.reload()
+    >>> product.template.cost_price
+    Decimal('175.0000')
diff --git a/tests/scenario_stock_inventory.rst b/tests/scenario_stock_inventory.rst
index 149842c..d0ff250 100644
--- a/tests/scenario_stock_inventory.rst
+++ b/tests/scenario_stock_inventory.rst
@@ -62,6 +62,7 @@ Get stock locations::
     >>> Location = Model.get('stock.location')
     >>> supplier_loc, = Location.find([('code', '=', 'SUP')])
     >>> storage_loc, = Location.find([('code', '=', 'STO')])
+    >>> customer_loc, = Location.find([('code', '=', 'CUS')])
 
 Create product::
 
@@ -119,3 +120,28 @@ Create an inventory::
     True
     >>> move.to_location == inventory.location
     True
+
+Empty storage::
+
+    >>> StockMove = Model.get('stock.move')
+    >>> outgoing_move = StockMove()
+    >>> outgoing_move.product = product
+    >>> outgoing_move.uom = unit
+    >>> outgoing_move.quantity = 2
+    >>> outgoing_move.from_location = storage_loc
+    >>> outgoing_move.to_location = customer_loc
+    >>> outgoing_move.planned_date = today
+    >>> outgoing_move.effective_date = today
+    >>> outgoing_move.company = company
+    >>> outgoing_move.unit_price = Decimal('100')
+    >>> outgoing_move.currency = currency
+    >>> outgoing_move.click('do')
+
+Create an inventory that should be empty after completion::
+
+    >>> Inventory = Model.get('stock.inventory')
+    >>> inventory = Inventory()
+    >>> inventory.location = storage_loc
+    >>> inventory.click('complete_lines')
+    >>> len(inventory.lines)
+    0
diff --git a/tests/scenario_stock_shipment_internal.rst b/tests/scenario_stock_shipment_internal.rst
new file mode 100644
index 0000000..5a76307
--- /dev/null
+++ b/tests/scenario_stock_shipment_internal.rst
@@ -0,0 +1,148 @@
+================================
+Stock Shipment Internal Scenario
+================================
+
+=============
+General Setup
+=============
+
+Imports::
+
+    >>> import datetime
+    >>> from dateutil.relativedelta import relativedelta
+    >>> from decimal import Decimal
+    >>> from proteus import config, Model, Wizard
+    >>> today = datetime.date.today()
+    >>> yesterday = today - relativedelta(days=1)
+
+Create database::
+
+    >>> config = config.set_trytond()
+    >>> config.pool.test = True
+
+Install stock Module::
+
+    >>> Module = Model.get('ir.module.module')
+    >>> modules = Module.find([('name', '=', 'stock')])
+    >>> Module.install([x.id for x in modules], config.context)
+    >>> Wizard('ir.module.module.install_upgrade').execute('upgrade')
+
+Create company::
+
+    >>> Currency = Model.get('currency.currency')
+    >>> CurrencyRate = Model.get('currency.currency.rate')
+    >>> Company = Model.get('company.company')
+    >>> Party = Model.get('party.party')
+    >>> company_config = Wizard('company.company.config')
+    >>> company_config.execute('company')
+    >>> company = company_config.form
+    >>> party = Party(name='Dunder Mifflin')
+    >>> party.save()
+    >>> company.party = party
+    >>> currencies = Currency.find([('code', '=', 'USD')])
+    >>> if not currencies:
+    ...     currency = Currency(name='U.S. Dollar', symbol='$', code='USD',
+    ...         rounding=Decimal('0.01'), mon_grouping='[3, 3, 0]',
+    ...         mon_decimal_point='.', mon_thousands_sep=',')
+    ...     currency.save()
+    ...     CurrencyRate(date=today + relativedelta(month=1, day=1),
+    ...         rate=Decimal('1.0'), currency=currency).save()
+    ... else:
+    ...     currency, = currencies
+    >>> company.currency = currency
+    >>> company_config.execute('add')
+    >>> company, = Company.find()
+
+Reload the context::
+
+    >>> User = Model.get('res.user')
+    >>> Group = Model.get('res.group')
+    >>> config._context = User.get_preferences(True, config.context)
+
+Create product::
+
+    >>> ProductUom = Model.get('product.uom')
+    >>> ProductTemplate = Model.get('product.template')
+    >>> Product = Model.get('product.product')
+    >>> unit, = ProductUom.find([('name', '=', 'Unit')])
+    >>> product = Product()
+    >>> template = ProductTemplate()
+    >>> template.name = 'Product'
+    >>> template.default_uom = unit
+    >>> template.type = 'goods'
+    >>> template.list_price = Decimal('20')
+    >>> template.cost_price = Decimal('8')
+    >>> template.save()
+    >>> product.template = template
+    >>> product.save()
+
+Get stock locations::
+
+    >>> Location = Model.get('stock.location')
+    >>> lost_found_loc, = Location.find([('type', '=', 'lost_found')])
+    >>> storage_loc, = Location.find([('code', '=', 'STO')])
+    >>> internal_loc = Location(name='Internal', type='storage')
+    >>> internal_loc.save()
+
+Create stock user::
+
+    >>> stock_user = User()
+    >>> stock_user.name = 'Stock'
+    >>> stock_user.login = 'stock'
+    >>> stock_user.main_company = company
+    >>> stock_group, = Group.find([('name', '=', 'Stock')])
+    >>> stock_user.groups.append(stock_group)
+    >>> stock_user.save()
+
+Create Internal Shipment::
+
+    >>> config.user = stock_user.id
+    >>> Shipment = Model.get('stock.shipment.internal')
+    >>> StockMove = Model.get('stock.move')
+    >>> shipment = Shipment()
+    >>> shipment.planned_date = today
+    >>> shipment.from_location = internal_loc
+    >>> shipment.to_location = storage_loc
+    >>> move = shipment.moves.new()
+    >>> move.product = product
+    >>> move.quantity = 1
+    >>> move.from_location = internal_loc
+    >>> move.to_location = storage_loc
+    >>> move.currency = currency
+    >>> shipment.click('wait')
+    >>> shipment.state
+    u'waiting'
+    >>> shipment.click('assign_try')
+    False
+
+Create Internal Shipment from lost_found location::
+
+    >>> lost_found_shipment = Shipment()
+    >>> lost_found_shipment.planned_date = today
+    >>> lost_found_shipment.company = company
+    >>> lost_found_shipment.from_location = lost_found_loc
+    >>> lost_found_shipment.to_location = internal_loc
+    >>> move = StockMove()
+    >>> move = lost_found_shipment.moves.new()
+    >>> move.product = product
+    >>> move.oum = unit
+    >>> move.quantity = 1
+    >>> move.from_location = lost_found_loc
+    >>> move.to_location = internal_loc
+    >>> move.currency = currency
+    >>> lost_found_shipment.click('wait')
+    >>> lost_found_shipment.click('assign_try')
+    True
+    >>> lost_found_shipment.state
+    u'assigned'
+    >>> lost_found_shipment.click('done')
+    >>> lost_found_shipment.state
+    u'done'
+
+Check that now whe can finish the older shipment::
+
+    >>> shipment.click('assign_try')
+    True
+    >>> shipment.click('done')
+    >>> shipment.state
+    u'done'
diff --git a/tests/test_stock.py b/tests/test_stock.py
index 4f260a9..950b128 100644
--- a/tests/test_stock.py
+++ b/tests/test_stock.py
@@ -8,7 +8,8 @@ from dateutil.relativedelta import relativedelta
 from functools import partial
 import trytond.tests.test_tryton
 from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, test_view,\
-    test_depends, doctest_dropdb
+    test_depends
+from trytond.tests.test_tryton import doctest_setup, doctest_teardown
 from trytond.transaction import Transaction
 from trytond.exceptions import UserWarning
 
@@ -668,14 +669,17 @@ def suite():
             suite.addTest(test)
     suite.addTests(unittest.TestLoader().loadTestsFromTestCase(StockTestCase))
     suite.addTests(doctest.DocFileSuite('scenario_stock_shipment_out.rst',
-            setUp=doctest_dropdb, tearDown=doctest_dropdb, encoding='utf-8',
+            setUp=doctest_setup, tearDown=doctest_teardown, encoding='utf-8',
             optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
     suite.addTests(doctest.DocFileSuite(
             'scenario_stock_average_cost_price.rst',
-            setUp=doctest_dropdb, tearDown=doctest_dropdb, encoding='utf-8',
+            setUp=doctest_setup, tearDown=doctest_teardown, encoding='utf-8',
             optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
     suite.addTests(doctest.DocFileSuite(
             'scenario_stock_inventory.rst',
-            setUp=doctest_dropdb, tearDown=doctest_dropdb, encoding='utf-8',
+            setUp=doctest_setup, tearDown=doctest_teardown, encoding='utf-8',
+            optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
+    suite.addTests(doctest.DocFileSuite('scenario_stock_shipment_internal.rst',
+            setUp=doctest_setup, tearDown=doctest_teardown, encoding='utf-8',
             optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
     return suite
diff --git a/tryton.cfg b/tryton.cfg
index 2134be0..031f30a 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
 [tryton]
-version=3.2.3
+version=3.4.0
 depends:
     company
     currency
diff --git a/trytond_stock.egg-info/PKG-INFO b/trytond_stock.egg-info/PKG-INFO
index 10db825..b384c4d 100644
--- a/trytond_stock.egg-info/PKG-INFO
+++ b/trytond_stock.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond-stock
-Version: 3.2.3
+Version: 3.4.0
 Summary: Tryton module for stock and inventory
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: issue_tracker at tryton.org
 License: GPL-3
-Download-URL: http://downloads.tryton.org/3.2/
+Download-URL: http://downloads.tryton.org/3.4/
 Description: trytond_stock
         =============
         
diff --git a/trytond_stock.egg-info/SOURCES.txt b/trytond_stock.egg-info/SOURCES.txt
index b59837c..beae5d2 100644
--- a/trytond_stock.egg-info/SOURCES.txt
+++ b/trytond_stock.egg-info/SOURCES.txt
@@ -4,6 +4,7 @@ INSTALL
 LICENSE
 MANIFEST.in
 README
+TODO
 configuration.xml
 customer_return_restocking_list.odt
 delivery_note.odt
@@ -50,6 +51,7 @@ tryton.cfg
 ./locale/de_DE.po
 ./locale/es_AR.po
 ./locale/es_CO.po
+./locale/es_EC.po
 ./locale/es_ES.po
 ./locale/fr_FR.po
 ./locale/nl_NL.po
@@ -58,6 +60,7 @@ tryton.cfg
 ./tests/__init__.py
 ./tests/scenario_stock_average_cost_price.rst
 ./tests/scenario_stock_inventory.rst
+./tests/scenario_stock_shipment_internal.rst
 ./tests/scenario_stock_shipment_out.rst
 ./tests/test_stock.py
 ./view/configuration_form.xml
@@ -106,6 +109,7 @@ locale/cs_CZ.po
 locale/de_DE.po
 locale/es_AR.po
 locale/es_CO.po
+locale/es_EC.po
 locale/es_ES.po
 locale/fr_FR.po
 locale/nl_NL.po
@@ -113,6 +117,7 @@ locale/ru_RU.po
 locale/sl_SI.po
 tests/scenario_stock_average_cost_price.rst
 tests/scenario_stock_inventory.rst
+tests/scenario_stock_shipment_internal.rst
 tests/scenario_stock_shipment_out.rst
 trytond_stock.egg-info/PKG-INFO
 trytond_stock.egg-info/SOURCES.txt
diff --git a/trytond_stock.egg-info/requires.txt b/trytond_stock.egg-info/requires.txt
index 191e6a7..a8d32a8 100644
--- a/trytond_stock.egg-info/requires.txt
+++ b/trytond_stock.egg-info/requires.txt
@@ -1,6 +1,6 @@
 python-sql
-trytond_company >= 3.2, < 3.3
-trytond_currency >= 3.2, < 3.3
-trytond_party >= 3.2, < 3.3
-trytond_product >= 3.2, < 3.3
-trytond >= 3.2, < 3.3
\ No newline at end of file
+trytond_company >= 3.4, < 3.5
+trytond_currency >= 3.4, < 3.5
+trytond_party >= 3.4, < 3.5
+trytond_product >= 3.4, < 3.5
+trytond >= 3.4, < 3.5
\ No newline at end of file
-- 
tryton-modules-stock



More information about the tryton-debian-vcs mailing list