[tryton-debian-vcs] tryton-modules-stock-lot branch debian created. af4124ec1fca10997b8b256c3fbb8ccc6b213451

Mathias Behrle tryton-debian-vcs at alioth.debian.org
Wed Nov 27 17:11:14 UTC 2013


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-lot.git;a=commitdiff;h=af4124ec1fca10997b8b256c3fbb8ccc6b213451
commit af4124ec1fca10997b8b256c3fbb8ccc6b213451
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Nov 25 20:30:37 2013 +0100

    Releasing debian version 3.0.0-1.

diff --git a/debian/changelog b/debian/changelog
index 6bb21b0..bd7e680 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+tryton-modules-stock-lot (3.0.0-1) unstable; urgency=low
+
+  * Merging upstream version 3.0.0.
+  * Updating to standards version 3.9.5, no changes needed.
+  * Changing to buildsystem pybuild.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Mon, 25 Nov 2013 17:55:32 +0100
+
 tryton-modules-stock-lot (2.8.0-3) unstable; urgency=low
 
   * Adapting the rules file to work also with git-buildpackage.
commit cc35ba225cb5dfbe97d6304fc659bfdbfae99a60
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sun Nov 24 19:51:52 2013 +0100

    Changing to buildsystem pybuild.

diff --git a/debian/control b/debian/control
index d5b6298..62cb226 100644
--- a/debian/control
+++ b/debian/control
@@ -3,7 +3,8 @@ Section: python
 Priority: optional
 Maintainer: Debian Tryton Maintainers <maintainers at debian.tryton.org>
 Uploaders: Mathias Behrle <mathiasb at m9s.biz>
-Build-Depends: debhelper (>= 9), python (>= 2.6.6-3~), python-setuptools
+Build-Depends:
+ debhelper (>= 9), python (>= 2.6.6-3~), python-setuptools, dh-python
 Standards-Version: 3.9.5
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://debian.tryton.org/gitweb/?p=packages/tryton-modules-stock-lot.git
diff --git a/debian/rules b/debian/rules
index 30074ad..5b8c326 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,24 +1,17 @@
 #!/usr/bin/make -f
 
-MAJOR := $(shell python setup.py --version | awk -F "." '{print $$1 "." $$2}')
-PACKAGE_NAME := $(shell python setup.py --name)
-
-%:
-	dh ${@} --with python2
+# needed for pbuilder
+export LC_ALL=C.UTF-8
 
