[tryton-debian-vcs] tryton-modules-stock-lot branch upstream created. f7b6c9e6f23b886fc1c4a461c998f60469920359
Mathias Behrle
tryton-debian-vcs at alioth.debian.org
Wed Nov 27 17:11:15 UTC 2013
The following commit has been merged in the upstream branch:
https://alioth.debian.org/plugins/scmgit/cgi-bin/gitweb.cgi/?p=tryton/tryton-modules-stock-lot.git;a=commitdiff;h=f7b6c9e6f23b886fc1c4a461c998f60469920359
commit f7b6c9e6f23b886fc1c4a461c998f60469920359
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Sun Nov 24 17:28:26 2013 +0100
Adding upstream version 3.0.0.
diff --git a/CHANGELOG b/CHANGELOG
index 3ac4e21..8b6585f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,9 @@
+Version 3.0.0 - 2013-10-21
+* Bug fixes (see mercurial logs for details)
+* Add quantity and forecast_quantity fields on Lot
+* Add lot in inventory
+* Add Period Cache per lot
+
Version 2.8.0 - 2013-04-22
* Bug fixes (see mercurial logs for details)
diff --git a/PKG-INFO b/PKG-INFO
index aa102f8..0e80546 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.1
Name: trytond_stock_lot
-Version: 2.8.0
+Version: 3.0.0
Summary: Tryton module for lot of products
Home-page: http://www.tryton.org/
Author: Tryton
Author-email: UNKNOWN
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.8/
+Download-URL: http://downloads.tryton.org/3.0/
Description: trytond_stock_lot
=================
@@ -60,6 +60,7 @@ Classifier: Natural Language :: English
Classifier: Natural Language :: French
Classifier: Natural Language :: German
Classifier: Natural Language :: Russian
+Classifier: Natural Language :: Slovenian
Classifier: Natural Language :: Spanish
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 2.6
diff --git a/__init__.py b/__init__.py
index a41bf3c..e9898f7 100644
--- a/__init__.py
+++ b/__init__.py
@@ -14,6 +14,10 @@ def register():
ShipmentIn,
ShipmentOut,
ShipmentOutReturn,
+ Period,
+ PeriodCacheLot,
+ Inventory,
+ InventoryLine,
Template,
Product,
TemplateLotType,
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
index 75605bb..da3662a 100644
--- a/locale/bg_BG.po
+++ b/locale/bg_BG.po
@@ -42,6 +42,11 @@ msgctxt "field:product.template-stock.lot.type,write_uid:"
msgid "Write User"
msgstr "Записано от"
+#, fuzzy
+msgctxt "field:stock.inventory.line,lot:"
+msgid "Lot"
+msgstr "Партида"
+
msgctxt "field:stock.lot,create_date:"
msgid "Create Date"
msgstr "Създадено на"
@@ -50,6 +55,11 @@ msgctxt "field:stock.lot,create_uid:"
msgid "Create User"
msgstr "Създадено от"
+#, fuzzy
+msgctxt "field:stock.lot,forecast_quantity:"
+msgid "Forecast Quantity"
+msgstr "Планирано количество"
+
msgctxt "field:stock.lot,id:"
msgid "ID"
msgstr "ID"
@@ -62,6 +72,11 @@ msgctxt "field:stock.lot,product:"
msgid "Product"
msgstr "Продукт"
+#, fuzzy
+msgctxt "field:stock.lot,quantity:"
+msgid "Quantity"
+msgstr "Количество"
+
msgctxt "field:stock.lot,rec_name:"
msgid "Name"
msgstr "Име"
@@ -110,6 +125,65 @@ msgctxt "field:stock.move,lot:"
msgid "Lot"
msgstr "Партида"
+msgctxt "field:stock.period,lot_caches:"
+msgid "Lot Caches"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,create_date:"
+msgid "Create Date"
+msgstr "Създадено на"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,create_uid:"
+msgid "Create User"
+msgstr "Създадено от"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,internal_quantity:"
+msgid "Internal Quantity"
+msgstr "Вътрешно количество"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,location:"
+msgid "Location"
+msgstr "Местоположение"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,lot:"
+msgid "Lot"
+msgstr "Партида"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,period:"
+msgid "Period"
+msgstr "Период"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,product:"
+msgid "Product"
+msgstr "Продукт"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,rec_name:"
+msgid "Name"
+msgstr "Име на прикачен файл"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,write_date:"
+msgid "Write Date"
+msgstr "Променено на"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,write_uid:"
+msgid "Write User"
+msgstr "Променено от"
+
msgctxt "help:product.template,lot_required:"
msgid "The type of location for which lot is required"
msgstr "Вида местонахождение за което е необходима партидата"
@@ -154,6 +228,10 @@ msgctxt "model:stock.lot.type,name:type_supplier"
msgid "Supplier"
msgstr "Доставчик"
+msgctxt "model:stock.period.cache.lot,name:"
+msgid "Stock Period Cache per Lot"
+msgstr ""
+
msgctxt "view:product.product:"
msgid "Lots"
msgstr "Партиди"
@@ -170,3 +248,11 @@ msgstr "Партида"
msgctxt "view:stock.lot:"
msgid "Lots"
msgstr "Партиди"
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Cache"
+msgstr ""
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Caches"
+msgstr ""
diff --git a/locale/ca_ES.po b/locale/ca_ES.po
index 65b0bda..538154a 100644
--- a/locale/ca_ES.po
+++ b/locale/ca_ES.po
@@ -42,6 +42,10 @@ msgctxt "field:product.template-stock.lot.type,write_uid:"
msgid "Write User"
msgstr "Usuari modificació"
+msgctxt "field:stock.inventory.line,lot:"
+msgid "Lot"
+msgstr "Lot"
+
msgctxt "field:stock.lot,create_date:"
msgid "Create Date"
msgstr "Data creació"
@@ -50,6 +54,10 @@ msgctxt "field:stock.lot,create_uid:"
msgid "Create User"
msgstr "Usuari creació"
+msgctxt "field:stock.lot,forecast_quantity:"
+msgid "Forecast Quantity"
+msgstr "Quantitat prevista"
+
msgctxt "field:stock.lot,id:"
msgid "ID"
msgstr "ID"
@@ -62,6 +70,10 @@ msgctxt "field:stock.lot,product:"
msgid "Product"
msgstr "Productes"
+msgctxt "field:stock.lot,quantity:"
+msgid "Quantity"
+msgstr "Quantitat"
+
msgctxt "field:stock.lot,rec_name:"
msgid "Name"
msgstr "Nom"
@@ -110,6 +122,54 @@ msgctxt "field:stock.move,lot:"
msgid "Lot"
msgstr "Lot"
+msgctxt "field:stock.period,lot_caches:"
+msgid "Lot Caches"
+msgstr "Precàlculs de lot"
+
+msgctxt "field:stock.period.cache.lot,create_date:"
+msgid "Create Date"
+msgstr "Data creació"
+
+msgctxt "field:stock.period.cache.lot,create_uid:"
+msgid "Create User"
+msgstr "Usuari creació"
+
+msgctxt "field:stock.period.cache.lot,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:stock.period.cache.lot,internal_quantity:"
+msgid "Internal Quantity"
+msgstr "Quantitat interna"
+
+msgctxt "field:stock.period.cache.lot,location:"
+msgid "Location"
+msgstr "Ubicació"
+
+msgctxt "field:stock.period.cache.lot,lot:"
+msgid "Lot"
+msgstr "Lot"
+
+msgctxt "field:stock.period.cache.lot,period:"
+msgid "Period"
+msgstr "Període"
+
+msgctxt "field:stock.period.cache.lot,product:"
+msgid "Product"
+msgstr "Productes"
+
+msgctxt "field:stock.period.cache.lot,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:stock.period.cache.lot,write_date:"
+msgid "Write Date"
+msgstr "Data modificació"
+
+msgctxt "field:stock.period.cache.lot,write_uid:"
+msgid "Write User"
+msgstr "Usuari modificació"
+
msgctxt "help:product.template,lot_required:"
msgid "The type of location for which lot is required"
msgstr "Tipus d'ubicació per la qual el lot és obligatori"
@@ -154,6 +214,10 @@ msgctxt "model:stock.lot.type,name:type_supplier"
msgid "Supplier"
msgstr "Proveïdor"
+msgctxt "model:stock.period.cache.lot,name:"
+msgid "Stock Period Cache per Lot"
+msgstr "Període d'estoc precalculat per lot"
+
msgctxt "view:product.product:"
msgid "Lots"
msgstr "Lots"
@@ -169,3 +233,11 @@ msgstr "Lot"
msgctxt "view:stock.lot:"
msgid "Lots"
msgstr "Lots"
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Cache"
+msgstr "Període d'estoc precalculat "
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Caches"
+msgstr "Períodes d'estoc precalculat "
diff --git a/locale/cs_CZ.po b/locale/cs_CZ.po
index 837c670..1214beb 100644
--- a/locale/cs_CZ.po
+++ b/locale/cs_CZ.po
@@ -42,6 +42,11 @@ msgctxt "field:product.template-stock.lot.type,write_uid:"
msgid "Write User"
msgstr ""
+#, fuzzy
+msgctxt "field:stock.inventory.line,lot:"
+msgid "Lot"
+msgstr "Lot"
+
msgctxt "field:stock.lot,create_date:"
msgid "Create Date"
msgstr ""
@@ -50,6 +55,10 @@ msgctxt "field:stock.lot,create_uid:"
msgid "Create User"
msgstr ""
+msgctxt "field:stock.lot,forecast_quantity:"
+msgid "Forecast Quantity"
+msgstr ""
+
msgctxt "field:stock.lot,id:"
msgid "ID"
msgstr ""
@@ -62,6 +71,10 @@ msgctxt "field:stock.lot,product:"
msgid "Product"
msgstr ""
+msgctxt "field:stock.lot,quantity:"
+msgid "Quantity"
+msgstr ""
+
msgctxt "field:stock.lot,rec_name:"
msgid "Name"
msgstr ""
@@ -111,6 +124,55 @@ msgctxt "field:stock.move,lot:"
msgid "Lot"
msgstr "Lot"
+msgctxt "field:stock.period,lot_caches:"
+msgid "Lot Caches"
+msgstr ""
+
+msgctxt "field:stock.period.cache.lot,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:stock.period.cache.lot,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:stock.period.cache.lot,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:stock.period.cache.lot,internal_quantity:"
+msgid "Internal Quantity"
+msgstr ""
+
+msgctxt "field:stock.period.cache.lot,location:"
+msgid "Location"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,lot:"
+msgid "Lot"
+msgstr "Lot"
+
+msgctxt "field:stock.period.cache.lot,period:"
+msgid "Period"
+msgstr ""
+
+msgctxt "field:stock.period.cache.lot,product:"
+msgid "Product"
+msgstr ""
+
+msgctxt "field:stock.period.cache.lot,rec_name:"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:stock.period.cache.lot,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:stock.period.cache.lot,write_uid:"
+msgid "Write User"
+msgstr ""
+
msgctxt "help:product.template,lot_required:"
msgid "The type of location for which lot is required"
msgstr ""
@@ -155,6 +217,10 @@ msgctxt "model:stock.lot.type,name:type_supplier"
msgid "Supplier"
msgstr ""
+msgctxt "model:stock.period.cache.lot,name:"
+msgid "Stock Period Cache per Lot"
+msgstr ""
+
msgctxt "view:product.product:"
msgid "Lots"
msgstr ""
@@ -171,3 +237,11 @@ msgstr "Lot"
msgctxt "view:stock.lot:"
msgid "Lots"
msgstr ""
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Cache"
+msgstr ""
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Caches"
+msgstr ""
diff --git a/locale/de_DE.po b/locale/de_DE.po
index 291ccb7..e3593a9 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -42,6 +42,10 @@ msgctxt "field:product.template-stock.lot.type,write_uid:"
msgid "Write User"
msgstr "Letzte Änderung durch"
+msgctxt "field:stock.inventory.line,lot:"
+msgid "Lot"
+msgstr "Charge"
+
msgctxt "field:stock.lot,create_date:"
msgid "Create Date"
msgstr "Erstellungsdatum"
@@ -50,6 +54,10 @@ msgctxt "field:stock.lot,create_uid:"
msgid "Create User"
msgstr "Erstellt durch"
+msgctxt "field:stock.lot,forecast_quantity:"
+msgid "Forecast Quantity"
+msgstr "Voraussichtliche Anzahl"
+
msgctxt "field:stock.lot,id:"
msgid "ID"
msgstr "ID"
@@ -62,6 +70,10 @@ msgctxt "field:stock.lot,product:"
msgid "Product"
msgstr "Artikel"
+msgctxt "field:stock.lot,quantity:"
+msgid "Quantity"
+msgstr "Anzahl"
+
msgctxt "field:stock.lot,rec_name:"
msgid "Name"
msgstr "Name"
@@ -110,6 +122,54 @@ msgctxt "field:stock.move,lot:"
msgid "Lot"
msgstr "Charge"
+msgctxt "field:stock.period,lot_caches:"
+msgid "Lot Caches"
+msgstr "Caches Charge"
+
+msgctxt "field:stock.period.cache.lot,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:stock.period.cache.lot,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:stock.period.cache.lot,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:stock.period.cache.lot,internal_quantity:"
+msgid "Internal Quantity"
+msgstr "Interne Anzahl"
+
+msgctxt "field:stock.period.cache.lot,location:"
+msgid "Location"
+msgstr "Ort"
+
+msgctxt "field:stock.period.cache.lot,lot:"
+msgid "Lot"
+msgstr "Charge"
+
+msgctxt "field:stock.period.cache.lot,period:"
+msgid "Period"
+msgstr "Periode"
+
+msgctxt "field:stock.period.cache.lot,product:"
+msgid "Product"
+msgstr "Artikel"
+
+msgctxt "field:stock.period.cache.lot,rec_name:"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:stock.period.cache.lot,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:stock.period.cache.lot,write_uid:"
+msgid "Write User"
+msgstr "Letzte Änderung durch"
+
msgctxt "help:product.template,lot_required:"
msgid "The type of location for which lot is required"
msgstr "Typ des Lagerorts, für den eine Chargen-Nummer erforderlich ist"
@@ -154,6 +214,10 @@ msgctxt "model:stock.lot.type,name:type_supplier"
msgid "Supplier"
msgstr "Lieferant"
+msgctxt "model:stock.period.cache.lot,name:"
+msgid "Stock Period Cache per Lot"
+msgstr "Lager Cache Periode pro Charge"
+
msgctxt "view:product.product:"
msgid "Lots"
msgstr "Chargen"
@@ -169,3 +233,11 @@ msgstr "Charge"
msgctxt "view:stock.lot:"
msgid "Lots"
msgstr "Chargen"
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Cache"
+msgstr "Cache Periode Charge"
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Caches"
+msgstr "Caches Perioden Chargen"
diff --git a/locale/es_AR.po b/locale/es_AR.po
index 36350f3..d1f4bb8 100644
--- a/locale/es_AR.po
+++ b/locale/es_AR.po
@@ -42,6 +42,10 @@ msgctxt "field:product.template-stock.lot.type,write_uid:"
msgid "Write User"
msgstr "Usuario modificación"
+msgctxt "field:stock.inventory.line,lot:"
+msgid "Lot"
+msgstr "Lote"
+
msgctxt "field:stock.lot,create_date:"
msgid "Create Date"
msgstr "Fecha creación"
@@ -50,6 +54,10 @@ msgctxt "field:stock.lot,create_uid:"
msgid "Create User"
msgstr "Usuario creación"
+msgctxt "field:stock.lot,forecast_quantity:"
+msgid "Forecast Quantity"
+msgstr "Cantidad prevista"
+
msgctxt "field:stock.lot,id:"
msgid "ID"
msgstr "ID"
@@ -62,6 +70,10 @@ msgctxt "field:stock.lot,product:"
msgid "Product"
msgstr "Producto"
+msgctxt "field:stock.lot,quantity:"
+msgid "Quantity"
+msgstr "Cantidad"
+
msgctxt "field:stock.lot,rec_name:"
msgid "Name"
msgstr "Nombre"
@@ -110,6 +122,54 @@ msgctxt "field:stock.move,lot:"
msgid "Lot"
msgstr "Lote"
+msgctxt "field:stock.period,lot_caches:"
+msgid "Lot Caches"
+msgstr "Lote precalculado"
+
+msgctxt "field:stock.period.cache.lot,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:stock.period.cache.lot,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:stock.period.cache.lot,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:stock.period.cache.lot,internal_quantity:"
+msgid "Internal Quantity"
+msgstr "Cantidad interna"
+
+msgctxt "field:stock.period.cache.lot,location:"
+msgid "Location"
+msgstr "Ubicación"
+
+msgctxt "field:stock.period.cache.lot,lot:"
+msgid "Lot"
+msgstr "Lote"
+
+msgctxt "field:stock.period.cache.lot,period:"
+msgid "Period"
+msgstr "Período"
+
+msgctxt "field:stock.period.cache.lot,product:"
+msgid "Product"
+msgstr "Productos"
+
+msgctxt "field:stock.period.cache.lot,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:stock.period.cache.lot,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:stock.period.cache.lot,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
msgctxt "help:product.template,lot_required:"
msgid "The type of location for which lot is required"
msgstr "El tipo de ubicación para la cual el lote es requerido"
@@ -154,6 +214,10 @@ msgctxt "model:stock.lot.type,name:type_supplier"
msgid "Supplier"
msgstr "Proveedor"
+msgctxt "model:stock.period.cache.lot,name:"
+msgid "Stock Period Cache per Lot"
+msgstr "Período de stock precalculado por lote"
+
msgctxt "view:product.product:"
msgid "Lots"
msgstr "Lotes"
@@ -169,3 +233,11 @@ msgstr "Lote"
msgctxt "view:stock.lot:"
msgid "Lots"
msgstr "Lotes"
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Cache"
+msgstr "Período lote precalculado"
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Caches"
+msgstr "Período lote precalculados"
diff --git a/locale/es_CO.po b/locale/es_CO.po
index 22e48cd..1ceec73 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -4,11 +4,11 @@ msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:stock.move:"
msgid "Lot is required for move of product \"%s\"."
-msgstr ""
+msgstr "EL lote es requerido para el movimiento de producto \"%s\"."
msgctxt "field:product.template,lot_required:"
msgid "Lot Required"
-msgstr "El lote es requerido"
+msgstr "Lote Requerido"
msgctxt "field:product.template-stock.lot.type,create_date:"
msgid "Create Date"
@@ -42,6 +42,10 @@ msgctxt "field:product.template-stock.lot.type,write_uid:"
msgid "Write User"
msgstr "Modificado por Usuario"
+msgctxt "field:stock.inventory.line,lot:"
+msgid "Lot"
+msgstr "Lote"
+
msgctxt "field:stock.lot,create_date:"
msgid "Create Date"
msgstr "Fecha de Creación"
@@ -50,6 +54,10 @@ msgctxt "field:stock.lot,create_uid:"
msgid "Create User"
msgstr "Creado por Usuario"
+msgctxt "field:stock.lot,forecast_quantity:"
+msgid "Forecast Quantity"
+msgstr "Cantidad Proyectada"
+
msgctxt "field:stock.lot,id:"
msgid "ID"
msgstr "ID"
@@ -62,6 +70,10 @@ msgctxt "field:stock.lot,product:"
msgid "Product"
msgstr "Productos"
+msgctxt "field:stock.lot,quantity:"
+msgid "Quantity"
+msgstr "Cantidad"
+
msgctxt "field:stock.lot,rec_name:"
msgid "Name"
msgstr "Nombre"
@@ -110,6 +122,54 @@ msgctxt "field:stock.move,lot:"
msgid "Lot"
msgstr "Lote"
+msgctxt "field:stock.period,lot_caches:"
+msgid "Lot Caches"
+msgstr "Caches de Lote"
+
+msgctxt "field:stock.period.cache.lot,create_date:"
+msgid "Create Date"
+msgstr "Fecha de Creación"
+
+msgctxt "field:stock.period.cache.lot,create_uid:"
+msgid "Create User"
+msgstr "Creado por Usuario"
+
+msgctxt "field:stock.period.cache.lot,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:stock.period.cache.lot,internal_quantity:"
+msgid "Internal Quantity"
+msgstr "Cantidad Interna"
+
+msgctxt "field:stock.period.cache.lot,location:"
+msgid "Location"
+msgstr "Bodega"
+
+msgctxt "field:stock.period.cache.lot,lot:"
+msgid "Lot"
+msgstr "Lote"
+
+msgctxt "field:stock.period.cache.lot,period:"
+msgid "Period"
+msgstr "Período"
+
+msgctxt "field:stock.period.cache.lot,product:"
+msgid "Product"
+msgstr "Productos"
+
+msgctxt "field:stock.period.cache.lot,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:stock.period.cache.lot,write_date:"
+msgid "Write Date"
+msgstr "Modificado por Usuario"
+
+msgctxt "field:stock.period.cache.lot,write_uid:"
+msgid "Write User"
+msgstr "Modificado por Usuario"
+
msgctxt "help:product.template,lot_required:"
msgid "The type of location for which lot is required"
msgstr "El tipo de bodega para la cual el lote es requerido"
@@ -154,11 +214,14 @@ msgctxt "model:stock.lot.type,name:type_supplier"
msgid "Supplier"
msgstr "Proveedor"
+msgctxt "model:stock.period.cache.lot,name:"
+msgid "Stock Period Cache per Lot"
+msgstr "Cache de Periodo de Inventarios por Lote"
+
msgctxt "view:product.product:"
msgid "Lots"
msgstr "Lotes"
-#, fuzzy
msgctxt "view:product.template:"
msgid "Lots"
msgstr "Lotes"
@@ -170,3 +233,11 @@ msgstr "Lote"
msgctxt "view:stock.lot:"
msgid "Lots"
msgstr "Lotes"
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Cache"
+msgstr "Cache de Periodo Lote"
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Caches"
+msgstr "Caches de Periodo Lote"
diff --git a/locale/es_ES.po b/locale/es_ES.po
index 9341b02..c8b12e9 100644
--- a/locale/es_ES.po
+++ b/locale/es_ES.po
@@ -42,6 +42,10 @@ msgctxt "field:product.template-stock.lot.type,write_uid:"
msgid "Write User"
msgstr "Usuario modificación"
+msgctxt "field:stock.inventory.line,lot:"
+msgid "Lot"
+msgstr "Lote"
+
msgctxt "field:stock.lot,create_date:"
msgid "Create Date"
msgstr "Fecha creación"
@@ -50,6 +54,10 @@ msgctxt "field:stock.lot,create_uid:"
msgid "Create User"
msgstr "Usuario creación"
+msgctxt "field:stock.lot,forecast_quantity:"
+msgid "Forecast Quantity"
+msgstr "Cantidad prevista"
+
msgctxt "field:stock.lot,id:"
msgid "ID"
msgstr "ID"
@@ -62,6 +70,10 @@ msgctxt "field:stock.lot,product:"
msgid "Product"
msgstr "Producto"
+msgctxt "field:stock.lot,quantity:"
+msgid "Quantity"
+msgstr "Cantidad"
+
msgctxt "field:stock.lot,rec_name:"
msgid "Name"
msgstr "Nombre"
@@ -110,6 +122,54 @@ msgctxt "field:stock.move,lot:"
msgid "Lot"
msgstr "Lote"
+msgctxt "field:stock.period,lot_caches:"
+msgid "Lot Caches"
+msgstr "Lote precalculado"
+
+msgctxt "field:stock.period.cache.lot,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:stock.period.cache.lot,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:stock.period.cache.lot,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:stock.period.cache.lot,internal_quantity:"
+msgid "Internal Quantity"
+msgstr "Cantidad interna"
+
+msgctxt "field:stock.period.cache.lot,location:"
+msgid "Location"
+msgstr "Ubicación"
+
+msgctxt "field:stock.period.cache.lot,lot:"
+msgid "Lot"
+msgstr "Lote"
+
+msgctxt "field:stock.period.cache.lot,period:"
+msgid "Period"
+msgstr "Período"
+
+msgctxt "field:stock.period.cache.lot,product:"
+msgid "Product"
+msgstr "Productos"
+
+msgctxt "field:stock.period.cache.lot,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:stock.period.cache.lot,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:stock.period.cache.lot,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
msgctxt "help:product.template,lot_required:"
msgid "The type of location for which lot is required"
msgstr "El tipo de ubicación por cada lote es requerido."
@@ -154,6 +214,10 @@ msgctxt "model:stock.lot.type,name:type_supplier"
msgid "Supplier"
msgstr "Proveedor"
+msgctxt "model:stock.period.cache.lot,name:"
+msgid "Stock Period Cache per Lot"
+msgstr "Período de stock precalculado por lote"
+
msgctxt "view:product.product:"
msgid "Lots"
msgstr "Lotes"
@@ -169,3 +233,11 @@ msgstr "Lote"
msgctxt "view:stock.lot:"
msgid "Lots"
msgstr "Lotes"
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Cache"
+msgstr "Período lote precalculado"
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Caches"
+msgstr "Período lote precalculados"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
index fe63cbb..dab89a9 100644
--- a/locale/fr_FR.po
+++ b/locale/fr_FR.po
@@ -42,6 +42,10 @@ msgctxt "field:product.template-stock.lot.type,write_uid:"
msgid "Write User"
msgstr "Mis à jour par"
+msgctxt "field:stock.inventory.line,lot:"
+msgid "Lot"
+msgstr "Lot"
+
msgctxt "field:stock.lot,create_date:"
msgid "Create Date"
msgstr "Date de création"
@@ -50,6 +54,10 @@ msgctxt "field:stock.lot,create_uid:"
msgid "Create User"
msgstr "Créé par"
+msgctxt "field:stock.lot,forecast_quantity:"
+msgid "Forecast Quantity"
+msgstr "Quantités prévisionnelles"
+
msgctxt "field:stock.lot,id:"
msgid "ID"
msgstr "ID"
@@ -62,6 +70,10 @@ msgctxt "field:stock.lot,product:"
msgid "Product"
msgstr "Produit"
+msgctxt "field:stock.lot,quantity:"
+msgid "Quantity"
+msgstr "Quantité"
+
msgctxt "field:stock.lot,rec_name:"
msgid "Name"
msgstr "Nom"
@@ -110,6 +122,54 @@ msgctxt "field:stock.move,lot:"
msgid "Lot"
msgstr "Lot"
+msgctxt "field:stock.period,lot_caches:"
+msgid "Lot Caches"
+msgstr "Caches de lot"
+
+msgctxt "field:stock.period.cache.lot,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:stock.period.cache.lot,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:stock.period.cache.lot,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:stock.period.cache.lot,internal_quantity:"
+msgid "Internal Quantity"
+msgstr "Quantité interne"
+
+msgctxt "field:stock.period.cache.lot,location:"
+msgid "Location"
+msgstr "Emplacement"
+
+msgctxt "field:stock.period.cache.lot,lot:"
+msgid "Lot"
+msgstr "Lot"
+
+msgctxt "field:stock.period.cache.lot,period:"
+msgid "Period"
+msgstr "Période"
+
+msgctxt "field:stock.period.cache.lot,product:"
+msgid "Product"
+msgstr "Produit"
+
+msgctxt "field:stock.period.cache.lot,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:stock.period.cache.lot,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:stock.period.cache.lot,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
msgctxt "help:product.template,lot_required:"
msgid "The type of location for which lot is required"
msgstr "Le type d'emplacement pour lequel un lot est requis"
@@ -154,6 +214,10 @@ msgctxt "model:stock.lot.type,name:type_supplier"
msgid "Supplier"
msgstr "Fournisseur"
+msgctxt "model:stock.period.cache.lot,name:"
+msgid "Stock Period Cache per Lot"
+msgstr "Caches de période de stock par lot"
+
msgctxt "view:product.product:"
msgid "Lots"
msgstr "Lots"
@@ -169,3 +233,11 @@ msgstr "Lot"
msgctxt "view:stock.lot:"
msgid "Lots"
msgstr "Lots"
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Cache"
+msgstr "Cache de période et lot"
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Caches"
+msgstr "Caches de période et lot"
diff --git a/locale/nl_NL.po b/locale/nl_NL.po
index c05fb75..6303008 100644
--- a/locale/nl_NL.po
+++ b/locale/nl_NL.po
@@ -45,6 +45,11 @@ msgctxt "field:product.template-stock.lot.type,write_uid:"
msgid "Write User"
msgstr ""
+#, fuzzy
+msgctxt "field:stock.inventory.line,lot:"
+msgid "Lot"
+msgstr "Lot"
+
msgctxt "field:stock.lot,create_date:"
msgid "Create Date"
msgstr ""
@@ -53,6 +58,10 @@ msgctxt "field:stock.lot,create_uid:"
msgid "Create User"
msgstr ""
+msgctxt "field:stock.lot,forecast_quantity:"
+msgid "Forecast Quantity"
+msgstr ""
+
msgctxt "field:stock.lot,id:"
msgid "ID"
msgstr ""
@@ -68,6 +77,11 @@ msgid "Product"
msgstr "Producten"
#, fuzzy
+msgctxt "field:stock.lot,quantity:"
+msgid "Quantity"
+msgstr "Hoeveelheid"
+
+#, fuzzy
msgctxt "field:stock.lot,rec_name:"
msgid "Name"
msgstr "Naam bijlage"
@@ -120,6 +134,58 @@ msgctxt "field:stock.move,lot:"
msgid "Lot"
msgstr "Lot"
+msgctxt "field:stock.period,lot_caches:"
+msgid "Lot Caches"
+msgstr ""
+
+msgctxt "field:stock.period.cache.lot,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:stock.period.cache.lot,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:stock.period.cache.lot,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:stock.period.cache.lot,internal_quantity:"
+msgid "Internal Quantity"
+msgstr ""
+
+msgctxt "field:stock.period.cache.lot,location:"
+msgid "Location"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,lot:"
+msgid "Lot"
+msgstr "Lot"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,period:"
+msgid "Period"
+msgstr "Periode"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,product:"
+msgid "Product"
+msgstr "Producten"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,rec_name:"
+msgid "Name"
+msgstr "Naam bijlage"
+
+msgctxt "field:stock.period.cache.lot,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:stock.period.cache.lot,write_uid:"
+msgid "Write User"
+msgstr ""
+
msgctxt "help:product.template,lot_required:"
msgid "The type of location for which lot is required"
msgstr ""
@@ -166,6 +232,10 @@ msgctxt "model:stock.lot.type,name:type_supplier"
msgid "Supplier"
msgstr "Leverancier"
+msgctxt "model:stock.period.cache.lot,name:"
+msgid "Stock Period Cache per Lot"
+msgstr ""
+
msgctxt "view:product.product:"
msgid "Lots"
msgstr ""
@@ -182,3 +252,11 @@ msgstr "Lot"
msgctxt "view:stock.lot:"
msgid "Lots"
msgstr ""
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Cache"
+msgstr ""
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Caches"
+msgstr ""
diff --git a/locale/ru_RU.po b/locale/ru_RU.po
index fc117d6..6295f6f 100644
--- a/locale/ru_RU.po
+++ b/locale/ru_RU.po
@@ -50,6 +50,10 @@ msgctxt "field:product.template-stock.lot.type,write_uid:"
msgid "Write User"
msgstr "Изменено пользователем"
+msgctxt "field:stock.inventory.line,lot:"
+msgid "Lot"
+msgstr ""
+
#, fuzzy
msgctxt "field:stock.lot,create_date:"
msgid "Create Date"
@@ -61,6 +65,11 @@ msgid "Create User"
msgstr "Создано пользователем"
#, fuzzy
+msgctxt "field:stock.lot,forecast_quantity:"
+msgid "Forecast Quantity"
+msgstr "Прогноз количества"
+
+#, fuzzy
msgctxt "field:stock.lot,id:"
msgid "ID"
msgstr "ID"
@@ -76,6 +85,11 @@ msgid "Product"
msgstr "Товарно материальные ценности (ТМЦ)"
#, fuzzy
+msgctxt "field:stock.lot,quantity:"
+msgid "Quantity"
+msgstr "Кол-во"
+
+#, fuzzy
msgctxt "field:stock.lot,rec_name:"
msgid "Name"
msgstr "Наименование"
@@ -134,6 +148,64 @@ msgctxt "field:stock.move,lot:"
msgid "Lot"
msgstr ""
+msgctxt "field:stock.period,lot_caches:"
+msgid "Lot Caches"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,create_date:"
+msgid "Create Date"
+msgstr "Дата создания"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,create_uid:"
+msgid "Create User"
+msgstr "Создано пользователем"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,internal_quantity:"
+msgid "Internal Quantity"
+msgstr "Внутреннее количество"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,location:"
+msgid "Location"
+msgstr "Местоположение"
+
+msgctxt "field:stock.period.cache.lot,lot:"
+msgid "Lot"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,period:"
+msgid "Period"
+msgstr "Период"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,product:"
+msgid "Product"
+msgstr "Товарно материальные ценности (ТМЦ)"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,rec_name:"
+msgid "Name"
+msgstr "Полное наименование"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,write_date:"
+msgid "Write Date"
+msgstr "Дата изменения"
+
+#, fuzzy
+msgctxt "field:stock.period.cache.lot,write_uid:"
+msgid "Write User"
+msgstr "Изменено пользователем"
+
msgctxt "help:product.template,lot_required:"
msgid "The type of location for which lot is required"
msgstr ""
@@ -183,6 +255,10 @@ msgctxt "model:stock.lot.type,name:type_supplier"
msgid "Supplier"
msgstr "Поставщик"
+msgctxt "model:stock.period.cache.lot,name:"
+msgid "Stock Period Cache per Lot"
+msgstr ""
+
msgctxt "view:product.product:"
msgid "Lots"
msgstr ""
@@ -198,3 +274,11 @@ msgstr ""
msgctxt "view:stock.lot:"
msgid "Lots"
msgstr ""
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Cache"
+msgstr ""
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Caches"
+msgstr ""
diff --git a/locale/es_AR.po b/locale/sl_SI.po
similarity index 53%
copy from locale/es_AR.po
copy to locale/sl_SI.po
index 36350f3..817b98d 100644
--- a/locale/es_AR.po
+++ b/locale/sl_SI.po
@@ -4,19 +4,19 @@ msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:stock.move:"
msgid "Lot is required for move of product \"%s\"."
-msgstr "El lote es requerido para el movimiento del producto «%s»."
+msgstr "Šarža je obvezna pri prometu izdelka \"%s\"."
msgctxt "field:product.template,lot_required:"
msgid "Lot Required"
-msgstr "Lote requerido"
+msgstr "Šarža zahtevana"
msgctxt "field:product.template-stock.lot.type,create_date:"
msgid "Create Date"
-msgstr "Fecha creación"
+msgstr "Ustvarjeno"
msgctxt "field:product.template-stock.lot.type,create_uid:"
msgid "Create User"
-msgstr "Usuario creación"
+msgstr "Ustvaril"
msgctxt "field:product.template-stock.lot.type,id:"
msgid "ID"
@@ -24,31 +24,39 @@ msgstr "ID"
msgctxt "field:product.template-stock.lot.type,rec_name:"
msgid "Name"
-msgstr "Nombre"
+msgstr "Ime"
msgctxt "field:product.template-stock.lot.type,template:"
msgid "Template"
-msgstr "Plantilla"
+msgstr "Predloga"
msgctxt "field:product.template-stock.lot.type,type:"
msgid "Type"
-msgstr "Tipo"
+msgstr "Vrsta"
msgctxt "field:product.template-stock.lot.type,write_date:"
msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Zapisano"
msgctxt "field:product.template-stock.lot.type,write_uid:"
msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Zapisal"
+
+msgctxt "field:stock.inventory.line,lot:"
+msgid "Lot"
+msgstr "Šarža"
msgctxt "field:stock.lot,create_date:"
msgid "Create Date"
-msgstr "Fecha creación"
+msgstr "Ustvarjeno"
msgctxt "field:stock.lot,create_uid:"
msgid "Create User"
-msgstr "Usuario creación"
+msgstr "Ustvaril"
+
+msgctxt "field:stock.lot,forecast_quantity:"
+msgid "Forecast Quantity"
+msgstr "Predvidena količina"
msgctxt "field:stock.lot,id:"
msgid "ID"
@@ -56,35 +64,39 @@ msgstr "ID"
msgctxt "field:stock.lot,number:"
msgid "Number"
-msgstr "Número"
+msgstr "Številka"
msgctxt "field:stock.lot,product:"
msgid "Product"
-msgstr "Producto"
+msgstr "Izdelek"
+
+msgctxt "field:stock.lot,quantity:"
+msgid "Quantity"
+msgstr "Količina"
msgctxt "field:stock.lot,rec_name:"
msgid "Name"
-msgstr "Nombre"
+msgstr "Ime"
msgctxt "field:stock.lot,write_date:"
msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Zapisano"
msgctxt "field:stock.lot,write_uid:"
msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Zapisal"
msgctxt "field:stock.lot.type,code:"
msgid "Code"
-msgstr "Código"
+msgstr "Šifra"
msgctxt "field:stock.lot.type,create_date:"
msgid "Create Date"
-msgstr "Fecha creación"
+msgstr "Ustvarjeno"
msgctxt "field:stock.lot.type,create_uid:"
msgid "Create User"
-msgstr "Usuario creación"
+msgstr "Ustvaril"
msgctxt "field:stock.lot.type,id:"
msgid "ID"
@@ -92,80 +104,136 @@ msgstr "ID"
msgctxt "field:stock.lot.type,name:"
msgid "Name"
-msgstr "Nombre"
+msgstr "Naziv"
msgctxt "field:stock.lot.type,rec_name:"
msgid "Name"
-msgstr "Nombre"
+msgstr "Ime"
msgctxt "field:stock.lot.type,write_date:"
msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Zapisano"
msgctxt "field:stock.lot.type,write_uid:"
msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Zapisal"
msgctxt "field:stock.move,lot:"
msgid "Lot"
-msgstr "Lote"
+msgstr "Šarža"
+
+msgctxt "field:stock.period,lot_caches:"
+msgid "Lot Caches"
+msgstr "Predpomnjene šarže"
+
+msgctxt "field:stock.period.cache.lot,create_date:"
+msgid "Create Date"
+msgstr "Ustvarjeno"
+
+msgctxt "field:stock.period.cache.lot,create_uid:"
+msgid "Create User"
+msgstr "Ustvaril"
+
+msgctxt "field:stock.period.cache.lot,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:stock.period.cache.lot,internal_quantity:"
+msgid "Internal Quantity"
+msgstr "Notranja količina"
+
+msgctxt "field:stock.period.cache.lot,location:"
+msgid "Location"
+msgstr "Lokacija"
+
+msgctxt "field:stock.period.cache.lot,lot:"
+msgid "Lot"
+msgstr "Šarža"
+
+msgctxt "field:stock.period.cache.lot,period:"
+msgid "Period"
+msgstr "Obdobje"
+
+msgctxt "field:stock.period.cache.lot,product:"
+msgid "Product"
+msgstr "Izdelek"
+
+msgctxt "field:stock.period.cache.lot,rec_name:"
+msgid "Name"
+msgstr "Ime"
+
+msgctxt "field:stock.period.cache.lot,write_date:"
+msgid "Write Date"
+msgstr "Zapisano"
+
+msgctxt "field:stock.period.cache.lot,write_uid:"
+msgid "Write User"
+msgstr "Zapisal"
msgctxt "help:product.template,lot_required:"
msgid "The type of location for which lot is required"
-msgstr "El tipo de ubicación para la cual el lote es requerido"
+msgstr "Tip lokacije, za katero je šarža obvezna"
msgctxt "model:ir.action,name:act_lot_form"
msgid "Lots"
-msgstr "Lotes"
+msgstr "Šarže"
msgctxt "model:ir.ui.menu,name:menu_lot_form"
msgid "Lots"
-msgstr "Lotes"
+msgstr "Šarže"
msgctxt "model:product.template-stock.lot.type,name:"
msgid "Template - Stock Lot Type"
-msgstr "Plantilla - Tipo de lote de inventario"
+msgstr "Predloga - Tip šarže"
msgctxt "model:stock.lot,name:"
msgid "Stock Lot"
-msgstr "Lote de inventario"
+msgstr "Šarža"
msgctxt "model:stock.lot.type,name:"
msgid "Stock Lot Type"
-msgstr "Tipo de lote de inventario"
+msgstr "Tip šarže"
msgctxt "model:stock.lot.type,name:type_customer"
msgid "Customer"
-msgstr "Cliente"
+msgstr "Kupec"
msgctxt "model:stock.lot.type,name:type_lost_found"
msgid "Lost and Found"
-msgstr "Perdido y encontrado"
+msgstr "Izgubljeno/najdeno"
msgctxt "model:stock.lot.type,name:type_production"
msgid "Production"
-msgstr "Producción"
+msgstr "Proizvodnja"
msgctxt "model:stock.lot.type,name:type_storage"
msgid "Storage"
-msgstr "Depósito"
+msgstr "Shramba"
msgctxt "model:stock.lot.type,name:type_supplier"
msgid "Supplier"
-msgstr "Proveedor"
+msgstr "Dobavitelj"
-msgctxt "view:product.product:"
-msgid "Lots"
-msgstr "Lotes"
+msgctxt "model:stock.period.cache.lot,name:"
+msgid "Stock Period Cache per Lot"
+msgstr "Predpomnjena obdobja po šaržah"
msgctxt "view:product.template:"
msgid "Lots"
-msgstr "Lotes"
+msgstr "Šarže"
msgctxt "view:stock.lot:"
msgid "Lot"
-msgstr "Lote"
+msgstr "Šarža"
msgctxt "view:stock.lot:"
msgid "Lots"
-msgstr "Lotes"
+msgstr "Šarže"
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Cache"
+msgstr "Predpomnjena šarža po obdobjih"
+
+msgctxt "view:stock.period.cache.lot:"
+msgid "Period Lot Caches"
+msgstr "Predpomnjene šarže po obdobjih"
diff --git a/setup.py b/setup.py
index 46abc2d..983b0f3 100644
--- a/setup.py
+++ b/setup.py
@@ -66,6 +66,7 @@ setup(name='trytond_stock_lot',
'Natural Language :: French',
'Natural Language :: German',
'Natural Language :: Russian',
+ 'Natural Language :: Slovenian',
'Natural Language :: Spanish',
'Operating System :: OS Independent',
'Programming Language :: Python :: 2.6',
diff --git a/stock.py b/stock.py
index 73bdc51..27915c6 100644
--- a/stock.py
+++ b/stock.py
@@ -1,20 +1,43 @@
#This file is part of Tryton. The COPYRIGHT file at the top level of
#this repository contains the full copyright notices and license terms.
+from collections import defaultdict
+
from trytond.model import ModelView, ModelSQL, Workflow, fields
from trytond.pyson import Eval
from trytond.pool import Pool, PoolMeta
+from trytond.transaction import Transaction
+from trytond.modules.stock import StockMixin
__all__ = ['Lot', 'LotType', 'Move', 'ShipmentIn', 'ShipmentOut',
- 'ShipmentOutReturn']
+ 'ShipmentOutReturn',
+ 'Period', 'PeriodCacheLot',
+ 'Inventory', 'InventoryLine']
__metaclass__ = PoolMeta
-class Lot(ModelSQL, ModelView):
+class Lot(ModelSQL, ModelView, StockMixin):
"Stock Lot"
__name__ = 'stock.lot'
_rec_name = 'number'
number = fields.Char('Number', required=True, select=True)
product = fields.Many2One('product.product', 'Product', required=True)
+ quantity = fields.Function(fields.Float('Quantity'), 'get_quantity',
+ searcher='search_quantity')
+ forecast_quantity = fields.Function(fields.Float('Forecast Quantity'),
+ 'get_quantity', searcher='search_quantity')
+
+ @classmethod
+ def get_quantity(cls, lots, name):
+ location_ids = Transaction().context.get('locations')
+ products = list(set(l.product for l in lots))
+ return cls._get_quantity(lots, name, location_ids, products,
+ grouping=('product', 'lot'))
+
+ @classmethod
+ def search_quantity(cls, name, domain=None):
+ location_ids = Transaction().context.get('locations')
+ return cls._search_quantity(name, location_ids, domain,
+ grouping=('product', 'lot'))
class LotType(ModelSQL, ModelView):
@@ -42,27 +65,20 @@ class Move:
'lot_required': 'Lot is required for move of product "%s".',
})
- @classmethod
- def check_lot(cls, moves):
+ def check_lot(self):
"Check if lot is required"
- for move in moves:
- if (move.state == 'done'
- and move.internal_quantity
- and not move.lot
- and move.product.lot_is_required(
- move.from_location, move.to_location)):
- cls.raise_user_error('lot_required', (move.product.rec_name,))
-
- @classmethod
- def create(cls, vlist):
- moves = super(Move, cls).create(vlist)
- cls.check_lot(moves)
- return moves
+ if (self.state == 'done'
+ and self.internal_quantity
+ and not self.lot
+ and self.product.lot_is_required(
+ self.from_location, self.to_location)):
+ self.raise_user_error('lot_required', self.product.rec_name)
@classmethod
- def write(cls, moves, values):
- super(Move, cls).write(moves, values)
- cls.check_lot(moves)
+ def validate(cls, moves):
+ super(Move, cls).validate(moves)
+ for move in moves:
+ move.check_lot()
class ShipmentIn:
@@ -134,3 +150,133 @@ class ShipmentOutReturn:
if move and incoming_move.lot:
move.lot = incoming_move.lot
return move
+
+
+class Period:
+ __name__ = 'stock.period'
+ lot_caches = fields.One2Many('stock.period.cache.lot', 'period',
+ 'Lot Caches', readonly=True)
+
+ @classmethod
+ def groupings(cls):
+ return super(Period, cls).groupings() + [('product', 'lot')]
+
+ @classmethod
+ def get_cache(cls, grouping):
+ pool = Pool()
+ Cache = super(Period, cls).get_cache(grouping)
+ if grouping == ('product', 'lot'):
+ return pool.get('stock.period.cache.lot')
+ return Cache
+
+
+class PeriodCacheLot(ModelSQL, ModelView):
+ '''
+ Stock Period Cache per Lot
+
+ It is used to store cached computation of stock quantities per lot.
+ '''
+ __name__ = 'stock.period.cache.lot'
+ period = fields.Many2One('stock.period', 'Period', required=True,
+ readonly=True, select=True, ondelete='CASCADE')
+ location = fields.Many2One('stock.location', 'Location', required=True,
+ readonly=True, select=True, ondelete='CASCADE')
+ product = fields.Many2One('product.product', 'Product', required=True,
+ readonly=True, ondelete='CASCADE')
+ lot = fields.Many2One('stock.lot', 'Lot', readonly=True,
+ ondelete='CASCADE')
+ internal_quantity = fields.Float('Internal Quantity', readonly=True)
+
+
+class Inventory:
+ __name__ = 'stock.inventory'
+
+ @classmethod
+ def complete_lines(cls, inventories):
+ pool = Pool()
+ Product = pool.get('product.product')
+ Line = pool.get('stock.inventory.line')
+
+ super(Inventory, cls).complete_lines(inventories)
+
+ # Create and/or update lines with product that will require lot for
+ # their moves.
+ to_create = []
+ for inventory in inventories:
+ product2lines = defaultdict(list)
+ for line in inventory.lines:
+ if (line.product.lot_is_required(inventory.location,
+ inventory.lost_found)
+ or line.product.lot_is_required(inventory.lost_found,
+ inventory.location)):
+ product2lines[line.product.id].append(line)
+ if product2lines:
+ with Transaction().set_context(stock_date_end=inventory.date):
+ pbl = Product.products_by_location([inventory.location.id],
+ product_ids=product2lines.keys(),
+ grouping=('product', 'lot'))
+ product_qty = defaultdict(dict)
+ for (location_id, product_id, lot_id), quantity \
+ in pbl.iteritems():
+ product_qty[product_id][lot_id] = quantity
+
+ products = Product.browse(product_qty.keys())
+ product2uom = dict((p.id, p.default_uom.id) for p in products)
+
+ for product_id, lines in product2lines.iteritems():
+ quantities = product_qty[product_id]
+ uom_id = product2uom[product_id]
+ for line in lines:
+ lot_id = line.lot.id if line.lot else None
+ if lot_id in quantities:
+ quantity = quantities.pop(lot_id)
+ elif lot_id is None and quantities:
+ lot_id = quantities.keys()[0]
+ quantity = quantities.pop(lot_id)
+ else:
+ lot_id = None
+ quantity = 0.0
+
+ values = line.update_values4complete(quantity, uom_id)
+ if (values or lot_id != (line.lot.id
+ if line.lot else None)):
+ values['lot'] = lot_id
+ Line.write([line], values)
+ if quantities:
+ for lot_id, quantity in quantities.iteritems():
+ values = Line.create_values4complete(product_id,
+ inventory, quantity, uom_id)
+ values['lot'] = lot_id
+ to_create.append(values)
+ if to_create:
+ Line.create(to_create)
+
+
+class InventoryLine:
+ __name__ = 'stock.inventory.line'
+ lot = fields.Many2One('stock.lot', 'Lot',
+ domain=[
+ ('product', '=', Eval('product')),
+ ],
+ depends=['product'])
+
+ @classmethod
+ def __setup__(cls):
+ super(InventoryLine, cls).__setup__()
+ cls._order.insert(1, ('lot', 'ASC'))
+
+ def get_rec_name(self, name):
+ rec_name = super(InventoryLine, self).get_rec_name(name)
+ if self.lot:
+ rec_name += ' - %s' % self.lot.rec_name
+ return rec_name
+
+ @property
+ def unique_key(self):
+ return super(InventoryLine, self).unique_key + (self.lot,)
+
+ def _get_move(self):
+ move = super(InventoryLine, self)._get_move()
+ if move:
+ move.lot = self.lot
+ return move
diff --git a/stock.xml b/stock.xml
index e7b2d80..d12ca2b 100644
--- a/stock.xml
+++ b/stock.xml
@@ -90,5 +90,52 @@ this repository contains the full copyright notices and license terms. -->
<field name="name">move_tree</field>
</record>
+ <record model="ir.ui.view" id="period_cache_lot_view_form">
+ <field name="model">stock.period.cache.lot</field>
+ <field name="type">form</field>
+ <field name="name">period_cache_lot_form</field>
+ </record>
+ <record model="ir.ui.view" id="period_cache_lot_view_list">
+ <field name="model">stock.period.cache.lot</field>
+ <field name="type">tree</field>
+ <field name="name">period_cache_lot_list</field>
+ </record>
+
+ <record model="ir.model.access" id="access_period_cache_lot">
+ <field name="model" search="[('model', '=', 'stock.period.cache.lot')]"/>
+ <field name="perm_read" eval="False"/>
+ <field name="perm_write" eval="False"/>
+ <field name="perm_create" eval="False"/>
+ <field name="perm_delete" eval="False"/>
+ </record>
+ <record model="ir.model.access" id="access_period_cache_lot_stock">
+ <field name="model" search="[('model', '=', 'stock.period.cache.lot')]"/>
+ <field name="group" ref="stock.group_stock"/>
+ <field name="perm_read" eval="True"/>
+ <field name="perm_write" eval="False"/>
+ <field name="perm_create" eval="False"/>
+ <field name="perm_delete" eval="False"/>
+ </record>
+ <record model="ir.model.access" id="access_period_cache_lot_admin">
+ <field name="model" search="[('model', '=', 'stock.period.cache.lot')]"/>
+ <field name="group" ref="stock.group_stock_admin"/>
+ <field name="perm_read" eval="True"/>
+ <field name="perm_write" eval="True"/>
+ <field name="perm_create" eval="True"/>
+ <field name="perm_delete" eval="True"/>
+ </record>
+
+ <record model="ir.ui.view" id="inventory_line_view_form">
+ <field name="model">stock.inventory.line</field>
+ <field name="inherit" ref="stock.inventory_line_view_form"/>
+ <field name="name">inventory_line_form</field>
+ </record>
+
+ <record model="ir.ui.view" id="inventory_line_view_tree">
+ <field name="model">stock.inventory.line</field>
+ <field name="inherit" ref="stock.inventory_line_view_tree"/>
+ <field name="name">inventory_line_tree</field>
+ </record>
+
</data>
</tryton>
diff --git a/tests/__init__.py b/tests/__init__.py
index 96d4ef9..cf849d9 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -2,3 +2,5 @@
#this repository contains the full copyright notices and license terms.
from .test_stock_lot import suite
+
+__all__ = ['suite']
diff --git a/tests/test_stock_lot.py b/tests/test_stock_lot.py
index a137b11..0a0abce 100644
--- a/tests/test_stock_lot.py
+++ b/tests/test_stock_lot.py
@@ -11,10 +11,15 @@ if os.path.isdir(DIR):
import unittest
import doctest
+import datetime
+from dateutil.relativedelta import relativedelta
+from decimal import Decimal
import trytond.tests.test_tryton
-from trytond.tests.test_tryton import test_view, test_depends
+from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, test_view,\
+ test_depends
from trytond.backend.sqlite.database import Database as SQLiteDatabase
+from trytond.transaction import Transaction
class StockLotTestCase(unittest.TestCase):
@@ -24,6 +29,16 @@ class StockLotTestCase(unittest.TestCase):
def setUp(self):
trytond.tests.test_tryton.install_module('stock_lot')
+ self.template = POOL.get('product.template')
+ self.product = POOL.get('product.product')
+ self.uom = POOL.get('product.uom')
+ self.lot = POOL.get('stock.lot')
+ self.location = POOL.get('stock.location')
+ self.move = POOL.get('stock.move')
+ self.company = POOL.get('company.company')
+ self.user = POOL.get('res.user')
+ self.period = POOL.get('stock.period')
+ self.cache = POOL.get('stock.period.cache')
def test0005views(self):
'''
@@ -37,6 +52,203 @@ class StockLotTestCase(unittest.TestCase):
'''
test_depends()
+ def test0010products_by_location(self):
+ '''
+ Test products_by_location.
+ '''
+ with Transaction().start(DB_NAME, USER, context=CONTEXT):
+ kg, = self.uom.search([('name', '=', 'Kilogram')])
+ g, = self.uom.search([('name', '=', 'Gram')])
+ template, = self.template.create([{
+ 'name': 'Test products_by_location',
+ 'type': 'goods',
+ 'list_price': Decimal(0),
+ 'cost_price': Decimal(0),
+ 'cost_price_method': 'fixed',
+ 'default_uom': kg.id,
+ }])
+ product, = self.product.create([{
+ 'template': template.id,
+ }])
+ supplier, = self.location.search([('code', '=', 'SUP')])
+ customer, = self.location.search([('code', '=', 'CUS')])
+ storage, = self.location.search([('code', '=', 'STO')])
+ company, = self.company.search([('rec_name', '=', 'B2CK')])
+ currency = company.currency
+ self.user.write([self.user(USER)], {
+ 'main_company': company.id,
+ 'company': company.id,
+ })
+
+ lot1, lot2 = self.lot.create([{
+ 'number': '1',
+ 'product': product.id,
+ }, {
+ 'number': '2',
+ 'product': product.id,
+ }])
+
+ moves = self.move.create([{
+ 'product': product.id,
+ 'lot': lot1.id,
+ 'uom': kg.id,
+ 'quantity': 5,
+ 'from_location': supplier.id,
+ 'to_location': storage.id,
+ 'company': company.id,
+ 'unit_price': Decimal('1'),
+ 'currency': currency.id,
+ }, {
+ 'product': product.id,
+ 'lot': lot2.id,
+ 'uom': kg.id,
+ 'quantity': 10,
+ 'from_location': supplier.id,
+ 'to_location': storage.id,
+ 'company': company.id,
+ 'unit_price': Decimal('1'),
+ 'currency': currency.id,
+ }, {
+ 'product': product.id,
+ 'lot': lot2.id,
+ 'uom': kg.id,
+ 'quantity': 2,
+ 'from_location': storage.id,
+ 'to_location': customer.id,
+ 'company': company.id,
+ 'unit_price': Decimal('1'),
+ 'currency': currency.id,
+ }, {
+ 'product': product.id,
+ 'lot': None,
+ 'uom': kg.id,
+ 'quantity': 3,
+ 'from_location': supplier.id,
+ 'to_location': storage.id,
+ 'company': company.id,
+ 'unit_price': Decimal('1'),
+ 'currency': currency.id,
+ }])
+ self.move.do(moves)
+
+ self.assertEqual(self.product.products_by_location([storage.id],
+ [product.id]), {
+ (storage.id, product.id): 16,
+ })
+ self.assertEqual(self.product.products_by_location([storage.id],
+ [product.id], grouping=('product', 'lot')), {
+ (storage.id, product.id, lot1.id): 5,
+ (storage.id, product.id, lot2.id): 8,
+ (storage.id, product.id, None): 3,
+ })
+ with Transaction().set_context(locations=[storage.id]):
+ self.assertEqual(lot1.quantity, 5)
+ self.assertEqual(lot2.quantity, 8)
+
+ def test0020period(self):
+ '''
+ Test period.
+ '''
+ with Transaction().start(DB_NAME, USER, context=CONTEXT):
+ unit, = self.uom.search([('name', '=', 'Unit')])
+ template, = self.template.create([{
+ 'name': 'Test period',
+ 'type': 'goods',
+ 'cost_price_method': 'fixed',
+ 'default_uom': unit.id,
+ 'list_price': Decimal(0),
+ 'cost_price': Decimal(0),
+ }])
+ product, = self.product.create([{
+ 'template': template.id,
+ }])
+ supplier, = self.location.search([('code', '=', 'SUP')])
+ storage, = self.location.search([('code', '=', 'STO')])
+ company, = self.company.search([('rec_name', '=', 'B2CK')])
+ currency = company.currency
+ self.user.write([self.user(USER)], {
+ 'main_company': company.id,
+ 'company': company.id,
+ })
+
+ lot1, lot2 = self.lot.create([{
+ 'number': '1',
+ 'product': product.id,
+ }, {
+ 'number': '2',
+ 'product': product.id,
+ }])
+
+ today = datetime.date.today()
+
+ moves = self.move.create([{
+ 'product': product.id,
+ 'lot': lot1.id,
+ 'uom': unit.id,
+ 'quantity': 5,
+ 'from_location': supplier.id,
+ 'to_location': storage.id,
+ 'planned_date': today - relativedelta(days=1),
+ 'effective_date': today - relativedelta(days=1),
+ 'company': company.id,
+ 'unit_price': Decimal('1'),
+ 'currency': currency.id,
+ }, {
+ 'product': product.id,
+ 'lot': lot2.id,
+ 'uom': unit.id,
+ 'quantity': 10,
+ 'from_location': supplier.id,
+ 'to_location': storage.id,
+ 'planned_date': today - relativedelta(days=1),
+ 'effective_date': today - relativedelta(days=1),
+ 'company': company.id,
+ 'unit_price': Decimal('1'),
+ 'currency': currency.id,
+ }, {
+ 'product': product.id,
+ 'lot': None,
+ 'uom': unit.id,
+ 'quantity': 3,
+ 'from_location': supplier.id,
+ 'to_location': storage.id,
+ 'planned_date': today - relativedelta(days=1),
+ 'effective_date': today - relativedelta(days=1),
+ 'company': company.id,
+ 'unit_price': Decimal('1'),
+ 'currency': currency.id,
+ }])
+ self.move.do(moves)
+
+ period, = self.period.create([{
+ 'date': today - relativedelta(days=1),
+ 'company': company.id,
+ }])
+ self.period.close([period])
+ self.assertEqual(period.state, 'closed')
+
+ quantities = {
+ supplier: -18,
+ storage: 18,
+ }
+ for cache in period.caches:
+ self.assertEqual(cache.product, product)
+ self.assertEqual(cache.internal_quantity,
+ quantities[cache.location])
+
+ quantities = {
+ (supplier, lot1): -5,
+ (storage, lot1): 5,
+ (supplier, lot2): -10,
+ (storage, lot2): 10,
+ (supplier, None): -3,
+ (storage, None): 3,
+ }
+ for lot_cache in period.lot_caches:
+ self.assertEqual(lot_cache.product, product)
+ self.assertEqual(lot_cache.internal_quantity,
+ quantities[(lot_cache.location, lot_cache.lot)])
+
def doctest_dropdb(test):
'''
@@ -53,6 +265,10 @@ def doctest_dropdb(test):
def suite():
suite = trytond.tests.test_tryton.suite()
+ from trytond.modules.company.tests import test_company
+ for test in test_company.suite():
+ if test not in suite:
+ suite.addTest(test)
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
StockLotTestCase))
suite.addTests(doctest.DocFileSuite('scenario_stock_lot_shipment_out.rst',
diff --git a/tryton.cfg b/tryton.cfg
index 1d48d02..d6d3790 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
[tryton]
-version=2.8.0
+version=3.0.0
depends:
ir
product
diff --git a/trytond_stock_lot.egg-info/PKG-INFO b/trytond_stock_lot.egg-info/PKG-INFO
index 1d54c97..ebdd1f9 100644
--- a/trytond_stock_lot.egg-info/PKG-INFO
+++ b/trytond_stock_lot.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.1
Name: trytond-stock-lot
-Version: 2.8.0
+Version: 3.0.0
Summary: Tryton module for lot of products
Home-page: http://www.tryton.org/
Author: Tryton
Author-email: UNKNOWN
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.8/
+Download-URL: http://downloads.tryton.org/3.0/
Description: trytond_stock_lot
=================
@@ -60,6 +60,7 @@ Classifier: Natural Language :: English
Classifier: Natural Language :: French
Classifier: Natural Language :: German
Classifier: Natural Language :: Russian
+Classifier: Natural Language :: Slovenian
Classifier: Natural Language :: Spanish
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 2.6
diff --git a/trytond_stock_lot.egg-info/SOURCES.txt b/trytond_stock_lot.egg-info/SOURCES.txt
index 5b81fd1..68da135 100644
--- a/trytond_stock_lot.egg-info/SOURCES.txt
+++ b/trytond_stock_lot.egg-info/SOURCES.txt
@@ -24,6 +24,7 @@ locale/es_ES.po
locale/fr_FR.po
locale/nl_NL.po
locale/ru_RU.po
+locale/sl_SI.po
tests/scenario_stock_lot_shipment_out.rst
trytond_stock_lot.egg-info/PKG-INFO
trytond_stock_lot.egg-info/SOURCES.txt
@@ -32,8 +33,12 @@ trytond_stock_lot.egg-info/entry_points.txt
trytond_stock_lot.egg-info/not-zip-safe
trytond_stock_lot.egg-info/requires.txt
trytond_stock_lot.egg-info/top_level.txt
+view/inventory_line_form.xml
+view/inventory_line_tree.xml
view/lot_form.xml
view/lot_tree.xml
view/move_form.xml
view/move_tree.xml
+view/period_cache_lot_form.xml
+view/period_cache_lot_list.xml
view/template_form.xml
\ No newline at end of file
diff --git a/trytond_stock_lot.egg-info/requires.txt b/trytond_stock_lot.egg-info/requires.txt
index eb4aa19..943e3c2 100644
--- a/trytond_stock_lot.egg-info/requires.txt
+++ b/trytond_stock_lot.egg-info/requires.txt
@@ -1,3 +1,3 @@
-trytond_product >= 2.8, < 2.9
-trytond_stock >= 2.8, < 2.9
-trytond >= 2.8, < 2.9
\ No newline at end of file
+trytond_product >= 3.0, < 3.1
+trytond_stock >= 3.0, < 3.1
+trytond >= 3.0, < 3.1
\ No newline at end of file
diff --git a/view/inventory_line_form.xml b/view/inventory_line_form.xml
new file mode 100644
index 0000000..6882aa4
--- /dev/null
+++ b/view/inventory_line_form.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<data>
+ <xpath expr="/form/field[@name='product']" position="after">
+ <label name="lot"/>
+ <field name="lot"/>
+ </xpath>
+</data>
diff --git a/view/inventory_line_tree.xml b/view/inventory_line_tree.xml
new file mode 100644
index 0000000..0d6460f
--- /dev/null
+++ b/view/inventory_line_tree.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<data>
+ <xpath expr="/tree/field[@name='product']" position="after">
+ <field name="lot"/>
+ </xpath>
+</data>
diff --git a/view/period_cache_lot_form.xml b/view/period_cache_lot_form.xml
new file mode 100644
index 0000000..02e525a
--- /dev/null
+++ b/view/period_cache_lot_form.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<form string="Period Lot Cache" col="8">
+ <label name="period"/>
+ <field name="period" colspan="6"/>
+ <label name="location"/>
+ <field name="location"/>
+ <label name="product"/>
+ <field name="product"/>
+ <label name="lot"/>
+ <field name="lot"/>
+ <label name="internal_quantity"/>
+ <field name="internal_quantity"/>
+</form>
diff --git a/view/period_cache_lot_list.xml b/view/period_cache_lot_list.xml
new file mode 100644
index 0000000..060418d
--- /dev/null
+++ b/view/period_cache_lot_list.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<tree string="Period Lot Caches">
+ <field name="period"/>
+ <field name="location"/>
+ <field name="product"/>
+ <field name="lot"/>
+ <field name="internal_quantity"/>
+</tree>
commit d611d86f41089a2023021f76852e2d2c5c590b69
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Thu May 2 00:38:03 2013 +0200
Adding upstream version 2.8.0.
diff --git a/CHANGELOG b/CHANGELOG
index 210505e..3ac4e21 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.8.0 - 2013-04-22
+* Bug fixes (see mercurial logs for details)
+
Version 2.6.0 - 2012-10-22
* Bug fixes (see mercurial logs for details)
diff --git a/COPYRIGHT b/COPYRIGHT
index 747ae18..7668cfa 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,5 +1,5 @@
-Copyright (C) 2012 Cédric Krier.
-Copyright (C) 2012 B2CK SPRL.
+Copyright (C) 2012-2013 Cédric Krier.
+Copyright (C) 2012-2013 B2CK SPRL.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/MANIFEST.in b/MANIFEST.in
index 501657d..f040e5e 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -6,6 +6,7 @@ include CHANGELOG
include LICENSE
include tryton.cfg
include *.xml
+include view/*.xml
include *.odt
include locale/*.po
include doc/*
diff --git a/PKG-INFO b/PKG-INFO
index a38a3d5..aa102f8 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
Name: trytond_stock_lot
-Version: 2.6.0
+Version: 2.8.0
Summary: Tryton module for lot of products
Home-page: http://www.tryton.org/
Author: Tryton
Author-email: UNKNOWN
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.6/
+Download-URL: http://downloads.tryton.org/2.8/
Description: trytond_stock_lot
=================
@@ -53,6 +53,7 @@ Classifier: Intended Audience :: Legal Industry
Classifier: Intended Audience :: Manufacturing
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
Classifier: Natural Language :: Bulgarian
+Classifier: Natural Language :: Catalan
Classifier: Natural Language :: Czech
Classifier: Natural Language :: Dutch
Classifier: Natural Language :: English
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
index c1368b5..75605bb 100644
--- a/locale/bg_BG.po
+++ b/locale/bg_BG.po
@@ -3,8 +3,8 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:stock.move:"
-msgid "Lot is required for move of product \"%s\"!"
-msgstr "За движение на прокудт \"%s\" е неоходима партида!"
+msgid "Lot is required for move of product \"%s\"."
+msgstr ""
msgctxt "field:product.template,lot_required:"
msgid "Lot Required"
@@ -158,6 +158,11 @@ msgctxt "view:product.product:"
msgid "Lots"
msgstr "Партиди"
+#, fuzzy
+msgctxt "view:product.template:"
+msgid "Lots"
+msgstr "Партиди"
+
msgctxt "view:stock.lot:"
msgid "Lot"
msgstr "Партида"
diff --git a/locale/ca_ES.po b/locale/ca_ES.po
index 8120692..65b0bda 100644
--- a/locale/ca_ES.po
+++ b/locale/ca_ES.po
@@ -3,194 +3,169 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:stock.move:"
-msgid "Lot is required for move of product \"%s\"!"
-msgstr ""
+msgid "Lot is required for move of product \"%s\"."
+msgstr "El lot es requerit pel moviment del producte \"%s\"."
msgctxt "field:product.template,lot_required:"
msgid "Lot Required"
-msgstr ""
+msgstr "Lot obligatori"
-#, fuzzy
msgctxt "field:product.template-stock.lot.type,create_date:"
msgid "Create Date"
msgstr "Data creació"
-#, fuzzy
msgctxt "field:product.template-stock.lot.type,create_uid:"
msgid "Create User"
msgstr "Usuari creació"
-#, fuzzy
msgctxt "field:product.template-stock.lot.type,id:"
msgid "ID"
msgstr "ID"
-#, fuzzy
msgctxt "field:product.template-stock.lot.type,rec_name:"
msgid "Name"
msgstr "Nom"
-#, fuzzy
msgctxt "field:product.template-stock.lot.type,template:"
msgid "Template"
msgstr "Plantilla"
-#, fuzzy
msgctxt "field:product.template-stock.lot.type,type:"
msgid "Type"
msgstr "Tipus"
-#, fuzzy
msgctxt "field:product.template-stock.lot.type,write_date:"
msgid "Write Date"
msgstr "Data modificació"
-#, fuzzy
msgctxt "field:product.template-stock.lot.type,write_uid:"
msgid "Write User"
msgstr "Usuari modificació"
-#, fuzzy
msgctxt "field:stock.lot,create_date:"
msgid "Create Date"
msgstr "Data creació"
-#, fuzzy
msgctxt "field:stock.lot,create_uid:"
msgid "Create User"
msgstr "Usuari creació"
-#, fuzzy
msgctxt "field:stock.lot,id:"
msgid "ID"
msgstr "ID"
-#, fuzzy
msgctxt "field:stock.lot,number:"
msgid "Number"
msgstr "Número"
-#, fuzzy
msgctxt "field:stock.lot,product:"
msgid "Product"
msgstr "Productes"
-#, fuzzy
msgctxt "field:stock.lot,rec_name:"
msgid "Name"
msgstr "Nom"
-#, fuzzy
msgctxt "field:stock.lot,write_date:"
msgid "Write Date"
msgstr "Data modificació"
-#, fuzzy
msgctxt "field:stock.lot,write_uid:"
msgid "Write User"
msgstr "Usuari modificació"
-#, fuzzy
msgctxt "field:stock.lot.type,code:"
msgid "Code"
msgstr "Codi"
-#, fuzzy
msgctxt "field:stock.lot.type,create_date:"
msgid "Create Date"
msgstr "Data creació"
-#, fuzzy
msgctxt "field:stock.lot.type,create_uid:"
msgid "Create User"
msgstr "Usuari creació"
-#, fuzzy
msgctxt "field:stock.lot.type,id:"
msgid "ID"
msgstr "ID"
-#, fuzzy
msgctxt "field:stock.lot.type,name:"
msgid "Name"
msgstr "Nom"
-#, fuzzy
msgctxt "field:stock.lot.type,rec_name:"
msgid "Name"
msgstr "Nom"
-#, fuzzy
msgctxt "field:stock.lot.type,write_date:"
msgid "Write Date"
msgstr "Data modificació"
-#, fuzzy
msgctxt "field:stock.lot.type,write_uid:"
msgid "Write User"
msgstr "Usuari modificació"
msgctxt "field:stock.move,lot:"
msgid "Lot"
-msgstr ""
+msgstr "Lot"
msgctxt "help:product.template,lot_required:"
msgid "The type of location for which lot is required"
-msgstr ""
+msgstr "Tipus d'ubicació per la qual el lot és obligatori"
msgctxt "model:ir.action,name:act_lot_form"
msgid "Lots"
-msgstr ""
+msgstr "Lots"
msgctxt "model:ir.ui.menu,name:menu_lot_form"
msgid "Lots"
-msgstr ""
+msgstr "Lots"
msgctxt "model:product.template-stock.lot.type,name:"
msgid "Template - Stock Lot Type"
-msgstr ""
+msgstr "Plantilla - Tipus de lot"
msgctxt "model:stock.lot,name:"
msgid "Stock Lot"
-msgstr ""
+msgstr "Lot"
msgctxt "model:stock.lot.type,name:"
msgid "Stock Lot Type"
-msgstr ""
+msgstr "Tipus de lot"
-#, fuzzy
msgctxt "model:stock.lot.type,name:type_customer"
msgid "Customer"
msgstr "Client"
-#, fuzzy
msgctxt "model:stock.lot.type,name:type_lost_found"
msgid "Lost and Found"
msgstr "Perdut/trobat"
-#, fuzzy
msgctxt "model:stock.lot.type,name:type_production"
msgid "Production"
msgstr "Producció"
-#, fuzzy
msgctxt "model:stock.lot.type,name:type_storage"
msgid "Storage"
-msgstr "Magatzem"
+msgstr "Emmagatzemament"
-#, fuzzy
msgctxt "model:stock.lot.type,name:type_supplier"
msgid "Supplier"
msgstr "Proveïdor"
msgctxt "view:product.product:"
msgid "Lots"
-msgstr ""
+msgstr "Lots"
+
+msgctxt "view:product.template:"
+msgid "Lots"
+msgstr "Lots"
msgctxt "view:stock.lot:"
msgid "Lot"
-msgstr ""
+msgstr "Lot"
msgctxt "view:stock.lot:"
msgid "Lots"
-msgstr ""
+msgstr "Lots"
diff --git a/locale/cs_CZ.po b/locale/cs_CZ.po
index 8583d0f..837c670 100644
--- a/locale/cs_CZ.po
+++ b/locale/cs_CZ.po
@@ -3,7 +3,7 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:stock.move:"
-msgid "Lot is required for move of product \"%s\"!"
+msgid "Lot is required for move of product \"%s\"."
msgstr ""
msgctxt "field:product.template,lot_required:"
@@ -159,6 +159,10 @@ msgctxt "view:product.product:"
msgid "Lots"
msgstr ""
+msgctxt "view:product.template:"
+msgid "Lots"
+msgstr ""
+
#, fuzzy
msgctxt "view:stock.lot:"
msgid "Lot"
diff --git a/locale/de_DE.po b/locale/de_DE.po
index 40d6979..291ccb7 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -3,8 +3,8 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:stock.move:"
-msgid "Lot is required for move of product \"%s\"!"
-msgstr "Chargen-Nummer ist erforderlich für Lagerbewegung von Artikel \"%s\"!"
+msgid "Lot is required for move of product \"%s\"."
+msgstr "Chargen-Nummer erforderlich für Lagerbewegung von Artikel \"%s\"."
msgctxt "field:product.template,lot_required:"
msgid "Lot Required"
@@ -112,7 +112,7 @@ msgstr "Charge"
msgctxt "help:product.template,lot_required:"
msgid "The type of location for which lot is required"
-msgstr "Typ Lagerort, für den eine Chargen-Nummer erforderlich ist"
+msgstr "Typ des Lagerorts, für den eine Chargen-Nummer erforderlich ist"
msgctxt "model:ir.action,name:act_lot_form"
msgid "Lots"
@@ -158,6 +158,10 @@ msgctxt "view:product.product:"
msgid "Lots"
msgstr "Chargen"
+msgctxt "view:product.template:"
+msgid "Lots"
+msgstr "Chargen"
+
msgctxt "view:stock.lot:"
msgid "Lot"
msgstr "Charge"
diff --git a/locale/es_AR.po b/locale/es_AR.po
index 8c84060..36350f3 100644
--- a/locale/es_AR.po
+++ b/locale/es_AR.po
@@ -3,8 +3,8 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:stock.move:"
-msgid "Lot is required for move of product \"%s\"!"
-msgstr "¡El lote es requerido para mover el producto «%s»! "
+msgid "Lot is required for move of product \"%s\"."
+msgstr "El lote es requerido para el movimiento del producto «%s»."
msgctxt "field:product.template,lot_required:"
msgid "Lot Required"
@@ -112,7 +112,7 @@ msgstr "Lote"
msgctxt "help:product.template,lot_required:"
msgid "The type of location for which lot is required"
-msgstr "El tipo de locación para la cual el lote es requerido"
+msgstr "El tipo de ubicación para la cual el lote es requerido"
msgctxt "model:ir.action,name:act_lot_form"
msgid "Lots"
@@ -124,15 +124,15 @@ msgstr "Lotes"
msgctxt "model:product.template-stock.lot.type,name:"
msgid "Template - Stock Lot Type"
-msgstr "Plantilla - Tipo de Lote de Inventario"
+msgstr "Plantilla - Tipo de lote de inventario"
msgctxt "model:stock.lot,name:"
msgid "Stock Lot"
-msgstr "Lote de Inventario"
+msgstr "Lote de inventario"
msgctxt "model:stock.lot.type,name:"
msgid "Stock Lot Type"
-msgstr "Tipo de Lote de Inventario"
+msgstr "Tipo de lote de inventario"
msgctxt "model:stock.lot.type,name:type_customer"
msgid "Customer"
@@ -148,7 +148,7 @@ msgstr "Producción"
msgctxt "model:stock.lot.type,name:type_storage"
msgid "Storage"
-msgstr "Almacén"
+msgstr "Depósito"
msgctxt "model:stock.lot.type,name:type_supplier"
msgid "Supplier"
@@ -158,6 +158,10 @@ msgctxt "view:product.product:"
msgid "Lots"
msgstr "Lotes"
+msgctxt "view:product.template:"
+msgid "Lots"
+msgstr "Lotes"
+
msgctxt "view:stock.lot:"
msgid "Lot"
msgstr "Lote"
diff --git a/locale/es_CO.po b/locale/es_CO.po
index d6c1a6c..22e48cd 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -3,8 +3,8 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:stock.move:"
-msgid "Lot is required for move of product \"%s\"!"
-msgstr "El lote es requerido para mover el producto \"%s\"! "
+msgid "Lot is required for move of product \"%s\"."
+msgstr ""
msgctxt "field:product.template,lot_required:"
msgid "Lot Required"
@@ -24,7 +24,7 @@ msgstr "ID"
msgctxt "field:product.template-stock.lot.type,rec_name:"
msgid "Name"
-msgstr "Nombre del campo"
+msgstr "Nombre"
msgctxt "field:product.template-stock.lot.type,template:"
msgid "Template"
@@ -36,7 +36,7 @@ msgstr "Tipo"
msgctxt "field:product.template-stock.lot.type,write_date:"
msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Fecha de Modificación"
msgctxt "field:product.template-stock.lot.type,write_uid:"
msgid "Write User"
@@ -96,7 +96,7 @@ msgstr "Nombre"
msgctxt "field:stock.lot.type,rec_name:"
msgid "Name"
-msgstr "Nombre del campo"
+msgstr "Nombre"
msgctxt "field:stock.lot.type,write_date:"
msgid "Write Date"
@@ -112,7 +112,7 @@ msgstr "Lote"
msgctxt "help:product.template,lot_required:"
msgid "The type of location for which lot is required"
-msgstr "El tipo de locación para la cual el lote es requerido"
+msgstr "El tipo de bodega para la cual el lote es requerido"
msgctxt "model:ir.action,name:act_lot_form"
msgid "Lots"
@@ -124,7 +124,7 @@ msgstr "Lotes"
msgctxt "model:product.template-stock.lot.type,name:"
msgid "Template - Stock Lot Type"
-msgstr "Plantilla - Tipo de Lote de Inventario"
+msgstr "Plantilla - Tipo Lote de Inventario"
msgctxt "model:stock.lot,name:"
msgid "Stock Lot"
@@ -158,6 +158,11 @@ msgctxt "view:product.product:"
msgid "Lots"
msgstr "Lotes"
+#, fuzzy
+msgctxt "view:product.template:"
+msgid "Lots"
+msgstr "Lotes"
+
msgctxt "view:stock.lot:"
msgid "Lot"
msgstr "Lote"
diff --git a/locale/es_ES.po b/locale/es_ES.po
index ac84f24..9341b02 100644
--- a/locale/es_ES.po
+++ b/locale/es_ES.po
@@ -3,7 +3,7 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:stock.move:"
-msgid "Lot is required for move of product \"%s\"!"
+msgid "Lot is required for move of product \"%s\"."
msgstr "El lote es requerido para el movimiento del producto \"%s\"."
msgctxt "field:product.template,lot_required:"
@@ -158,6 +158,10 @@ msgctxt "view:product.product:"
msgid "Lots"
msgstr "Lotes"
+msgctxt "view:product.template:"
+msgid "Lots"
+msgstr "Lotes"
+
msgctxt "view:stock.lot:"
msgid "Lot"
msgstr "Lote"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
index b2fbf91..fe63cbb 100644
--- a/locale/fr_FR.po
+++ b/locale/fr_FR.po
@@ -3,8 +3,8 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:stock.move:"
-msgid "Lot is required for move of product \"%s\"!"
-msgstr "Un lot est requis pour les mouvements du produit \"%s\""
+msgid "Lot is required for move of product \"%s\"."
+msgstr "Un lot est requis pour les mouvements du produit \"%s\"."
msgctxt "field:product.template,lot_required:"
msgid "Lot Required"
@@ -158,6 +158,10 @@ msgctxt "view:product.product:"
msgid "Lots"
msgstr "Lots"
+msgctxt "view:product.template:"
+msgid "Lots"
+msgstr "Lots"
+
msgctxt "view:stock.lot:"
msgid "Lot"
msgstr "Lot"
diff --git a/locale/nl_NL.po b/locale/nl_NL.po
index 3711f76..c05fb75 100644
--- a/locale/nl_NL.po
+++ b/locale/nl_NL.po
@@ -3,7 +3,7 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:stock.move:"
-msgid "Lot is required for move of product \"%s\"!"
+msgid "Lot is required for move of product \"%s\"."
msgstr ""
msgctxt "field:product.template,lot_required:"
@@ -170,6 +170,10 @@ msgctxt "view:product.product:"
msgid "Lots"
msgstr ""
+msgctxt "view:product.template:"
+msgid "Lots"
+msgstr ""
+
#, fuzzy
msgctxt "view:stock.lot:"
msgid "Lot"
diff --git a/locale/ru_RU.po b/locale/ru_RU.po
index 3fd080c..fc117d6 100644
--- a/locale/ru_RU.po
+++ b/locale/ru_RU.po
@@ -3,62 +3,72 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:stock.move:"
-msgid "Lot is required for move of product \"%s\"!"
+msgid "Lot is required for move of product \"%s\"."
msgstr ""
msgctxt "field:product.template,lot_required:"
msgid "Lot Required"
msgstr ""
+#, fuzzy
msgctxt "field:product.template-stock.lot.type,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Дата создания"
+#, fuzzy
msgctxt "field:product.template-stock.lot.type,create_uid:"
msgid "Create User"
-msgstr ""
+msgstr "Создано пользователем"
+#, fuzzy
msgctxt "field:product.template-stock.lot.type,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
#, fuzzy
msgctxt "field:product.template-stock.lot.type,rec_name:"
msgid "Name"
msgstr "Наименование"
+#, fuzzy
msgctxt "field:product.template-stock.lot.type,template:"
msgid "Template"
-msgstr ""
+msgstr "Шаблон"
#, fuzzy
msgctxt "field:product.template-stock.lot.type,type:"
msgid "Type"
msgstr "Тип"
+#, fuzzy
msgctxt "field:product.template-stock.lot.type,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Дата изменения"
+#, fuzzy
msgctxt "field:product.template-stock.lot.type,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Изменено пользователем"
+#, fuzzy
msgctxt "field:stock.lot,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Дата создания"
+#, fuzzy
msgctxt "field:stock.lot,create_uid:"
msgid "Create User"
-msgstr ""
+msgstr "Создано пользователем"
+#, fuzzy
msgctxt "field:stock.lot,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
+#, fuzzy
msgctxt "field:stock.lot,number:"
msgid "Number"
-msgstr ""
+msgstr "Номер"
#, fuzzy
msgctxt "field:stock.lot,product:"
@@ -70,30 +80,35 @@ msgctxt "field:stock.lot,rec_name:"
msgid "Name"
msgstr "Наименование"
+#, fuzzy
msgctxt "field:stock.lot,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Дата изменения"
+#, fuzzy
msgctxt "field:stock.lot,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Изменено пользователем"
#, fuzzy
msgctxt "field:stock.lot.type,code:"
msgid "Code"
msgstr "Код страны"
+#, fuzzy
msgctxt "field:stock.lot.type,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Дата создания"
+#, fuzzy
msgctxt "field:stock.lot.type,create_uid:"
msgid "Create User"
-msgstr ""
+msgstr "Создано пользователем"
+#, fuzzy
msgctxt "field:stock.lot.type,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
#, fuzzy
msgctxt "field:stock.lot.type,name:"
@@ -105,13 +120,15 @@ msgctxt "field:stock.lot.type,rec_name:"
msgid "Name"
msgstr "Наименование"
+#, fuzzy
msgctxt "field:stock.lot.type,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Дата изменения"
+#, fuzzy
msgctxt "field:stock.lot.type,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Изменено пользователем"
msgctxt "field:stock.move,lot:"
msgid "Lot"
@@ -170,6 +187,10 @@ msgctxt "view:product.product:"
msgid "Lots"
msgstr ""
+msgctxt "view:product.template:"
+msgid "Lots"
+msgstr ""
+
msgctxt "view:stock.lot:"
msgid "Lot"
msgstr ""
diff --git a/product.xml b/product.xml
index 7137702..70184cd 100644
--- a/product.xml
+++ b/product.xml
@@ -3,22 +3,10 @@
this repository contains the full copyright notices and license terms. -->
<tryton>
<data>
- <record model="ir.ui.view" id="product_view_form">
- <field name="model">product.product</field>
- <field name="inherit" ref="product.product_view_form"/>
- <field name="arch" type="xml">
- <![CDATA[
- <data>
- <xpath expr="/form/notebook/page[@id='general']"
- position="after">
- <page string="Lots" id="lots"
- states="{'invisible': ~Eval('type').in_(['goods', 'assets'])}">
- <field name="lot_required" colspan="4"/>
- </page>
- </xpath>
- </data>
- ]]>
- </field>
+ <record model="ir.ui.view" id="template_view_form">
+ <field name="model">product.template</field>
+ <field name="inherit" ref="product.template_view_form"/>
+ <field name="name">template_form</field>
</record>
</data>
</tryton>
diff --git a/setup.py b/setup.py
index 5523a8e..46abc2d 100644
--- a/setup.py
+++ b/setup.py
@@ -25,10 +25,10 @@ requires = []
for dep in info.get('depends', []):
if not re.match(r'(ir|res|webdav)(\W|$)', dep):
requires.append('trytond_%s >= %s.%s, < %s.%s' %
- (dep, major_version, minor_version, major_version,
- minor_version + 1))
+ (dep, major_version, minor_version, major_version,
+ minor_version + 1))
requires.append('trytond >= %s.%s, < %s.%s' %
- (major_version, minor_version, major_version, minor_version + 1))
+ (major_version, minor_version, major_version, minor_version + 1))
tests_require = ['proteus >= %s.%s, < %s.%s' %
(major_version, minor_version, major_version, minor_version + 1)]
@@ -38,17 +38,16 @@ setup(name='trytond_stock_lot',
long_description=read('README'),
author='Tryton',
url='http://www.tryton.org/',
- download_url="http://downloads.tryton.org/" + \
- info.get('version', '0.0.1').rsplit('.', 1)[0] + '/',
+ download_url=("http://downloads.tryton.org/" +
+ info.get('version', '0.0.1').rsplit('.', 1)[0] + '/'),
package_dir={'trytond.modules.stock_lot': '.'},
packages=[
'trytond.modules.stock_lot',
'trytond.modules.stock_lot.tests',
],
package_data={
- 'trytond.modules.stock_lot': info.get('xml', []) \
- + ['tryton.cfg', 'locale/*.po', '*.odt', 'icons/*.svg',
- 'tests/*.rst'],
+ 'trytond.modules.stock_lot': (info.get('xml', [])
+ + ['tryton.cfg', 'view/*.xml', 'locale/*.po', 'tests/*.rst']),
},
classifiers=[
'Development Status :: 5 - Production/Stable',
@@ -60,6 +59,7 @@ setup(name='trytond_stock_lot',
'Intended Audience :: Manufacturing',
'License :: OSI Approved :: GNU General Public License (GPL)',
'Natural Language :: Bulgarian',
+ 'Natural Language :: Catalan',
'Natural Language :: Czech',
'Natural Language :: Dutch',
'Natural Language :: English',
diff --git a/stock.py b/stock.py
index 3a9bfb1..73bdc51 100644
--- a/stock.py
+++ b/stock.py
@@ -39,7 +39,7 @@ class Move:
def __setup__(cls):
super(Move, cls).__setup__()
cls._error_messages.update({
- 'lot_required': 'Lot is required for move of product "%s"!',
+ 'lot_required': 'Lot is required for move of product "%s".',
})
@classmethod
@@ -47,16 +47,17 @@ class Move:
"Check if lot is required"
for move in moves:
if (move.state == 'done'
+ and move.internal_quantity
and not move.lot
and move.product.lot_is_required(
move.from_location, move.to_location)):
cls.raise_user_error('lot_required', (move.product.rec_name,))
@classmethod
- def create(cls, values):
- move = super(Move, cls).create(values)
- cls.check_lot([move])
- return move
+ def create(cls, vlist):
+ moves = super(Move, cls).create(vlist)
+ cls.check_lot(moves)
+ return moves
@classmethod
def write(cls, moves, values):
@@ -69,10 +70,10 @@ class ShipmentIn:
@classmethod
def _get_inventory_moves(cls, incoming_move):
- result = super(ShipmentIn, cls)._get_inventory_moves(incoming_move)
- if result and incoming_move.lot:
- result['lot'] = incoming_move.lot.id
- return result
+ move = super(ShipmentIn, cls)._get_inventory_moves(incoming_move)
+ if move and incoming_move.lot:
+ move.lot = incoming_move.lot
+ return move
class ShipmentOut:
@@ -89,10 +90,7 @@ class ShipmentOut:
super(ShipmentOut, cls).pack(shipments)
# Unassign move to allow update
- Move.write([m for s in shipments for m in s.outgoing_moves
- if m.state not in ('done', 'cancel')], {
- 'state': 'draft',
- })
+ Move.draft([m for s in shipments for m in s.outgoing_moves])
for shipment in shipments:
outgoing_by_product = {}
@@ -123,10 +121,7 @@ class ShipmentOut:
quantity -= out_quantity
assert quantity <= 0
- Move.write([m for s in shipments for m in s.outgoing_moves
- if m.state != 'cancel'], {
- 'state': 'assigned',
- })
+ Move.assign([m for s in shipments for m in s.outgoing_moves])
class ShipmentOutReturn:
@@ -134,8 +129,8 @@ class ShipmentOutReturn:
@classmethod
def _get_inventory_moves(cls, incoming_move):
- result = super(ShipmentOutReturn,
+ move = super(ShipmentOutReturn,
cls)._get_inventory_moves(incoming_move)
- if result and incoming_move.lot:
- result['lot'] = incoming_move.lot.id
- return result
+ if move and incoming_move.lot:
+ move.lot = incoming_move.lot
+ return move
diff --git a/stock.xml b/stock.xml
index 612080c..e7b2d80 100644
--- a/stock.xml
+++ b/stock.xml
@@ -6,29 +6,13 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.ui.view" id="lot_view_form">
<field name="model">stock.lot</field>
<field name="type">form</field>
- <field name="arch" type="xml">
- <![CDATA[
- <form string="Lot">
- <label name="number"/>
- <field name="number"/>
- <label name="product"/>
- <field name="product"/>
- </form>
- ]]>
- </field>
+ <field name="name">lot_form</field>
</record>
<record model="ir.ui.view" id="lot_view_tree">
<field name="model">stock.lot</field>
<field name="type">tree</field>
- <field name="arch" type="xml">
- <![CDATA[
- <tree string="Lots">
- <field name="number"/>
- <field name="product"/>
- </tree>
- ]]>
- </field>
+ <field name="name">lot_tree</field>
</record>
<record model="ir.action.act_window" id="act_lot_form">
@@ -97,33 +81,13 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.ui.view" id="move_view_form">
<field name="model">stock.move</field>
<field name="inherit" ref="stock.move_view_form"/>
- <field name="arch" type="xml">
- <![CDATA[
- <data>
- <xpath expr="/form/field[@name='company']"
- position="after">
- <label name="lot"/>
- <field name="lot"/>
- <newline/>
- </xpath>
- </data>
- ]]>
- </field>
+ <field name="name">move_form</field>
</record>
<record model="ir.ui.view" id="move_view_tree">
<field name="model">stock.move</field>
<field name="inherit" ref="stock.move_view_tree"/>
- <field name="arch" type="xml">
- <![CDATA[
- <data>
- <xpath expr="/tree/field[@name='product']"
- position="after">
- <field name="lot"/>
- </xpath>
- </data>
- ]]>
- </field>
+ <field name="name">move_tree</field>
</record>
</data>
diff --git a/tests/scenario_stock_lot_shipment_out.rst b/tests/scenario_stock_lot_shipment_out.rst
index ab7cfca..8a8b2e2 100644
--- a/tests/scenario_stock_lot_shipment_out.rst
+++ b/tests/scenario_stock_lot_shipment_out.rst
@@ -31,10 +31,13 @@ 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
- >>> company.name = 'B2CK'
+ >>> party = Party(name='B2CK')
+ >>> party.save()
+ >>> company.party = party
>>> currencies = Currency.find([('code', '=', 'EUR')])
>>> if not currencies:
... currency = Currency(name='Euro', symbol=u'€', code='EUR',
@@ -63,14 +66,18 @@ Create customer::
Create product::
>>> ProductUom = Model.get('product.uom')
+ >>> ProductTemplate = Model.get('product.template')
>>> Product = Model.get('product.product')
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
>>> product = Product()
- >>> product.name = 'Product'
- >>> product.default_uom = unit
- >>> product.type = 'goods'
- >>> product.list_price = Decimal('20')
- >>> product.cost_price = Decimal('8')
+ >>> 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::
diff --git a/tryton.cfg b/tryton.cfg
index c26f57d..1d48d02 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
[tryton]
-version=2.6.0
+version=2.8.0
depends:
ir
product
diff --git a/trytond_stock_lot.egg-info/PKG-INFO b/trytond_stock_lot.egg-info/PKG-INFO
index f3cce79..1d54c97 100644
--- a/trytond_stock_lot.egg-info/PKG-INFO
+++ b/trytond_stock_lot.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
Name: trytond-stock-lot
-Version: 2.6.0
+Version: 2.8.0
Summary: Tryton module for lot of products
Home-page: http://www.tryton.org/
Author: Tryton
Author-email: UNKNOWN
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.6/
+Download-URL: http://downloads.tryton.org/2.8/
Description: trytond_stock_lot
=================
@@ -53,6 +53,7 @@ Classifier: Intended Audience :: Legal Industry
Classifier: Intended Audience :: Manufacturing
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
Classifier: Natural Language :: Bulgarian
+Classifier: Natural Language :: Catalan
Classifier: Natural Language :: Czech
Classifier: Natural Language :: Dutch
Classifier: Natural Language :: English
diff --git a/trytond_stock_lot.egg-info/SOURCES.txt b/trytond_stock_lot.egg-info/SOURCES.txt
index aeda6a6..5b81fd1 100644
--- a/trytond_stock_lot.egg-info/SOURCES.txt
+++ b/trytond_stock_lot.egg-info/SOURCES.txt
@@ -31,4 +31,9 @@ trytond_stock_lot.egg-info/dependency_links.txt
trytond_stock_lot.egg-info/entry_points.txt
trytond_stock_lot.egg-info/not-zip-safe
trytond_stock_lot.egg-info/requires.txt
-trytond_stock_lot.egg-info/top_level.txt
\ No newline at end of file
+trytond_stock_lot.egg-info/top_level.txt
+view/lot_form.xml
+view/lot_tree.xml
+view/move_form.xml
+view/move_tree.xml
+view/template_form.xml
\ No newline at end of file
diff --git a/trytond_stock_lot.egg-info/requires.txt b/trytond_stock_lot.egg-info/requires.txt
index 2480e97..eb4aa19 100644
--- a/trytond_stock_lot.egg-info/requires.txt
+++ b/trytond_stock_lot.egg-info/requires.txt
@@ -1,3 +1,3 @@
-trytond_product >= 2.6, < 2.7
-trytond_stock >= 2.6, < 2.7
-trytond >= 2.6, < 2.7
\ No newline at end of file
+trytond_product >= 2.8, < 2.9
+trytond_stock >= 2.8, < 2.9
+trytond >= 2.8, < 2.9
\ No newline at end of file
diff --git a/view/lot_form.xml b/view/lot_form.xml
new file mode 100644
index 0000000..4a57473
--- /dev/null
+++ b/view/lot_form.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<form string="Lot">
+ <label name="number"/>
+ <field name="number"/>
+ <label name="product"/>
+ <field name="product"/>
+</form>
diff --git a/view/lot_tree.xml b/view/lot_tree.xml
new file mode 100644
index 0000000..d721d9c
--- /dev/null
+++ b/view/lot_tree.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<tree string="Lots">
+ <field name="number"/>
+ <field name="product"/>
+</tree>
diff --git a/view/move_form.xml b/view/move_form.xml
new file mode 100644
index 0000000..dc45fe4
--- /dev/null
+++ b/view/move_form.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<data>
+ <xpath expr="/form/field[@name='company']" position="after">
+ <label name="lot"/>
+ <field name="lot"/>
+ <newline/>
+ </xpath>
+</data>
diff --git a/view/move_tree.xml b/view/move_tree.xml
new file mode 100644
index 0000000..0d6460f
--- /dev/null
+++ b/view/move_tree.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<data>
+ <xpath expr="/tree/field[@name='product']" position="after">
+ <field name="lot"/>
+ </xpath>
+</data>
diff --git a/view/template_form.xml b/view/template_form.xml
new file mode 100644
index 0000000..df0c3f5
--- /dev/null
+++ b/view/template_form.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<data>
+ <xpath expr="/form/notebook/page[@id='general']" position="after">
+ <page string="Lots" id="lots"
+ states="{'invisible': ~Eval('type').in_(['goods', 'assets'])}">
+ <field name="lot_required" colspan="4"/>
+ </page>
+ </xpath>
+</data>
--
tryton-modules-stock-lot
More information about the tryton-debian-vcs
mailing list