-override_dh_auto_clean:
-	dh_auto_clean
+MAJOR := $(shell python setup.py --version | awk -F "." '{print $$1 "." $$2}')
+PACKAGE_NAME := tryton-modules-$(shell python setup.py --name | sed s/^trytond_// | sed s/_/-/g)
+export PYBUILD_DESTDIR_python2=debian/${PACKAGE_NAME}
 
-override_dh_auto_build:
-	mv $(PACKAGE_NAME).egg-info $(PACKAGE_NAME).hen-info
-	mv PKG-INFO PKG-INFO.hen
-	dh_auto_build
+# Don't run tests for Tryton modules, they try to download dependencies from pypi
+export PYBUILD_DISABLE_python2.7=test
 
-override_dh_auto_install:
-	dh_auto_install
-	rm -rf *.egg-info
-	mv $(PACKAGE_NAME).hen-info $(PACKAGE_NAME).egg-info
-	mv PKG-INFO.hen PKG-INFO
+%:
+	dh ${@} --with python2 --buildsystem=pybuild
 
 override_dh_gencontrol:
 	dh_gencontrol -- -Vversion:major="$(MAJOR)"
commit d0be450c4672fc074defaa735065d97889d9be4b
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sun Nov 24 19:14:21 2013 +0100

    Updating to standards version 3.9.5, no changes needed.

diff --git a/debian/control b/debian/control
index ec17eea..d5b6298 100644
--- a/debian/control
+++ b/debian/control
@@ -4,7 +4,7 @@ Priority: optional
 Maintainer: Debian Tryton Maintainers <maintainers at debian.tryton.org>
 Uploaders: Mathias Behrle <mathiasb at m9s.biz>
 Build-Depends: debhelper (>= 9), python (>= 2.6.6-3~), python-setuptools
-Standards-Version: 3.9.4
+Standards-Version: 3.9.5
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://debian.tryton.org/gitweb/?p=packages/tryton-modules-stock-lot.git
 Vcs-Git: git://debian.tryton.org/packages/tryton-modules-stock-lot.git
commit e0bf19d162dec9a717b1f1b7c24ab04c775c240e
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sun Nov 24 17:28:27 2013 +0100

    Merging 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 74e71f768a4401ce8a8165996625aed087a96623
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Aug 6 16:21:13 2013 +0200

    Releasing debian version 2.8.0-3.

diff --git a/debian/changelog b/debian/changelog
index b67b110..6bb21b0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-modules-stock-lot (2.8.0-3) unstable; urgency=low
+
+  * Adapting the rules file to work also with git-buildpackage.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Tue, 06 Aug 2013 13:33:38 +0200
+
 tryton-modules-stock-lot (2.8.0-2) unstable; urgency=low
 
   * Moving doc/index.rst to appropriate subdirectory doc.
commit c608a23701b0a89845eaf1735592e2e5929f4ab2
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Aug 5 18:06:36 2013 +0200

    Adapting the rules file to work also with git-buildpackage.

diff --git a/debian/rules b/debian/rules
index a6a1fb8..30074ad 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,13 +1,24 @@
 #!/usr/bin/make -f
 
 MAJOR := $(shell python setup.py --version | awk -F "." '{print $$1 "." $$2}')
+PACKAGE_NAME := $(shell python setup.py --name)
 
 %:
 	dh ${@} --with python2
 
 override_dh_auto_clean:
 	dh_auto_clean
+
+override_dh_auto_build:
+	mv $(PACKAGE_NAME).egg-info $(PACKAGE_NAME).hen-info
+	mv PKG-INFO PKG-INFO.hen
+	dh_auto_build
+
+override_dh_auto_install:
+	dh_auto_install
 	rm -rf *.egg-info
+	mv $(PACKAGE_NAME).hen-info $(PACKAGE_NAME).egg-info
+	mv PKG-INFO.hen PKG-INFO
 
 override_dh_gencontrol:
 	dh_gencontrol -- -Vversion:major="$(MAJOR)"
commit 954bfa8387f6c74e47aec12c39e1c4cf6f1557f3
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Fri May 31 19:57:36 2013 +0200

    Releasing debian version 2.8.0-2.

diff --git a/debian/changelog b/debian/changelog
index bd208ae..b67b110 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+tryton-modules-stock-lot (2.8.0-2) unstable; urgency=low
+
+  * Moving doc/index.rst to appropriate subdirectory doc.
+  * Simplifying package layout by renaming <pkg_name>.docs to docs.
+  * Removing needless empty line in rules.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Fri, 31 May 2013 17:27:25 +0200
+
 tryton-modules-stock-lot (2.8.0-1) experimental; urgency=low
 
   * Merging upstream version 2.8.0.
commit 04729f609ec6e3faedf12155c51a8df4d12aaa5d
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Wed May 29 17:19:30 2013 +0200

    Removing needless empty line in rules.

diff --git a/debian/rules b/debian/rules
index 0f63ab4..a6a1fb8 100755
--- a/debian/rules
+++ b/debian/rules
@@ -7,7 +7,6 @@ MAJOR := $(shell python setup.py --version | awk -F "." '{print $$1 "." $$2}')
 
 override_dh_auto_clean:
 	dh_auto_clean
-
 	rm -rf *.egg-info
 
 override_dh_gencontrol:
commit c630bf631614e327f33e89d35f2cab5d8332014e
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Wed May 29 16:57:52 2013 +0200

    Simplifying package layout by renaming <pkg_name>.docs to docs.
    
    Thanks to Andreas Tille for this proposal. Since tryton module packages
    will most probably stay simple binary packages this change simplifies the
    package layout.

diff --git a/debian/tryton-modules-stock-lot.docs b/debian/docs
similarity index 100%
rename from debian/tryton-modules-stock-lot.docs
rename to debian/docs
commit d30bd8f1e4e0901c089c358346fe1b8cd682eb49
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue May 14 18:40:52 2013 +0200

    Moving doc/index.rst to appropriate subdirectory doc.

diff --git a/debian/tryton-modules-stock-lot.docs b/debian/tryton-modules-stock-lot.docs
index 172a1f8..a2e6bd4 100644
--- a/debian/tryton-modules-stock-lot.docs
+++ b/debian/tryton-modules-stock-lot.docs
@@ -1 +1 @@
-doc/index.rst
+doc/
commit e214724fa9d4591df25ea20e33f978f76e9ed5c6
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Thu May 2 17:27:13 2013 +0200

    Releasing debian version 2.8.0-1.

diff --git a/debian/changelog b/debian/changelog
index 38d8c37..bd208ae 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+tryton-modules-stock-lot (2.8.0-1) experimental; urgency=low
+
+  * Merging upstream version 2.8.0.
+  * Updating copyright.
+  * First upload to Debian (Closes: #706851).
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Thu, 02 May 2013 15:21:03 +0200
+
 tryton-modules-stock-lot (2.6.0-2) experimental; urgency=low
 
   * Improving update of major version in Depends.
commit b1242024d9cc27f1b26d0b3c3b1ad8ad8ff85f60
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Thu May 2 14:13:11 2013 +0200

    Updating copyright.

diff --git a/debian/copyright b/debian/copyright
index 900682e..629bf50 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,8 +1,8 @@
 Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 
 Files: *
-Copyright: 2012 Cédric Krier
-           2012 B2CK SPRL
+Copyright: 2012-2013 Cédric Krier
+           2012-2013 B2CK SPRL
 License: GPL-3+
 
 Files: debian/*
commit 69ff60a577fe2b11d52284b8e0501cd6d19d8f94
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Thu May 2 00:38:05 2013 +0200

    Merging 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>
commit d38aa0452ea771fa593636c5bc3e5efe8e992b5b
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sat Apr 27 18:44:56 2013 +0200

    Releasing debian version 2.6.0-2.

diff --git a/debian/changelog b/debian/changelog
index 0e8c1b7..38d8c37 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-modules-stock-lot (2.6.0-2) experimental; urgency=low
+
+  * Improving update of major version in Depends.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Sat, 27 Apr 2013 15:09:09 +0200
+
 tryton-modules-stock-lot (2.6.0-1) experimental; urgency=low
 
   * Initial packaging.
commit 25ca85429a59bc35640cbfa618a1df01d17247e2
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sat Apr 27 14:54:48 2013 +0200

    Improving update of major version in Depends.
    
    Pulling the major version for Depends directly from the package version.
    Thanks to Ilya Melnikov for pushing the idea.

diff --git a/debian/control b/debian/control
index a9ef43a..ec17eea 100644
--- a/debian/control
+++ b/debian/control
@@ -13,9 +13,9 @@ X-Python-Version: >= 2.6
 Package: tryton-modules-stock-lot
 Architecture: all
 Depends:
- ${misc:Depends}, ${python:Depends}, tryton-server (>= 2.6),
- tryton-modules-product (>= 2.6), tryton-modules-stock (>= 2.6),
- python-pkg-resources
+ ${misc:Depends}, ${python:Depends}, tryton-server (>= ${version:major}),
+ tryton-modules-product (>= ${version:major}),
+ tryton-modules-stock (>= ${version:major}), python-pkg-resources
 Description: Tryton Application Platform (Stock Lot Module)
  Tryton is a high-level general purpose application platform written in Python
  and using PostgreSQL as database engine. It is the core base of a complete
diff --git a/debian/rules b/debian/rules
index 1ae0776..0f63ab4 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,5 +1,7 @@
 #!/usr/bin/make -f
 
+MAJOR := $(shell python setup.py --version | awk -F "." '{print $$1 "." $$2}')
+
 %:
 	dh ${@} --with python2
 
@@ -8,5 +10,8 @@ override_dh_auto_clean:
 
 	rm -rf *.egg-info
 
+override_dh_gencontrol:
+	dh_gencontrol -- -Vversion:major="$(MAJOR)"
+
 override_dh_builddeb:
 	dh_builddeb -- -Zxz -z9
commit a21c7a280ee3820be2b28e439afca6c55dfdb164
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Apr 23 15:09:25 2013 +0200

    Adding debian version 2.6.0-1.

diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..0e8c1b7
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,5 @@
+tryton-modules-stock-lot (2.6.0-1) experimental; urgency=low
+
+  * Initial packaging.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Tue, 23 Apr 2013 14:36:25 +0200
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..a9ef43a
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,28 @@
+Source: tryton-modules-stock-lot
+Section: python
+Priority: optional
+Maintainer: Debian Tryton Maintainers <maintainers at debian.tryton.org>
+Uploaders: Mathias Behrle <mathiasb at m9s.biz>
+Build-Depends: debhelper (>= 9), python (>= 2.6.6-3~), python-setuptools
+Standards-Version: 3.9.4
+Homepage: http://www.tryton.org/
+Vcs-Browser: http://debian.tryton.org/gitweb/?p=packages/tryton-modules-stock-lot.git
+Vcs-Git: git://debian.tryton.org/packages/tryton-modules-stock-lot.git
+X-Python-Version: >= 2.6
+
+Package: tryton-modules-stock-lot
+Architecture: all
+Depends:
+ ${misc:Depends}, ${python:Depends}, tryton-server (>= 2.6),
+ tryton-modules-product (>= 2.6), tryton-modules-stock (>= 2.6),
+ python-pkg-resources
+Description: Tryton Application Platform (Stock Lot Module)
+ Tryton is a high-level general purpose application platform written in Python
+ and using PostgreSQL as database engine. It is the core base of a complete
+ business solution.
+ .
+ This package contains the module for lot management.
+ .
+  * A lot is by default just a number to tag moves of products.
+  * It is possible to define per product, if the lot is required (per type of
+  location).
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..900682e
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,28 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+
+Files: *
+Copyright: 2012 Cédric Krier
+           2012 B2CK SPRL
+License: GPL-3+
+
+Files: debian/*
+Copyright: 2009-2012 Daniel Baumann <daniel at debian.org>
+           2012-2013 Mathias Behrle <mathiasb at m9s.biz>
+License: GPL-3+
+
+License: GPL-3+
+ 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
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ .
+ The complete text of the GNU General Public License
+ can be found in /usr/share/common-licenses/GPL-3 file.
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..1ae0776
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,12 @@
+#!/usr/bin/make -f
+
+%:
+	dh ${@} --with python2
+
+override_dh_auto_clean:
+	dh_auto_clean
+
+	rm -rf *.egg-info
+
+override_dh_builddeb:
+	dh_builddeb -- -Zxz -z9
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/source/options b/debian/source/options
new file mode 100644
index 0000000..22a4de9
--- /dev/null
+++ b/debian/source/options
@@ -0,0 +1,2 @@
+compression = xz
+compression-level = 9
diff --git a/debian/tryton-modules-stock-lot.docs b/debian/tryton-modules-stock-lot.docs
new file mode 100644
index 0000000..172a1f8
--- /dev/null
+++ b/debian/tryton-modules-stock-lot.docs
@@ -0,0 +1 @@
+doc/index.rst
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..bc8a224
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,2 @@
+version=3
+http://downloads.tryton.org/current/ .*trytond_stock_lot-(\d.*)\.(?:tgz|tbz2|txz|tar\.(?:gz|bz2|xz))
-- 
tryton-modules-stock-lot



More information about the tryton-debian-vcs mailing list